Page MenuHomePhabricator

D9915.id23800.diff
No OneTemporary

D9915.id23800.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -8,7 +8,7 @@
'names' =>
array(
'core.pkg.css' => 'c2c68e64',
- 'core.pkg.js' => '2b9e8efd',
+ 'core.pkg.js' => '80884e9b',
'darkconsole.pkg.js' => 'df001cab',
'differential.pkg.css' => '4a93db37',
'differential.pkg.js' => '7528cfc9',
@@ -84,6 +84,7 @@
'rsrc/css/application/pholio/pholio-inline-comments.css' => '8e545e49',
'rsrc/css/application/pholio/pholio.css' => '47dffb9c',
'rsrc/css/application/phortune/phortune-credit-card-form.css' => 'b25b4beb',
+ 'rsrc/css/application/phortune/phortune.css' => '6383389f',
'rsrc/css/application/phrequent/phrequent.css' => 'ffc185ad',
'rsrc/css/application/phriction/phriction-document-css.css' => '7d7f0071',
'rsrc/css/application/policy/policy-edit.css' => '05cca26a',
@@ -216,7 +217,7 @@
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => '503e17fd',
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '8b3fd187',
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js' => '54f314a0',
- 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => '210aa43b',
+ 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => 'fcba4ecc',
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js' => '316b8fa1',
'rsrc/externals/raphael/g.raphael.js' => '40dde778',
'rsrc/externals/raphael/g.raphael.line.js' => '40da039e',
@@ -308,6 +309,9 @@
'rsrc/image/people/mckinley.png' => 'fb8f16ce',
'rsrc/image/people/taft.png' => 'd7bc402c',
'rsrc/image/people/washington.png' => '40dd301c',
+ 'rsrc/image/phortune/balanced.png' => 'c4069413',
+ 'rsrc/image/phortune/stripe.png' => 'f246dfad',
+ 'rsrc/image/phortune/test.png' => 'a13df550',
'rsrc/image/phrequent_active.png' => 'a466a8ed',
'rsrc/image/phrequent_inactive.png' => 'bfc15a69',
'rsrc/image/search-white.png' => '64cc0d45',
@@ -357,7 +361,7 @@
'rsrc/js/application/countdown/timer.js' => '361e3ed3',
'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e',
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '82439934',
- 'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '880fa5ac',
+ 'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375',
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63',
'rsrc/js/application/differential/ChangesetViewManager.js' => 'd2907473',
'rsrc/js/application/differential/DifferentialInlineCommentEditor.js' => 'f2441746',
@@ -564,7 +568,7 @@
'javelin-behavior-dark-console' => '357b6e9b',
'javelin-behavior-dashboard-async-panel' => '469c0d9e',
'javelin-behavior-dashboard-move-panels' => '82439934',
- 'javelin-behavior-dashboard-query-panel-select' => '880fa5ac',
+ 'javelin-behavior-dashboard-query-panel-select' => '453c5375',
'javelin-behavior-dashboard-tab-panel' => 'd4eecc63',
'javelin-behavior-device' => '03d6ed07',
'javelin-behavior-differential-add-reviewers-and-ccs' => 'e10f8e18',
@@ -683,7 +687,7 @@
'javelin-typeahead-normalizer' => 'aa93c7b0',
'javelin-typeahead-ondemand-source' => '8b3fd187',
'javelin-typeahead-preloaded-source' => '54f314a0',
- 'javelin-typeahead-source' => '210aa43b',
+ 'javelin-typeahead-source' => 'fcba4ecc',
'javelin-typeahead-static-source' => '316b8fa1',
'javelin-uri' => '6eff08aa',
'javelin-util' => 'a23de73d',
@@ -762,6 +766,7 @@
'pholio-inline-comments-css' => '8e545e49',
'phortune-credit-card-form' => '2290aeef',
'phortune-credit-card-form-css' => 'b25b4beb',
+ 'phortune-css' => '6383389f',
'phrequent-css' => 'ffc185ad',
'phriction-document-css' => '7d7f0071',
'phui-action-header-view-css' => '83e2cc86',
@@ -997,13 +1002,6 @@
0 => 'javelin-util',
1 => 'javelin-magical-init',
),
- '210aa43b' =>
- array(
- 0 => 'javelin-install',
- 1 => 'javelin-util',
- 2 => 'javelin-dom',
- 3 => 'javelin-typeahead-normalizer',
- ),
'2290aeef' =>
array(
0 => 'javelin-install',
@@ -1180,6 +1178,11 @@
1 => 'javelin-dom',
2 => 'phabricator-prefab',
),
+ '453c5375' =>
+ array(
+ 0 => 'javelin-behavior',
+ 1 => 'javelin-dom',
+ ),
'469c0d9e' =>
array(
0 => 'javelin-behavior',
@@ -1499,11 +1502,6 @@
array(
0 => 'javelin-install',
),
- '880fa5ac' =>
- array(
- 0 => 'javelin-behavior',
- 1 => 'javelin-dom',
- ),
'88236f00' =>
array(
0 => 'javelin-behavior',
@@ -2132,6 +2130,13 @@
2 => 'javelin-vector',
3 => 'javelin-magical-init',
),
+ 'fcba4ecc' =>
+ array(
+ 0 => 'javelin-install',
+ 1 => 'javelin-util',
+ 2 => 'javelin-dom',
+ 3 => 'javelin-typeahead-normalizer',
+ ),
42126667 =>
array(
0 => 'javelin-behavior',
diff --git a/src/applications/phortune/application/PhabricatorApplicationPhortune.php b/src/applications/phortune/application/PhabricatorApplicationPhortune.php
--- a/src/applications/phortune/application/PhabricatorApplicationPhortune.php
+++ b/src/applications/phortune/application/PhabricatorApplicationPhortune.php
@@ -41,9 +41,6 @@
'' => 'PhortuneAccountListController',
'edit/(?:(?P<id>\d+)/)?' => 'PhortuneAccountEditController',
),
- 'stripe/' => array(
- 'testpaymentform/' => 'PhortuneStripeTestPaymentFormController',
- ),
'product/' => array(
'' => 'PhortuneProductListController',
'view/(?P<id>\d+)/' => 'PhortuneProductViewController',
diff --git a/src/applications/phortune/controller/PhortuneAccountBuyController.php b/src/applications/phortune/controller/PhortuneAccountBuyController.php
--- a/src/applications/phortune/controller/PhortuneAccountBuyController.php
+++ b/src/applications/phortune/controller/PhortuneAccountBuyController.php
@@ -82,11 +82,17 @@
pht('Qty.'),
pht('Total'),
));
+ $table->setColumnClasses(
+ array(
+ 'wide',
+ 'right',
+ 'right',
+ 'right',
+ ));
- $panel = new AphrontPanelView();
- $panel->setNoBackground(true);
- $panel->appendChild($table);
-
+ $cart_box = id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Your Cart'))
+ ->appendChild($table);
$title = pht('Buy Stuff');
@@ -167,12 +173,19 @@
->setValue($one_time_options));
}
+ $payment_box = id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Choose Payment Method'))
+ ->appendChild($form)
+ ->appendChild($provider_form);
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $crumbs->addTextCrumb($title);
+
return $this->buildApplicationPage(
array(
- $panel,
- $form,
- phutil_tag('br', array()),
- $provider_form,
+ $crumbs,
+ $cart_box,
+ $payment_box,
),
array(
'title' => $title,
diff --git a/src/applications/phortune/controller/PhortuneAccountViewController.php b/src/applications/phortune/controller/PhortuneAccountViewController.php
--- a/src/applications/phortune/controller/PhortuneAccountViewController.php
+++ b/src/applications/phortune/controller/PhortuneAccountViewController.php
@@ -79,20 +79,16 @@
$request = $this->getRequest();
$user = $request->getUser();
- $header = id(new PHUIHeaderView())
- ->setHeader(pht('Payment Methods'));
-
$id = $account->getID();
- $add_uri = $this->getApplicationURI($id.'/paymentmethod/edit/');
- $actions = id(new PhabricatorActionListView())
- ->setUser($user)
- ->setObjectURI($request->getRequestURI())
- ->addAction(
- id(new PhabricatorActionView())
- ->setName(pht('Add Payment Method'))
- ->setIcon('fa-plus')
- ->setHref($add_uri));
+ $header = id(new PHUIHeaderView())
+ ->setHeader(pht('Payment Methods'))
+ ->addActionLink(
+ id(new PHUIButtonView())
+ ->setTag('a')
+ ->setHref($this->getApplicationURI($id.'/paymentmethod/edit/'))
+ ->setText(pht('Add Payment Method'))
+ ->setIcon(id(new PHUIIconView())->setIconFont('fa-plus')));
$list = id(new PHUIObjectItemListView())
->setUser($user)
@@ -129,11 +125,9 @@
$list->addItem($item);
}
- return array(
- $header,
- $actions,
- $list,
- );
+ return id(new PHUIObjectBoxView())
+ ->setHeader($header)
+ ->appendChild($list);
}
private function buildPurchaseHistorySection(PhortuneAccount $account) {
@@ -143,10 +137,8 @@
$header = id(new PHUIHeaderView())
->setHeader(pht('Purchase History'));
- return array(
- $header,
-
- );
+ return id(new PHUIObjectBoxView())
+ ->setHeader($header);
}
private function buildAccountHistorySection(PhortuneAccount $account) {
@@ -170,8 +162,11 @@
->setTransactions($xactions)
->setMarkupEngine($engine);
+ $box = id(new PHUIObjectBoxView())
+ ->setHeader($header);
+
return array(
- $header,
+ $box,
$xaction_view,
);
}
diff --git a/src/applications/phortune/controller/PhortunePaymentMethodEditController.php b/src/applications/phortune/controller/PhortunePaymentMethodEditController.php
--- a/src/applications/phortune/controller/PhortunePaymentMethodEditController.php
+++ b/src/applications/phortune/controller/PhortunePaymentMethodEditController.php
@@ -37,7 +37,20 @@
foreach ($providers as $provider) {
$choices[] = $this->renderSelectProvider($provider);
}
- return $this->buildResponse($choices, $account_uri);
+
+ $content = phutil_tag(
+ 'div',
+ array(
+ 'class' => 'phortune-payment-method-list',
+ ),
+ $choices);
+
+ return $this->newDialog()
+ ->setRenderDialogAsDiv(true)
+ ->setTitle(pht('Add Payment Method'))
+ ->appendParagraph(pht('Choose a payment method to add:'))
+ ->appendChild($content)
+ ->addCancelButton($account_uri);
}
$provider = $providers[$provider_key];
@@ -111,14 +124,21 @@
->setValue(pht('Add Payment Method'))
->addCancelButton($account_uri));
- if ($errors) {
- $errors = id(new AphrontErrorView())
- ->setErrors($errors);
- }
+ $box = id(new PHUIObjectBoxView())
+ ->setHeaderText($provider->getPaymentMethodDescription())
+ ->setForm($form);
+
+ $crumbs = $this->buildApplicationCrumbs();
+ $crumbs->addTextCrumb(pht('Add Payment Method'));
- return $this->buildResponse(
- array($errors, $form),
- $account_uri);
+ return $this->buildApplicationPage(
+ array(
+ $crumbs,
+ $box,
+ ),
+ array(
+ 'title' => $provider->getPaymentMethodDescription(),
+ ));
}
private function renderSelectProvider(
@@ -128,20 +148,21 @@
$user = $request->getUser();
$description = $provider->getPaymentMethodDescription();
- $icon = $provider->getPaymentMethodIcon();
+ $icon_uri = $provider->getPaymentMethodIcon();
$details = $provider->getPaymentMethodProviderDescription();
- $button = phutil_tag(
- 'button',
- array(
- 'class' => 'grey',
- ),
- array(
- $description,
- phutil_tag('br'),
- $icon,
- $details,
- ));
+ $this->requireResource('phortune-css');
+
+ $icon = id(new PHUIIconView())
+ ->setImage($icon_uri)
+ ->addClass('phortune-payment-icon');
+
+ $button = id(new PHUIButtonView())
+ ->setSize(PHUIButtonView::BIG)
+ ->setColor(PHUIButtonView::GREY)
+ ->setIcon($icon)
+ ->setText($description)
+ ->setSubtext($details);
$form = id(new AphrontFormView())
->setUser($user)
@@ -151,28 +172,6 @@
return $form;
}
- private function buildResponse($content, $account_uri) {
- $request = $this->getRequest();
-
- $title = pht('Add Payment Method');
- $header = id(new PHUIHeaderView())
- ->setHeader($title);
-
- $crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(pht('Account'), $account_uri);
- $crumbs->addTextCrumb(pht('Payment Methods'), $request->getRequestURI());
-
- return $this->buildApplicationPage(
- array(
- $crumbs,
- $header,
- $content,
- ),
- array(
- 'title' => $title,
- ));
- }
-
private function processClientErrors(
PhortunePaymentProvider $provider,
$client_errors_raw) {
diff --git a/src/applications/phortune/controller/PhortuneProductListController.php b/src/applications/phortune/controller/PhortuneProductListController.php
--- a/src/applications/phortune/controller/PhortuneProductListController.php
+++ b/src/applications/phortune/controller/PhortuneProductListController.php
@@ -24,9 +24,6 @@
->setHref($this->getApplicationURI('product/edit/'))
->setIcon('fa-plus-square'));
- $header = id(new PHUIHeaderView())
- ->setHeader(pht('Product List'));
-
$product_list = id(new PHUIObjectItemListView())
->setUser($user)
->setNoDataString(pht('No products.'));
@@ -51,7 +48,6 @@
return $this->buildApplicationPage(
array(
$crumbs,
- $header,
$product_list,
$pager,
),
diff --git a/webroot/rsrc/css/application/phortune/phortune.css b/webroot/rsrc/css/application/phortune/phortune.css
new file mode 100644
--- /dev/null
+++ b/webroot/rsrc/css/application/phortune/phortune.css
@@ -0,0 +1,17 @@
+/**
+ * @provides phortune-css
+ */
+
+.phortune-payment-icon {
+ width: 34px;
+ height: 34px;
+}
+
+.phortune-payment-method-list {
+ margin: 8px 24px 0;
+}
+
+.phortune-payment-method-list button {
+ margin: 4px 0;
+ width: 100%;
+}
diff --git a/webroot/rsrc/image/phortune/balanced.png b/webroot/rsrc/image/phortune/balanced.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef94cd3ca8fe2abacec5a0eff964b0fb9ca2c20a
GIT binary patch
literal 2765
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
literal 0
Hc$@<O00001
diff --git a/webroot/rsrc/image/phortune/paypal.png b/webroot/rsrc/image/phortune/paypal.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef94cd3ca8fe2abacec5a0eff964b0fb9ca2c20a
GIT binary patch
literal 2765
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
literal 0
Hc$@<O00001
diff --git a/webroot/rsrc/image/phortune/stripe.png b/webroot/rsrc/image/phortune/stripe.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef94cd3ca8fe2abacec5a0eff964b0fb9ca2c20a
GIT binary patch
literal 2765
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
literal 0
Hc$@<O00001
diff --git a/webroot/rsrc/image/phortune/test.png b/webroot/rsrc/image/phortune/test.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef94cd3ca8fe2abacec5a0eff964b0fb9ca2c20a
GIT binary patch
literal 2765
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
literal 0
Hc$@<O00001
diff --git a/webroot/rsrc/image/phortune/wepay.png b/webroot/rsrc/image/phortune/wepay.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef94cd3ca8fe2abacec5a0eff964b0fb9ca2c20a
GIT binary patch
literal 2765
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
literal 0
Hc$@<O00001

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 23, 3:51 PM (1 w, 14 h ago)
Storage Engine
amazon-s3
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
phabricator/secure/n2/ic/mr3xxew7tvb5ya6g
Default Alt Text
D9915.id23800.diff (31 KB)

Event Timeline