@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 98 lines 2.3 kB view raw
1<?php 2 3final class PhortuneExternalOrderController 4 extends PhortuneExternalController { 5 6 protected function handleExternalRequest(AphrontRequest $request) { 7 $xviewer = $this->getExternalViewer(); 8 $email = $this->getAccountEmail(); 9 $account = $email->getAccount(); 10 11 $order = id(new PhortuneCartQuery()) 12 ->setViewer($xviewer) 13 ->withAccountPHIDs(array($account->getPHID())) 14 ->withIDs(array($request->getURIData('orderID'))) 15 ->executeOne(); 16 if (!$order) { 17 return new Aphront404Response(); 18 } 19 20 $is_printable = ($request->getURIData('action') === 'print'); 21 22 $order_view = id(new PhortuneOrderSummaryView()) 23 ->setViewer($xviewer) 24 ->setOrder($order) 25 ->setPrintable($is_printable); 26 27 $crumbs = null; 28 $curtain = null; 29 30 $main = array(); 31 $tail = array(); 32 33 require_celerity_resource('phortune-invoice-css'); 34 35 if ($is_printable) { 36 $body_class = 'phortune-invoice-view'; 37 38 $tail[] = $order_view; 39 } else { 40 $body_class = 'phortune-cart-page'; 41 42 $curtain = $this->newCurtain($order); 43 44 $crumbs = $this->newExternalCrumbs() 45 ->addTextCrumb($order->getObjectName()) 46 ->setBorder(true); 47 48 $timeline = $this->buildTransactionTimeline($order) 49 ->setShouldTerminate(true); 50 51 $main[] = $order_view; 52 $main[] = $timeline; 53 } 54 55 $column_view = id(new PHUITwoColumnView()) 56 ->setMainColumn($main) 57 ->setFooter($tail); 58 59 if ($curtain) { 60 $column_view->setCurtain($curtain); 61 } 62 63 $page = $this->newPage() 64 ->addClass($body_class) 65 ->setTitle( 66 array( 67 $order->getObjectName(), 68 $order->getName(), 69 )) 70 ->appendChild($column_view); 71 72 if ($crumbs) { 73 $page->setCrumbs($crumbs); 74 } 75 76 return $page; 77 } 78 79 80 private function newCurtain(PhortuneCart $order) { 81 $xviewer = $this->getExternalViewer(); 82 $email = $this->getAccountEmail(); 83 84 $curtain = $this->newCurtainView($order); 85 86 $print_uri = $email->getExternalOrderPrintURI($order); 87 88 $curtain->addAction( 89 id(new PhabricatorActionView()) 90 ->setName(pht('Printable Version')) 91 ->setHref($print_uri) 92 ->setOpenInNewWindow(true) 93 ->setIcon('fa-print')); 94 95 return $curtain; 96 } 97 98}