[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorApplicationLaunchView extends AphrontTagView { 4 5 private $application; 6 private $status; 7 8 public function setApplication(PhabricatorApplication $application) { 9 $this->application = $application; 10 return $this; 11 } 12 13 public function setApplicationStatus(array $status) { 14 $this->status = $status; 15 return $this; 16 } 17 18 protected function getTagName() { 19 return $this->application ? 'a' : 'div'; 20 } 21 22 protected function getTagAttributes() { 23 $application = $this->application; 24 return array( 25 'class' => array('phabricator-application-launch-container'), 26 'href' => $application ? $application->getBaseURI() : null, 27 ); 28 } 29 30 protected function getTagContent() { 31 $application = $this->application; 32 33 require_celerity_resource('phabricator-application-launch-view-css'); 34 require_celerity_resource('sprite-apps-large-css'); 35 36 $content = array(); 37 $icon = null; 38 if ($application) { 39 $content[] = phutil_tag( 40 'span', 41 array( 42 'class' => 'phabricator-application-launch-name', 43 ), 44 $application->getName()); 45 46 $content[] = phutil_tag( 47 'span', 48 array( 49 'class' => 'phabricator-application-launch-description', 50 ), 51 $application->getShortDescription()); 52 53 $counts = array(); 54 $text = array(); 55 if ($this->status) { 56 foreach ($this->status as $status) { 57 $type = $status->getType(); 58 $counts[$type] = idx($counts, $type, 0) + $status->getCount(); 59 if ($status->getCount()) { 60 $text[] = $status->getText(); 61 } 62 } 63 } 64 65 $attention = PhabricatorApplicationStatusView::TYPE_NEEDS_ATTENTION; 66 $warning = PhabricatorApplicationStatusView::TYPE_WARNING; 67 if (!empty($counts[$attention]) || !empty($counts[$warning])) { 68 $count = idx($counts, $attention, 0); 69 $count1 = $count2 = ''; 70 if ($count > 0) { 71 $count1 = phutil_tag( 72 'span', 73 array( 74 'class' => 'phabricator-application-attention-count', 75 ), 76 $count); 77 } 78 79 80 if (!empty($counts[$warning])) { 81 $count2 = phutil_tag( 82 'span', 83 array( 84 'class' => 'phabricator-application-warning-count', 85 ), 86 $counts[$warning]); 87 } 88 if (nonempty($count1) && nonempty($count2)) { 89 $numbers = array($count1, ' / ', $count2); 90 } else { 91 $numbers = array($count1, $count2); 92 } 93 94 Javelin::initBehavior('phabricator-tooltips'); 95 $content[] = javelin_tag( 96 'span', 97 array( 98 'sigil' => 'has-tooltip', 99 'meta' => array( 100 'tip' => implode("\n", $text), 101 'size' => 240, 102 ), 103 'class' => 'phabricator-application-launch-attention', 104 ), 105 $numbers); 106 } 107 108 $classes = array(); 109 $classes[] = 'phabricator-application-launch-icon'; 110 $styles = array(); 111 112 if ($application->getIconURI()) { 113 $styles[] = 'background-image: url('.$application->getIconURI().')'; 114 } else { 115 $icon = $application->getIconName(); 116 $classes[] = 'sprite-apps-large'; 117 $classes[] = 'apps-'.$icon.'-dark-large'; 118 } 119 120 $icon = phutil_tag( 121 'span', 122 array( 123 'class' => implode(' ', $classes), 124 'style' => nonempty(implode('; ', $styles), null), 125 ), 126 ''); 127 } 128 129 return array( 130 $icon, 131 $content, 132 ); 133 } 134 135 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |