Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13187211
D20697.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
30 KB
Referenced Files
None
Subscribers
None
D20697.diff
View Options
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
@@ -5221,25 +5221,28 @@
'PhortuneAccount' => 'applications/phortune/storage/PhortuneAccount.php',
'PhortuneAccountAddManagerController' => 'applications/phortune/controller/account/PhortuneAccountAddManagerController.php',
'PhortuneAccountBillingAddressTransaction' => 'applications/phortune/xaction/PhortuneAccountBillingAddressTransaction.php',
- 'PhortuneAccountBillingController' => 'applications/phortune/controller/account/PhortuneAccountBillingController.php',
'PhortuneAccountBillingNameTransaction' => 'applications/phortune/xaction/PhortuneAccountBillingNameTransaction.php',
'PhortuneAccountChargeListController' => 'applications/phortune/controller/account/PhortuneAccountChargeListController.php',
+ 'PhortuneAccountChargesController' => 'applications/phortune/controller/account/PhortuneAccountChargesController.php',
'PhortuneAccountController' => 'applications/phortune/controller/account/PhortuneAccountController.php',
+ 'PhortuneAccountDetailsController' => 'applications/phortune/controller/account/PhortuneAccountDetailsController.php',
'PhortuneAccountEditController' => 'applications/phortune/controller/account/PhortuneAccountEditController.php',
'PhortuneAccountEditEngine' => 'applications/phortune/editor/PhortuneAccountEditEngine.php',
'PhortuneAccountEditor' => 'applications/phortune/editor/PhortuneAccountEditor.php',
'PhortuneAccountHasMemberEdgeType' => 'applications/phortune/edge/PhortuneAccountHasMemberEdgeType.php',
'PhortuneAccountListController' => 'applications/phortune/controller/account/PhortuneAccountListController.php',
- 'PhortuneAccountManagerController' => 'applications/phortune/controller/account/PhortuneAccountManagerController.php',
+ 'PhortuneAccountManagersController' => 'applications/phortune/controller/account/PhortuneAccountManagersController.php',
'PhortuneAccountNameTransaction' => 'applications/phortune/xaction/PhortuneAccountNameTransaction.php',
+ 'PhortuneAccountOrdersController' => 'applications/phortune/controller/account/PhortuneAccountOrdersController.php',
+ 'PhortuneAccountOverviewController' => 'applications/phortune/controller/account/PhortuneAccountOverviewController.php',
'PhortuneAccountPHIDType' => 'applications/phortune/phid/PhortuneAccountPHIDType.php',
+ 'PhortuneAccountPaymentMethodsController' => 'applications/phortune/controller/account/PhortuneAccountPaymentMethodsController.php',
'PhortuneAccountProfileController' => 'applications/phortune/controller/account/PhortuneAccountProfileController.php',
'PhortuneAccountQuery' => 'applications/phortune/query/PhortuneAccountQuery.php',
'PhortuneAccountSubscriptionController' => 'applications/phortune/controller/account/PhortuneAccountSubscriptionController.php',
'PhortuneAccountTransaction' => 'applications/phortune/storage/PhortuneAccountTransaction.php',
'PhortuneAccountTransactionQuery' => 'applications/phortune/query/PhortuneAccountTransactionQuery.php',
'PhortuneAccountTransactionType' => 'applications/phortune/xaction/PhortuneAccountTransactionType.php',
- 'PhortuneAccountViewController' => 'applications/phortune/controller/account/PhortuneAccountViewController.php',
'PhortuneAdHocCart' => 'applications/phortune/cart/PhortuneAdHocCart.php',
'PhortuneAdHocProduct' => 'applications/phortune/product/PhortuneAdHocProduct.php',
'PhortuneAddPaymentMethodAction' => 'applications/phortune/action/PhortuneAddPaymentMethodAction.php',
@@ -11753,25 +11756,28 @@
),
'PhortuneAccountAddManagerController' => 'PhortuneController',
'PhortuneAccountBillingAddressTransaction' => 'PhortuneAccountTransactionType',
- 'PhortuneAccountBillingController' => 'PhortuneAccountProfileController',
'PhortuneAccountBillingNameTransaction' => 'PhortuneAccountTransactionType',
'PhortuneAccountChargeListController' => 'PhortuneController',
+ 'PhortuneAccountChargesController' => 'PhortuneAccountProfileController',
'PhortuneAccountController' => 'PhortuneController',
+ 'PhortuneAccountDetailsController' => 'PhortuneAccountProfileController',
'PhortuneAccountEditController' => 'PhortuneController',
'PhortuneAccountEditEngine' => 'PhabricatorEditEngine',
'PhortuneAccountEditor' => 'PhabricatorApplicationTransactionEditor',
'PhortuneAccountHasMemberEdgeType' => 'PhabricatorEdgeType',
'PhortuneAccountListController' => 'PhortuneController',
- 'PhortuneAccountManagerController' => 'PhortuneAccountProfileController',
+ 'PhortuneAccountManagersController' => 'PhortuneAccountProfileController',
'PhortuneAccountNameTransaction' => 'PhortuneAccountTransactionType',
+ 'PhortuneAccountOrdersController' => 'PhortuneAccountProfileController',
+ 'PhortuneAccountOverviewController' => 'PhortuneAccountProfileController',
'PhortuneAccountPHIDType' => 'PhabricatorPHIDType',
+ 'PhortuneAccountPaymentMethodsController' => 'PhortuneAccountProfileController',
'PhortuneAccountProfileController' => 'PhortuneAccountController',
'PhortuneAccountQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'PhortuneAccountSubscriptionController' => 'PhortuneAccountProfileController',
'PhortuneAccountTransaction' => 'PhabricatorModularTransaction',
'PhortuneAccountTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
'PhortuneAccountTransactionType' => 'PhabricatorModularTransactionType',
- 'PhortuneAccountViewController' => 'PhortuneAccountProfileController',
'PhortuneAdHocCart' => 'PhortuneCartImplementation',
'PhortuneAdHocProduct' => 'PhortuneProductImplementation',
'PhortuneAddPaymentMethodAction' => 'PhabricatorSystemAction',
diff --git a/src/applications/phortune/application/PhabricatorPhortuneApplication.php b/src/applications/phortune/application/PhabricatorPhortuneApplication.php
--- a/src/applications/phortune/application/PhabricatorPhortuneApplication.php
+++ b/src/applications/phortune/application/PhabricatorPhortuneApplication.php
@@ -35,7 +35,7 @@
'/phortune/' => array(
'' => 'PhortuneLandingController',
'(?P<accountID>\d+)/' => array(
- '' => 'PhortuneAccountViewController',
+ '' => 'PhortuneAccountOverviewController',
'card/' => array(
'new/' => 'PhortunePaymentMethodCreateController',
),
@@ -69,15 +69,17 @@
'' => 'PhortuneAccountListController',
$this->getEditRoutePattern('edit/')
=> 'PhortuneAccountEditController',
- 'edit/(?:(?P<id>\d+)/)?' => 'PhortuneAccountEditController',
- 'add/manager/(?:(?P<id>\d+)/)?'
- => 'PhortuneAccountAddManagerController',
- 'billing/(?:(?P<id>\d+)/)?' => 'PhortuneAccountBillingController',
- 'subscription/(?:(?P<id>\d+)/)?'
- => 'PhortuneAccountSubscriptionController',
- 'manager/' => array(
- '(?:(?P<id>\d+)/)?' => 'PhortuneAccountManagerController',
- 'add/(?:(?P<id>\d+)/)?' => 'PhortuneAccountAddManagerController',
+
+ '(?P<accountID>\d+)/' => array(
+ 'details/' => 'PhortuneAccountDetailsController',
+ 'methods/' => 'PhortuneAccountPaymentMethodsController',
+ 'orders/' => 'PhortuneAccountOrdersController',
+ 'charges/' => 'PhortuneAccountChargesController',
+ 'subscriptions/' => 'PhortuneAccountSubscriptionController',
+ 'managers/' => array(
+ '' => 'PhortuneAccountManagersController',
+ 'add/' => 'PhortuneAccountAddManagerController',
+ ),
),
),
'product/' => array(
diff --git a/src/applications/phortune/controller/account/PhortuneAccountAddManagerController.php b/src/applications/phortune/controller/account/PhortuneAccountAddManagerController.php
--- a/src/applications/phortune/controller/account/PhortuneAccountAddManagerController.php
+++ b/src/applications/phortune/controller/account/PhortuneAccountAddManagerController.php
@@ -4,7 +4,7 @@
public function handleRequest(AphrontRequest $request) {
$viewer = $request->getViewer();
- $id = $request->getURIData('id');
+ $id = $request->getURIData('accountID');
$account = id(new PhortuneAccountQuery())
->setViewer($viewer)
@@ -21,7 +21,7 @@
$v_managers = array();
$e_managers = null;
- $account_uri = $this->getApplicationURI("/account/manager/{$id}/");
+ $account_uri = $this->getApplicationURI("/account/{$id}/managers/");
if ($request->isFormPost()) {
$xactions = array();
@@ -64,11 +64,11 @@
->setError($e_managers));
return $this->newDialog()
- ->setTitle(pht('Add New Manager'))
+ ->setTitle(pht('Add New Managers'))
->appendForm($form)
->setWidth(AphrontDialogView::WIDTH_FORM)
->addCancelButton($account_uri)
- ->addSubmitButton(pht('Add Manager'));
+ ->addSubmitButton(pht('Add Managers'));
}
diff --git a/src/applications/phortune/controller/account/PhortuneAccountChargesController.php b/src/applications/phortune/controller/account/PhortuneAccountChargesController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/phortune/controller/account/PhortuneAccountChargesController.php
@@ -0,0 +1,79 @@
+<?php
+
+final class PhortuneAccountChargesController
+ extends PhortuneAccountProfileController {
+
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadAccount();
+ if ($response) {
+ return $response;
+ }
+
+ $account = $this->getAccount();
+ $title = $account->getName();
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $crumbs->addTextCrumb(pht('Order History'));
+
+ $header = $this->buildHeaderView();
+ $charge_history = $this->buildChargeHistorySection($account);
+
+ $view = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setFooter(
+ array(
+ $charge_history,
+ ));
+
+ $navigation = $this->buildSideNavView('charges');
+
+ return $this->newPage()
+ ->setTitle($title)
+ ->setCrumbs($crumbs)
+ ->setNavigation($navigation)
+ ->appendChild($view);
+ }
+
+ private function buildChargeHistorySection(PhortuneAccount $account) {
+ $viewer = $this->getViewer();
+
+ $charges = id(new PhortuneChargeQuery())
+ ->setViewer($viewer)
+ ->withAccountPHIDs(array($account->getPHID()))
+ ->needCarts(true)
+ ->setLimit(100)
+ ->execute();
+
+ $phids = array();
+ foreach ($charges as $charge) {
+ $phids[] = $charge->getProviderPHID();
+ $phids[] = $charge->getCartPHID();
+ $phids[] = $charge->getMerchantPHID();
+ $phids[] = $charge->getPaymentMethodPHID();
+ }
+
+ $handles = $this->loadViewerHandles($phids);
+
+ $charges_uri = $this->getApplicationURI($account->getID().'/charge/');
+
+ $table = id(new PhortuneChargeTableView())
+ ->setUser($viewer)
+ ->setCharges($charges)
+ ->setHandles($handles);
+
+ $header = id(new PHUIHeaderView())
+ ->setHeader(pht('Recent Charges'))
+ ->addActionLink(
+ id(new PHUIButtonView())
+ ->setTag('a')
+ ->setIcon('fa-list')
+ ->setHref($charges_uri)
+ ->setText(pht('View All Charges')));
+
+ return id(new PHUIObjectBoxView())
+ ->setHeader($header)
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
+ ->setTable($table);
+ }
+
+}
diff --git a/src/applications/phortune/controller/account/PhortuneAccountDetailsController.php b/src/applications/phortune/controller/account/PhortuneAccountDetailsController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/phortune/controller/account/PhortuneAccountDetailsController.php
@@ -0,0 +1,132 @@
+<?php
+
+final class PhortuneAccountDetailsController
+ extends PhortuneAccountProfileController {
+
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadAccount();
+ if ($response) {
+ return $response;
+ }
+
+ $account = $this->getAccount();
+ $title = $account->getName();
+
+ $viewer = $this->getViewer();
+
+ $invoices = id(new PhortuneCartQuery())
+ ->setViewer($viewer)
+ ->withAccountPHIDs(array($account->getPHID()))
+ ->needPurchases(true)
+ ->withInvoices(true)
+ ->execute();
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $crumbs->setBorder(true);
+
+ $header = $this->buildHeaderView();
+
+ $details = $this->newDetailsView($account);
+
+ $curtain = $this->buildCurtainView($account);
+
+ $timeline = $this->buildTransactionTimeline(
+ $account,
+ new PhortuneAccountTransactionQuery());
+ $timeline->setShouldTerminate(true);
+
+
+ $view = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setCurtain($curtain)
+ ->setMainColumn(
+ array(
+ $details,
+ $timeline,
+ ));
+
+ $navigation = $this->buildSideNavView('details');
+
+ return $this->newPage()
+ ->setTitle($title)
+ ->setCrumbs($crumbs)
+ ->setNavigation($navigation)
+ ->appendChild($view);
+
+ }
+
+ private function buildCurtainView(PhortuneAccount $account) {
+ $viewer = $this->getViewer();
+
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $account,
+ PhabricatorPolicyCapability::CAN_EDIT);
+
+ $edit_uri = $this->getApplicationURI('account/edit/'.$account->getID().'/');
+
+ $curtain = $this->newCurtainView($account);
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setName(pht('Edit Account'))
+ ->setIcon('fa-pencil')
+ ->setHref($edit_uri)
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit));
+
+ $member_phids = $account->getMemberPHIDs();
+ $handles = $viewer->loadHandles($member_phids);
+
+ $member_list = id(new PHUIObjectItemListView())
+ ->setSimple(true);
+
+ foreach ($member_phids as $member_phid) {
+ $image_uri = $handles[$member_phid]->getImageURI();
+ $image_href = $handles[$member_phid]->getURI();
+ $person = $handles[$member_phid];
+
+ $member = id(new PHUIObjectItemView())
+ ->setImageURI($image_uri)
+ ->setHref($image_href)
+ ->setHeader($person->getFullName());
+
+ $member_list->addItem($member);
+ }
+
+ $curtain->newPanel()
+ ->setHeaderText(pht('Managers'))
+ ->appendChild($member_list);
+
+ return $curtain;
+ }
+
+ private function newDetailsView(PhortuneAccount $account) {
+ $viewer = $this->getViewer();
+
+ $view = id(new PHUIPropertyListView())
+ ->setUser($viewer);
+
+ $view->addProperty(pht('Account Name'), $account->getName());
+
+ $display_name = $account->getBillingName();
+ if (!strlen($display_name)) {
+ $display_name = phutil_tag('em', array(), pht('None'));
+ }
+
+ $display_address = $account->getBillingAddress();
+ if (!strlen($display_address)) {
+ $display_address = phutil_tag('em', array(), pht('None'));
+ } else {
+ $display_address = phutil_escape_html_newlines($display_address);
+ }
+
+ $view->addProperty(pht('Billing Name'), $display_name);
+ $view->addProperty(pht('Billing Address'), $display_address);
+
+ return id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Account Details'))
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
+ ->addPropertyList($view);
+ }
+
+}
diff --git a/src/applications/phortune/controller/account/PhortuneAccountManagerController.php b/src/applications/phortune/controller/account/PhortuneAccountManagersController.php
rename from src/applications/phortune/controller/account/PhortuneAccountManagerController.php
rename to src/applications/phortune/controller/account/PhortuneAccountManagersController.php
--- a/src/applications/phortune/controller/account/PhortuneAccountManagerController.php
+++ b/src/applications/phortune/controller/account/PhortuneAccountManagersController.php
@@ -1,6 +1,6 @@
<?php
-final class PhortuneAccountManagerController
+final class PhortuneAccountManagersController
extends PhortuneAccountProfileController {
public function handleRequest(AphrontRequest $request) {
@@ -46,11 +46,11 @@
$add = id(new PHUIButtonView())
->setTag('a')
- ->setText(pht('New Manager'))
+ ->setText(pht('Add Managers'))
->setIcon('fa-plus')
->setWorkflow(true)
->setDisabled(!$can_edit)
- ->setHref("/phortune/account/manager/add/{$id}/");
+ ->setHref("/phortune/account/{$id}/managers/add/");
$header = id(new PHUIHeaderView())
->setHeader(pht('Account Managers'))
diff --git a/src/applications/phortune/controller/account/PhortuneAccountOrdersController.php b/src/applications/phortune/controller/account/PhortuneAccountOrdersController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/phortune/controller/account/PhortuneAccountOrdersController.php
@@ -0,0 +1,37 @@
+<?php
+
+final class PhortuneAccountOrdersController
+ extends PhortuneAccountProfileController {
+
+ public function handleRequest(AphrontRequest $request) {
+ $response = $this->loadAccount();
+ if ($response) {
+ return $response;
+ }
+
+ $account = $this->getAccount();
+ $title = $account->getName();
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $crumbs->addTextCrumb(pht('Order History'));
+
+ $header = $this->buildHeaderView();
+ $order_history = $this->newRecentOrdersView($account, 100);
+
+ $view = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setFooter(
+ array(
+ $order_history,
+ ));
+
+ $navigation = $this->buildSideNavView('orders');
+
+ return $this->newPage()
+ ->setTitle($title)
+ ->setCrumbs($crumbs)
+ ->setNavigation($navigation)
+ ->appendChild($view);
+ }
+
+}
diff --git a/src/applications/phortune/controller/account/PhortuneAccountViewController.php b/src/applications/phortune/controller/account/PhortuneAccountOverviewController.php
rename from src/applications/phortune/controller/account/PhortuneAccountViewController.php
rename to src/applications/phortune/controller/account/PhortuneAccountOverviewController.php
--- a/src/applications/phortune/controller/account/PhortuneAccountViewController.php
+++ b/src/applications/phortune/controller/account/PhortuneAccountOverviewController.php
@@ -1,6 +1,6 @@
<?php
-final class PhortuneAccountViewController
+final class PhortuneAccountOverviewController
extends PhortuneAccountProfileController {
public function handleRequest(AphrontRequest $request) {
@@ -26,25 +26,18 @@
$header = $this->buildHeaderView();
- $curtain = $this->buildCurtainView($account);
$status = $this->buildStatusView($account, $invoices);
$invoices = $this->buildInvoicesSection($account, $invoices);
- $purchase_history = $this->buildPurchaseHistorySection($account);
-
- $timeline = $this->buildTransactionTimeline(
- $account,
- new PhortuneAccountTransactionQuery());
- $timeline->setShouldTerminate(true);
+ $purchase_history = $this->newRecentOrdersView($account, 10);
$view = id(new PHUITwoColumnView())
->setHeader($header)
- ->setCurtain($curtain)
- ->setMainColumn(array(
- $status,
- $invoices,
- $purchase_history,
- $timeline,
- ));
+ ->setFooter(
+ array(
+ $status,
+ $invoices,
+ $purchase_history,
+ ));
$navigation = $this->buildSideNavView('overview');
@@ -53,7 +46,6 @@
->setCrumbs($crumbs)
->setNavigation($navigation)
->appendChild($view);
-
}
private function buildStatusView(PhortuneAccount $account, $invoices) {
@@ -67,51 +59,6 @@
return $view;
}
- private function buildCurtainView(PhortuneAccount $account) {
- $viewer = $this->getViewer();
-
- $can_edit = PhabricatorPolicyFilter::hasCapability(
- $viewer,
- $account,
- PhabricatorPolicyCapability::CAN_EDIT);
-
- $edit_uri = $this->getApplicationURI('account/edit/'.$account->getID().'/');
-
- $curtain = $this->newCurtainView($account);
- $curtain->addAction(
- id(new PhabricatorActionView())
- ->setName(pht('Edit Account'))
- ->setIcon('fa-pencil')
- ->setHref($edit_uri)
- ->setDisabled(!$can_edit)
- ->setWorkflow(!$can_edit));
-
- $member_phids = $account->getMemberPHIDs();
- $handles = $viewer->loadHandles($member_phids);
-
- $member_list = id(new PHUIObjectItemListView())
- ->setSimple(true);
-
- foreach ($member_phids as $member_phid) {
- $image_uri = $handles[$member_phid]->getImageURI();
- $image_href = $handles[$member_phid]->getURI();
- $person = $handles[$member_phid];
-
- $member = id(new PHUIObjectItemView())
- ->setImageURI($image_uri)
- ->setHref($image_href)
- ->setHeader($person->getFullName());
-
- $member_list->addItem($member);
- }
-
- $curtain->newPanel()
- ->setHeaderText(pht('Managers'))
- ->appendChild($member_list);
-
- return $curtain;
- }
-
private function buildInvoicesSection(
PhortuneAccount $account,
array $carts) {
@@ -144,55 +91,6 @@
->setTable($table);
}
- private function buildPurchaseHistorySection(PhortuneAccount $account) {
- $viewer = $this->getViewer();
-
- $carts = id(new PhortuneCartQuery())
- ->setViewer($viewer)
- ->withAccountPHIDs(array($account->getPHID()))
- ->needPurchases(true)
- ->withStatuses(
- array(
- PhortuneCart::STATUS_PURCHASING,
- PhortuneCart::STATUS_CHARGED,
- PhortuneCart::STATUS_HOLD,
- PhortuneCart::STATUS_REVIEW,
- PhortuneCart::STATUS_PURCHASED,
- ))
- ->setLimit(10)
- ->execute();
-
- $phids = array();
- foreach ($carts as $cart) {
- $phids[] = $cart->getPHID();
- foreach ($cart->getPurchases() as $purchase) {
- $phids[] = $purchase->getPHID();
- }
- }
- $handles = $this->loadViewerHandles($phids);
-
- $orders_uri = $this->getApplicationURI($account->getID().'/order/');
-
- $table = id(new PhortuneOrderTableView())
- ->setUser($viewer)
- ->setCarts($carts)
- ->setHandles($handles);
-
- $header = id(new PHUIHeaderView())
- ->setHeader(pht('Recent Orders'))
- ->addActionLink(
- id(new PHUIButtonView())
- ->setTag('a')
- ->setIcon('fa-list')
- ->setHref($orders_uri)
- ->setText(pht('View All Orders')));
-
- return id(new PHUIObjectBoxView())
- ->setHeader($header)
- ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
- ->setTable($table);
- }
-
protected function buildApplicationCrumbs() {
$crumbs = parent::buildApplicationCrumbs();
diff --git a/src/applications/phortune/controller/account/PhortuneAccountBillingController.php b/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodsController.php
rename from src/applications/phortune/controller/account/PhortuneAccountBillingController.php
rename to src/applications/phortune/controller/account/PhortuneAccountPaymentMethodsController.php
--- a/src/applications/phortune/controller/account/PhortuneAccountBillingController.php
+++ b/src/applications/phortune/controller/account/PhortuneAccountPaymentMethodsController.php
@@ -1,6 +1,6 @@
<?php
-final class PhortuneAccountBillingController
+final class PhortuneAccountPaymentMethodsController
extends PhortuneAccountProfileController {
public function handleRequest(AphrontRequest $request) {
@@ -13,20 +13,19 @@
$title = $account->getName();
$crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(pht('Billing'));
+ $crumbs->addTextCrumb(pht('Payment Methods'));
$header = $this->buildHeaderView();
$methods = $this->buildPaymentMethodsSection($account);
- $charge_history = $this->buildChargeHistorySection($account);
$view = id(new PHUITwoColumnView())
->setHeader($header)
- ->setFooter(array(
- $methods,
- $charge_history,
- ));
+ ->setFooter(
+ array(
+ $methods,
+ ));
- $navigation = $this->buildSideNavView('billing');
+ $navigation = $this->buildSideNavView('methods');
return $this->newPage()
->setTitle($title)
@@ -60,7 +59,7 @@
->setUser($viewer)
->setFlush(true)
->setNoDataString(
- pht('No payment methods associated with this account.'));
+ pht('There are no payment methods associated with this account.'));
$methods = id(new PhortunePaymentMethodQuery())
->setViewer($viewer)
@@ -116,46 +115,4 @@
->setObjectList($list);
}
- private function buildChargeHistorySection(PhortuneAccount $account) {
- $viewer = $this->getViewer();
-
- $charges = id(new PhortuneChargeQuery())
- ->setViewer($viewer)
- ->withAccountPHIDs(array($account->getPHID()))
- ->needCarts(true)
- ->setLimit(10)
- ->execute();
-
- $phids = array();
- foreach ($charges as $charge) {
- $phids[] = $charge->getProviderPHID();
- $phids[] = $charge->getCartPHID();
- $phids[] = $charge->getMerchantPHID();
- $phids[] = $charge->getPaymentMethodPHID();
- }
-
- $handles = $this->loadViewerHandles($phids);
-
- $charges_uri = $this->getApplicationURI($account->getID().'/charge/');
-
- $table = id(new PhortuneChargeTableView())
- ->setUser($viewer)
- ->setCharges($charges)
- ->setHandles($handles);
-
- $header = id(new PHUIHeaderView())
- ->setHeader(pht('Charge History'))
- ->addActionLink(
- id(new PHUIButtonView())
- ->setTag('a')
- ->setIcon('fa-list')
- ->setHref($charges_uri)
- ->setText(pht('View All Charges')));
-
- return id(new PHUIObjectBoxView())
- ->setHeader($header)
- ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
- ->setTable($table);
- }
-
}
diff --git a/src/applications/phortune/controller/account/PhortuneAccountProfileController.php b/src/applications/phortune/controller/account/PhortuneAccountProfileController.php
--- a/src/applications/phortune/controller/account/PhortuneAccountProfileController.php
+++ b/src/applications/phortune/controller/account/PhortuneAccountProfileController.php
@@ -42,22 +42,44 @@
$this->getApplicationURI("/{$id}/"),
'fa-user-circle');
+ $nav->addFilter(
+ 'details',
+ pht('Account Details'),
+ $this->getApplicationURI("/account/{$id}/details/"),
+ 'fa-address-card-o');
+
+ $nav->addLabel(pht('Payments'));
+
+ $nav->addFilter(
+ 'methods',
+ pht('Payment Methods'),
+ $this->getApplicationURI("/account/{$id}/methods/"),
+ 'fa-credit-card');
+
$nav->addFilter(
'subscriptions',
pht('Subscriptions'),
- $this->getApplicationURI("/account/subscription/{$id}/"),
+ $this->getApplicationURI("/account/{$id}/subscriptions/"),
'fa-retweet');
$nav->addFilter(
- 'billing',
- pht('Billing / History'),
- $this->getApplicationURI("/account/billing/{$id}/"),
- 'fa-credit-card');
+ 'orders',
+ pht('Order History'),
+ $this->getApplicationURI("/account/{$id}/orders/"),
+ 'fa-shopping-bag');
+
+ $nav->addFilter(
+ 'charges',
+ pht('Charge History'),
+ $this->getApplicationURI("/account/{$id}/charges/"),
+ 'fa-calculator');
+
+ $nav->addLabel(pht('Personnel'));
$nav->addFilter(
'managers',
- pht('Managers'),
- $this->getApplicationURI("/account/manager/{$id}/"),
+ pht('Account Managers'),
+ $this->getApplicationURI("/account/{$id}/managers/"),
'fa-group');
$nav->selectFilter($filter);
@@ -65,4 +87,57 @@
return $nav;
}
+ final protected function newRecentOrdersView(
+ PhortuneAccount $account,
+ $limit) {
+
+ $viewer = $this->getViewer();
+
+ $carts = id(new PhortuneCartQuery())
+ ->setViewer($viewer)
+ ->withAccountPHIDs(array($account->getPHID()))
+ ->needPurchases(true)
+ ->withStatuses(
+ array(
+ PhortuneCart::STATUS_PURCHASING,
+ PhortuneCart::STATUS_CHARGED,
+ PhortuneCart::STATUS_HOLD,
+ PhortuneCart::STATUS_REVIEW,
+ PhortuneCart::STATUS_PURCHASED,
+ ))
+ ->setLimit($limit)
+ ->execute();
+
+ $phids = array();
+ foreach ($carts as $cart) {
+ $phids[] = $cart->getPHID();
+ foreach ($cart->getPurchases() as $purchase) {
+ $phids[] = $purchase->getPHID();
+ }
+ }
+ $handles = $this->loadViewerHandles($phids);
+
+ $orders_uri = $this->getApplicationURI($account->getID().'/order/');
+
+ $table = id(new PhortuneOrderTableView())
+ ->setUser($viewer)
+ ->setCarts($carts)
+ ->setHandles($handles);
+
+ $header = id(new PHUIHeaderView())
+ ->setHeader(pht('Recent Orders'))
+ ->addActionLink(
+ id(new PHUIButtonView())
+ ->setTag('a')
+ ->setIcon('fa-list')
+ ->setHref($orders_uri)
+ ->setText(pht('View All Orders')));
+
+ return id(new PHUIObjectBoxView())
+ ->setHeader($header)
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
+ ->setTable($table);
+ }
+
+
}
diff --git a/src/applications/phortune/editor/PhortuneAccountEditEngine.php b/src/applications/phortune/editor/PhortuneAccountEditEngine.php
--- a/src/applications/phortune/editor/PhortuneAccountEditEngine.php
+++ b/src/applications/phortune/editor/PhortuneAccountEditEngine.php
@@ -62,7 +62,11 @@
}
protected function getObjectViewURI($object) {
- return $object->getURI();
+ if ($this->getIsCreate()) {
+ return $object->getURI();
+ } else {
+ return $object->getDetailsURI();
+ }
}
protected function buildCustomEditFields($object) {
diff --git a/src/applications/phortune/storage/PhortuneAccount.php b/src/applications/phortune/storage/PhortuneAccount.php
--- a/src/applications/phortune/storage/PhortuneAccount.php
+++ b/src/applications/phortune/storage/PhortuneAccount.php
@@ -103,6 +103,12 @@
return '/phortune/'.$this->getID().'/';
}
+ public function getDetailsURI() {
+ return urisprintf(
+ '/phortune/account/%d/details/',
+ $this->getID());
+ }
+
/* -( PhabricatorApplicationTransactionInterface )------------------------- */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
May 12 2024, 4:24 AM (5 w, 1 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6287417
Default Alt Text
D20697.diff (30 KB)
Attached To
Mode
D20697: Refactor the Phortune account detail page into a series of smaller, more focused sections
Attached
Detach File
Event Timeline
Log In to Comment