private function buildIssueList(array $issues, $group)
 {
     assert_instances_of($issues, 'PhabricatorSetupIssue');
     $list = new PHUIObjectItemListView();
     $list->setStackable(true);
     $ignored_items = array();
     $items = 0;
     foreach ($issues as $issue) {
         if ($issue->getGroup() == $group) {
             $items++;
             $href = $this->getApplicationURI('/issue/' . $issue->getIssueKey() . '/');
             $item = id(new PHUIObjectItemView())->setHeader($issue->getName())->setHref($href)->addAttribute($issue->getSummary());
             if (!$issue->getIsIgnored()) {
                 $item->setBarColor('yellow');
                 $list->addItem($item);
             } else {
                 $item->addIcon('fa-eye-slash', pht('Ignored'));
                 $item->setDisabled(true);
                 $item->setBarColor('none');
                 $ignored_items[] = $item;
             }
         }
     }
     foreach ($ignored_items as $item) {
         $list->addItem($item);
     }
     if ($items == 0) {
         return null;
     } else {
         return $list;
     }
 }
 private function buildConfigOptionsList(array $groups)
 {
     assert_instances_of($groups, 'PhabricatorApplicationConfigOptions');
     $list = new PHUIObjectItemListView();
     $list->setStackable(true);
     $groups = msort($groups, 'getName');
     foreach ($groups as $group) {
         $item = id(new PHUIObjectItemView())->setHeader($group->getName())->setHref('/config/group/' . $group->getKey() . '/')->addAttribute($group->getDescription());
         $list->addItem($item);
     }
     return $list;
 }
 private function buildOptionList(array $options)
 {
     assert_instances_of($options, 'PhabricatorConfigOption');
     require_celerity_resource('config-options-css');
     $db_values = array();
     if ($options) {
         $db_values = id(new PhabricatorConfigEntry())->loadAllWhere('configKey IN (%Ls) AND namespace = %s', mpull($options, 'getKey'), 'default');
         $db_values = mpull($db_values, null, 'getConfigKey');
     }
     $engine = id(new PhabricatorMarkupEngine())->setViewer($this->getRequest()->getUser());
     foreach ($options as $option) {
         $engine->addObject($option, 'summary');
     }
     $engine->process();
     $list = new PHUIObjectItemListView();
     $list->setStackable(true);
     foreach ($options as $option) {
         $summary = $engine->getOutput($option, 'summary');
         $item = id(new PHUIObjectItemView())->setHeader($option->getKey())->setHref('/config/edit/' . $option->getKey() . '/')->addAttribute($summary);
         if (!$option->getHidden() && !$option->getMasked()) {
             $current_value = PhabricatorEnv::getEnvConfig($option->getKey());
             $current_value = PhabricatorConfigJSON::prettyPrintJSON($current_value);
             $current_value = phutil_tag('div', array('class' => 'config-options-current-value'), array(phutil_tag('span', array(), pht('Current Value:')), ' ' . $current_value));
             $item->appendChild($current_value);
         }
         $db_value = idx($db_values, $option->getKey());
         if ($db_value && !$db_value->getIsDeleted()) {
             $item->addIcon('edit', pht('Customized'));
         }
         if ($option->getHidden()) {
             $item->addIcon('unpublish', pht('Hidden'));
         } else {
             if ($option->getMasked()) {
                 $item->addIcon('unpublish-grey', pht('Masked'));
             } else {
                 if ($option->getLocked()) {
                     $item->addIcon('lock', pht('Locked'));
                 }
             }
         }
         $list->addItem($item);
     }
     return $list;
 }
 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $pager = id(new AphrontCursorPagerView())->readFromRequest($request);
     $tokens_given = id(new PhabricatorTokenGivenQuery())->setViewer($user)->executeWithCursorPager($pager);
     $handles = array();
     if ($tokens_given) {
         $object_phids = mpull($tokens_given, 'getObjectPHID');
         $user_phids = mpull($tokens_given, 'getAuthorPHID');
         $handle_phids = array_merge($object_phids, $user_phids);
         $handles = id(new PhabricatorHandleQuery())->setViewer($user)->withPHIDs($handle_phids)->execute();
     }
     $tokens = array();
     if ($tokens_given) {
         $token_phids = mpull($tokens_given, 'getTokenPHID');
         $tokens = id(new PhabricatorTokenQuery())->setViewer($user)->withPHIDs($token_phids)->execute();
         $tokens = mpull($tokens, null, 'getPHID');
     }
     $list = new PHUIObjectItemListView();
     $list->setStackable(true);
     foreach ($tokens_given as $token_given) {
         $handle = $handles[$token_given->getObjectPHID()];
         $token = idx($tokens, $token_given->getTokenPHID());
         $item = id(new PHUIObjectItemView());
         $item->setHeader($handle->getFullName());
         $item->setHref($handle->getURI());
         $item->addAttribute($token->renderIcon());
         $item->addAttribute(pht('Given by %s on %s', $handles[$token_given->getAuthorPHID()]->renderLink(), phabricator_date($token_given->getDateCreated(), $user)));
         $list->addItem($item);
     }
     $title = pht('Tokens Given');
     $box = id(new PHUIObjectBoxView())->setHeaderText($title)->appendChild($list);
     $nav = $this->buildSideNav();
     $nav->setCrumbs($this->buildApplicationCrumbs()->addTextCrumb($title));
     $nav->selectFilter('given/');
     $nav->appendChild($box);
     $nav->appendChild($pager);
     return $this->buildApplicationPage($nav, array('title' => $title));
 }
 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $pager = new AphrontPagerView();
     $pager->setURI($request->getRequestURI(), 'page');
     $pager->setOffset($request->getInt('page'));
     $query = id(new PhabricatorTokenReceiverQuery());
     $objects = $query->setViewer($user)->executeWithOffsetPager($pager);
     $counts = $query->getTokenCounts();
     $handles = array();
     $phids = array();
     if ($counts) {
         $phids = mpull($objects, 'getPHID');
         $handles = id(new PhabricatorHandleQuery())->setViewer($user)->withPHIDs($phids)->execute();
     }
     $list = new PHUIObjectItemListView();
     $list->setStackable(true);
     foreach ($phids as $object) {
         $count = idx($counts, $object, 0);
         $item = id(new PHUIObjectItemView());
         $handle = $handles[$object];
         $item->setHeader($handle->getFullName());
         $item->setHref($handle->getURI());
         $item->addAttribute(pht('Tokens: %s', $count));
         $list->addItem($item);
     }
     $title = pht('Token Leader Board');
     $box = id(new PHUIObjectBoxView())->setHeaderText($title)->appendChild($list);
     $nav = $this->buildSideNav();
     $nav->setCrumbs($this->buildApplicationCrumbs()->addTextCrumb($title));
     $nav->selectFilter('leaders/');
     $nav->appendChild($box);
     $nav->appendChild($pager);
     return $this->buildApplicationPage($nav, array('title' => $title));
 }
 public function renderExample()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     $handle = id(new PhabricatorHandleQuery())->setViewer($user)->withPHIDs(array($user->getPHID()))->executeOne();
     $out = array();
     $head = id(new PHUIHeaderView())->setHeader(pht('Basic List'));
     $list = new PHUIObjectItemListView();
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('FRUIT1')->setHeader(pht('Apple'))->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('FRUIT2')->setHeader(pht('Banana'))->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('FRUIT3')->setHeader(pht('Cherry'))->setHref('#'));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('Empty List'));
     $list = new PHUIObjectItemListView();
     $list->setNoDataString(pht('This list is empty.'));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('Stacked List'));
     $list = new PHUIObjectItemListView();
     $list->setStackable(true);
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Monday'))->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Tuesday'))->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Wednesday'))->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Thursday'))->setHref('#'));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('Plain List'));
     $list = new PHUIObjectItemListView();
     $list->setPlain(true);
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Monday'))->setSubHead('I love cats')->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Tuesday'))->setSubHead('Cat, cats, cats')->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Wednesday'))->setSubHead('Meow, meow, meow')->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Thursday'))->setSubHead('Every single day')->setHref('#'));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('Card List'));
     $list = new PHUIObjectItemListView();
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Business Card'))->setBarColor('red'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Playing Card'))->setBarColor('orange')->addIcon('fa-comment', pht('Royal Flush!')));
     $owner = phutil_tag('a', array('href' => '#'), pht('jackofclubs'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('House of Cards'))->setBarColor('yellow')->setDisabled(true)->addByline(pht('Owner: %s', $owner)));
     $author = phutil_tag('a', array('href' => '#'), pht('agoat'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Cardigan'))->setBarColor('green')->addIcon('fa-star', pht('Warm!'))->addByline(pht('Author: %s', $author)));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Cardamom'))->addFootIcon('fa-shield white', 'Spice')->setBarColor('blue'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('The human cardiovascular system includes the heart, lungs, and ' . 'some other parts; most of these parts are pretty squishy'))->addFootIcon('fa-search white', pht('Respiration!'))->addHandleIcon($handle, pht('You have a cardiovascular system!'))->setBarColor('indigo'));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('Grippable List'));
     $list = new PHUIObjectItemListView();
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Grab ahold!'))->setHref('#')->setGrippable(true)->setBarColor('red'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Hold on tight!'))->setHref('#')->setGrippable(true)->setBarColor('yellow'));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht("Don't let go!"))->setHref('#')->setGrippable(true)->setBarColor('green')->addAction(id(new PHUIListItemView())->setHref('#')->setIcon('fa-times')));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('List With Actions'));
     $list = new PHUIObjectItemListView();
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('You Have The Power'))->setHref('#')->setBarColor('blue')->addAction(id(new PHUIListItemView())->setHref('#')->setName(pht('Moo'))->setIcon('fa-pencil')));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Believe In Yourself'))->setHref('#')->setBarColor('violet')->addAction(id(new PHUIListItemView())->setHref('#')->setName(pht('Quack'))->setIcon('fa-pencil'))->addAction(id(new PHUIListItemView())->setHref('#')->setName(pht('Oink'))->setIcon('fa-times')));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('Extras'));
     $list = new PHUIObjectItemListView();
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Ace of Hearts'))->setSubHead(pht('This is a powerful card in the game "Hearts".'))->setHref('#')->addAttribute(pht('Suit: Hearts'))->addAttribute(pht('Rank: Ace'))->addIcon('fa-heart', pht('Ace'))->addIcon('fa-heart red', pht('Hearts'))->addFootIcon('fa-heart white', pht('Ace'))->addFootIcon('fa-heart white', pht('Heart'))->addHandleIcon($handle, pht('You hold all the cards.'))->addHandleIcon($handle, pht('You make all the rules.')));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Just A Handle'))->setHref('#')->addHandleIcon($handle, pht('Handle Here')));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Poor Use of Space'))->setHref('#')->addAttribute('North West')->addHandleIcon($handle, pht('South East')));
     $list->addItem(id(new PHUIObjectItemView())->setHeader(pht('Crowded Eastern Edge'))->setHref('#')->addIcon('fa-circle red', pht('Stuff'))->addIcon('fa-circle yellow', pht('Stuff'))->addIcon('fa-circle green', pht('Stuff'))->addHandleIcon($handle, pht('More Stuff')));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('Effects'));
     $list = new PHUIObjectItemListView();
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('X1')->setHeader(pht('Normal'))->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('X2')->setHeader(pht('Highlighted'))->setEffect('highlighted')->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('X3')->setHeader(pht('Selected'))->setEffect('selected')->setHref('#'));
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('X4')->setHeader(pht('Disabled'))->setDisabled(true)->setHref('#'));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('Colors'));
     $list = new PHUIObjectItemListView();
     $bar_colors = array(null => pht('None'), 'red' => pht('Red'), 'orange' => pht('Orange'), 'yellow' => pht('Yellow'), 'green' => pht('Green'), 'sky' => pht('Sky'), 'blue' => pht('Blue'), 'indigo' => pht('Indigo'), 'violet' => pht('Violet'), 'grey' => pht('Grey'), 'black' => pht('Black'));
     foreach ($bar_colors as $bar_color => $bar_label) {
         $list->addItem(id(new PHUIObjectItemView())->setHeader($bar_label)->setBarColor($bar_color));
     }
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('Images'));
     $list = new PHUIObjectItemListView();
     $default_profile = PhabricatorFile::loadBuiltin($user, 'profile.png');
     $default_project = PhabricatorFile::loadBuiltin($user, 'project.png');
     $list->addItem(id(new PHUIObjectItemView())->setImageURI($default_profile->getViewURI())->setHeader(pht('Default User Profile Image'))->setBarColor('violet')->addAction(id(new PHUIListItemView())->setHref('#')->setIcon('fa-plus-square')));
     $list->addItem(id(new PHUIObjectItemView())->setImageURI($default_project->getViewURI())->setHeader(pht('Default Project Profile Image'))->setGrippable(true)->addAttribute(pht('This is the default project profile image.')));
     $out[] = array($head, $list);
     $head = id(new PHUIHeaderView())->setHeader(pht('States'));
     $list = id(new PHUIObjectItemListView())->setStates(true);
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('X1200')->setHeader(pht('Action Passed'))->addAttribute(pht('That went swimmingly, go you'))->setHref('#')->setState(PHUIObjectItemView::STATE_SUCCESS));
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('X1201')->setHeader(pht('Action Failed'))->addAttribute(pht('Whoopsies, might want to fix that'))->setHref('#')->setState(PHUIObjectItemView::STATE_FAIL));
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('X1202')->setHeader(pht('Action Warning'))->addAttribute(pht('We need to talk about things'))->setHref('#')->setState(PHUIObjectItemView::STATE_WARN));
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('X1203')->setHeader(pht('Action Noted'))->addAttribute(pht('The weather seems nice today'))->setHref('#')->setState(PHUIObjectItemView::STATE_NOTE));
     $list->addItem(id(new PHUIObjectItemView())->setObjectName('X1203')->setHeader(pht('Action In Progress'))->addAttribute(pht('Outlook fuzzy, try again later'))->setHref('#')->setState(PHUIObjectItemView::STATE_BUILD));
     $box = id(new PHUIObjectBoxView())->setHeaderText('Test Things')->appendChild($list);
     $out[] = array($head, $box);
     return $out;
 }