public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $id = $request->getURIData('id'); if ($id) { $badge = id(new PhabricatorBadgesQuery())->setViewer($viewer)->withIDs(array($id))->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->executeOne(); if (!$badge) { return new Aphront404Response(); } $cancel_uri = $this->getApplicationURI('view/' . $badge->getID() . '/'); $badge_icon = $badge->getIcon(); } else { $this->requireApplicationCapability(PhabricatorBadgesCreateCapability::CAPABILITY); $cancel_uri = '/badges/'; $badge_icon = $request->getStr('value'); } require_celerity_resource('project-icon-css'); Javelin::initBehavior('phabricator-tooltips'); $badge_icons = PhabricatorBadgesIcon::getIconMap(); if ($request->isFormPost()) { $v_icon = $request->getStr('icon'); return id(new AphrontAjaxResponse())->setContent(array('value' => $v_icon, 'display' => PhabricatorBadgesIcon::renderIconForChooser($v_icon))); } $ii = 0; $buttons = array(); foreach ($badge_icons as $icon => $label) { $view = id(new PHUIIconView())->setIconFont($icon); $aural = javelin_tag('span', array('aural' => true), pht('Choose "%s" Icon', $label)); if ($icon == $badge_icon) { $class_extra = ' selected'; } else { $class_extra = null; } $buttons[] = javelin_tag('button', array('class' => 'icon-button' . $class_extra, 'name' => 'icon', 'value' => $icon, 'type' => 'submit', 'sigil' => 'has-tooltip', 'meta' => array('tip' => $label)), array($aural, $view)); if (++$ii % 4 == 0) { $buttons[] = phutil_tag('br'); } } $buttons = phutil_tag('div', array('class' => 'icon-grid'), $buttons); return $this->newDialog()->setTitle(pht('Choose Badge Icon'))->appendChild($buttons)->addCancelButton($cancel_uri); }
public static function getIconNameMap() { return PhabricatorBadgesIcon::getIconMap(); }