[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/meta/view/ -> PhabricatorApplicationLaunchView.php (source)

   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  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1