protected function addMerchantCrumb($crumbs, PhortuneMerchant $merchant, $link = true) { $name = $merchant->getName(); $href = null; $crumbs->addTextCrumb(pht('Merchants'), $this->getApplicationURI('merchant/')); if ($link) { $href = $this->getApplicationURI('merchant/' . $merchant->getID() . '/'); $crumbs->addTextCrumb($name, $href); } else { $crumbs->addTextCrumb($name); } }
private function buildProviderList(PhortuneMerchant $merchant, array $providers) { $viewer = $this->getRequest()->getUser(); $id = $merchant->getID(); $can_edit = PhabricatorPolicyFilter::hasCapability($viewer, $merchant, PhabricatorPolicyCapability::CAN_EDIT); $provider_list = id(new PHUIObjectItemListView())->setFlush(true)->setNoDataString(pht('This merchant has no payment providers.')); foreach ($providers as $provider_config) { $provider = $provider_config->buildProvider(); $provider_id = $provider_config->getID(); $item = id(new PHUIObjectItemView())->setHeader($provider->getName()); if ($provider->isEnabled()) { if ($provider->isAcceptingLivePayments()) { $item->setStatusIcon('fa-check green'); } else { $item->setStatusIcon('fa-warning yellow'); $item->addIcon('fa-exclamation-triangle', pht('Test Mode')); } $item->addAttribute($provider->getConfigureProvidesDescription()); } else { // Don't show disabled providers to users who can't manage the merchant // account. if (!$can_edit) { continue; } $item->setDisabled(true); $item->addAttribute(phutil_tag('em', array(), pht('This payment provider is disabled.'))); } if ($can_edit) { $edit_uri = $this->getApplicationURI("/provider/edit/{$provider_id}/"); $disable_uri = $this->getApplicationURI("/provider/disable/{$provider_id}/"); if ($provider->isEnabled()) { $disable_icon = 'fa-times'; $disable_name = pht('Disable'); } else { $disable_icon = 'fa-check'; $disable_name = pht('Enable'); } $item->addAction(id(new PHUIListItemView())->setIcon($disable_icon)->setHref($disable_uri)->setName($disable_name)->setWorkflow(true)); $item->addAction(id(new PHUIListItemView())->setIcon('fa-pencil')->setHref($edit_uri)->setName(pht('Edit'))); } $provider_list->addItem($item); } $add_action = id(new PHUIButtonView())->setTag('a')->setHref($this->getApplicationURI('provider/edit/?merchantID=' . $id))->setText(pht('Add Payment Provider'))->setDisabled(!$can_edit)->setWorkflow(!$can_edit)->setIcon('fa-plus'); $header = id(new PHUIHeaderView())->setHeader(pht('Payment Providers'))->addActionLink($add_action); return id(new PHUIObjectBoxView())->setHeader($header)->setObjectList($provider_list); }
public function getDetailURI(PhortuneMerchant $authority = null) { if ($authority) { $prefix = 'merchant/' . $authority->getID() . '/'; } else { $prefix = ''; } return '/phortune/' . $prefix . 'cart/' . $this->getID() . '/'; }
private function processChooseClassRequest(AphrontRequest $request, PhortuneMerchant $merchant, array $current_map) { $viewer = $request->getUser(); $providers = PhortunePaymentProvider::getAllProviders(); $v_class = null; $errors = array(); if ($request->isFormPost()) { $v_class = $request->getStr('class'); if (!isset($providers[$v_class])) { $errors[] = pht('You must select a valid provider type.'); } } $merchant_id = $merchant->getID(); $cancel_uri = $this->getApplicationURI("merchant/{$merchant_id}/"); if (!$v_class) { $v_class = key($providers); } $panel_classes = id(new AphrontFormRadioButtonControl())->setName('class')->setValue($v_class); $providers = msort($providers, 'getConfigureName'); foreach ($providers as $class => $provider) { $disabled = isset($current_map[$class]); if ($disabled) { $description = phutil_tag('em', array(), pht('This merchant already has a payment account configured ' . 'with this provider.')); } else { $description = $provider->getConfigureDescription(); } $panel_classes->addButton($class, $provider->getConfigureName(), $description, null, $disabled); } $form = id(new AphrontFormView())->setUser($viewer)->addHiddenInput('merchantID', $merchant->getID())->appendRemarkupInstructions(pht('Choose the type of payment provider to add:'))->appendChild($panel_classes)->appendChild(id(new AphrontFormSubmitControl())->setValue(pht('Continue'))->addCancelButton($cancel_uri)); $title = pht('Add Payment Provider'); $crumbs = $this->buildApplicationCrumbs(); $crumbs->addTextCrumb($merchant->getName(), $cancel_uri); $crumbs->addTextCrumb($title); $box = id(new PHUIObjectBoxView())->setHeaderText($title)->setFormErrors($errors)->setForm($form); return $this->buildApplicationPage(array($crumbs, $box), array('title' => $title)); }