Update all existing ProfileMenuItems for the more-structured API
Summary: Depends on D20357. Ref T13275. Now that there's a stronger layer between "stuff in the database" and "stuff on the screen", these subclasses all need to emit intermediate objects instead of raw, HTML-producing view objects. This update is mostly mechanical. Test Plan: - Viewed Home, Favorites, Portals, User Profiles, Project Profiles. - Clicked each item on each menu/profile type. - Added every (I think?) type of item to a menu and clicked them all. - Grepped for obsolete symbols (`newNavigationMenuItems`, `willBuildNavigationItems`). Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13275 Differential Revision: https://secure.phabricator.com/D20358
This commit is contained in:
		@@ -49,7 +49,7 @@ final class PhabricatorDashboardPortalMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
 | 
			
		||||
@@ -57,12 +57,12 @@ final class PhabricatorDashboardPortalMenuItem
 | 
			
		||||
      return array();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $href = $this->getItemViewURI($config);
 | 
			
		||||
    $uri = $this->getItemViewURI($config);
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
    $icon = 'fa-pencil';
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -49,16 +49,16 @@ final class PhabricatorHomeLauncherProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
    $icon = 'fa-ellipsis-h';
 | 
			
		||||
    $href = '/applications/';
 | 
			
		||||
    $uri = '/applications/';
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -52,16 +52,16 @@ final class PhabricatorHomeProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
    $icon = 'fa-home';
 | 
			
		||||
    $href = $this->getItemViewURI($config);
 | 
			
		||||
    $uri = $this->getItemViewURI($config);
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,14 +40,14 @@ final class PhabricatorPeopleBadgesProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $user = $config->getProfileObject();
 | 
			
		||||
    $id = $user->getID();
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref("/people/badges/{$id}/")
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI("/people/badges/{$id}/")
 | 
			
		||||
      ->setName($this->getDisplayName($config))
 | 
			
		||||
      ->setIcon('fa-trophy');
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,14 +40,14 @@ final class PhabricatorPeopleCommitsProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $user = $config->getProfileObject();
 | 
			
		||||
    $id = $user->getID();
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref("/people/commits/{$id}/")
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI("/people/commits/{$id}/")
 | 
			
		||||
      ->setName($this->getDisplayName($config))
 | 
			
		||||
      ->setIcon('fa-code');
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,16 +35,16 @@ final class PhabricatorPeopleDetailsProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $user = $config->getProfileObject();
 | 
			
		||||
    $href = urisprintf(
 | 
			
		||||
    $uri = urisprintf(
 | 
			
		||||
      '/p/%s/',
 | 
			
		||||
      $user->getUsername());
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName(pht('Profile'))
 | 
			
		||||
      ->setIcon('fa-user');
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,14 +40,14 @@ final class PhabricatorPeopleManageProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $user = $config->getProfileObject();
 | 
			
		||||
    $id = $user->getID();
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref("/people/manage/{$id}/")
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI("/people/manage/{$id}/")
 | 
			
		||||
      ->setName($this->getDisplayName($config))
 | 
			
		||||
      ->setIcon('fa-gears');
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -28,52 +28,18 @@ final class PhabricatorPeoplePictureProfileMenuItem
 | 
			
		||||
    return array();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $user = $config->getProfileObject();
 | 
			
		||||
    require_celerity_resource('people-picture-menu-item-css');
 | 
			
		||||
 | 
			
		||||
    $picture = $user->getProfileImageURI();
 | 
			
		||||
    $name = $user->getUsername();
 | 
			
		||||
 | 
			
		||||
    $classes = array();
 | 
			
		||||
    $classes[] = 'people-menu-image';
 | 
			
		||||
    if ($user->getIsDisabled()) {
 | 
			
		||||
      $classes[] = 'phui-image-disabled';
 | 
			
		||||
    }
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setDisabled($user->getIsDisabled());
 | 
			
		||||
 | 
			
		||||
    $href = urisprintf(
 | 
			
		||||
      '/p/%s/',
 | 
			
		||||
      $user->getUsername());
 | 
			
		||||
 | 
			
		||||
    $photo = phutil_tag(
 | 
			
		||||
      'img',
 | 
			
		||||
      array(
 | 
			
		||||
        'src' => $picture,
 | 
			
		||||
        'class' => implode(' ', $classes),
 | 
			
		||||
      ));
 | 
			
		||||
 | 
			
		||||
    $can_edit = PhabricatorPolicyFilter::hasCapability(
 | 
			
		||||
      $this->getViewer(),
 | 
			
		||||
      $user,
 | 
			
		||||
      PhabricatorPolicyCapability::CAN_EDIT);
 | 
			
		||||
 | 
			
		||||
    if ($can_edit) {
 | 
			
		||||
      $id = $user->getID();
 | 
			
		||||
      $href = "/people/picture/{$id}/";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $view = phutil_tag_div('people-menu-image-container', $photo);
 | 
			
		||||
    $view = phutil_tag(
 | 
			
		||||
      'a',
 | 
			
		||||
      array(
 | 
			
		||||
        'href' => $href,
 | 
			
		||||
      ),
 | 
			
		||||
      $view);
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->appendChild($view);
 | 
			
		||||
    $item->newProfileImage($picture);
 | 
			
		||||
 | 
			
		||||
    return array(
 | 
			
		||||
      $item,
 | 
			
		||||
 
 | 
			
		||||
@@ -40,14 +40,14 @@ final class PhabricatorPeopleRevisionsProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $user = $config->getProfileObject();
 | 
			
		||||
    $id = $user->getID();
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref("/people/revisions/{$id}/")
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI("/people/revisions/{$id}/")
 | 
			
		||||
      ->setName($this->getDisplayName($config))
 | 
			
		||||
      ->setIcon('fa-gear');
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,14 +40,14 @@ final class PhabricatorPeopleTasksProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $user = $config->getProfileObject();
 | 
			
		||||
    $id = $user->getID();
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref("/people/tasks/{$id}/")
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI("/people/tasks/{$id}/")
 | 
			
		||||
      ->setName($this->getDisplayName($config))
 | 
			
		||||
      ->setIcon('fa-anchor');
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ final class PhabricatorProjectDetailsProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $project = $config->getProfileObject();
 | 
			
		||||
@@ -58,10 +58,10 @@ final class PhabricatorProjectDetailsProfileMenuItem
 | 
			
		||||
    $name = $project->getName();
 | 
			
		||||
    $icon = $project->getDisplayIconIcon();
 | 
			
		||||
 | 
			
		||||
    $href = "/project/profile/{$id}/";
 | 
			
		||||
    $uri = "/project/profile/{$id}/";
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ final class PhabricatorProjectManageProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $project = $config->getProfileObject();
 | 
			
		||||
@@ -58,10 +58,10 @@ final class PhabricatorProjectManageProfileMenuItem
 | 
			
		||||
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
    $icon = 'fa-gears';
 | 
			
		||||
    $href = "/project/manage/{$id}/";
 | 
			
		||||
    $uri = "/project/manage/{$id}/";
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ final class PhabricatorProjectMembersProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $project = $config->getProfileObject();
 | 
			
		||||
@@ -48,10 +48,10 @@ final class PhabricatorProjectMembersProfileMenuItem
 | 
			
		||||
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
    $icon = 'fa-group';
 | 
			
		||||
    $href = "/project/members/{$id}/";
 | 
			
		||||
    $uri = "/project/members/{$id}/";
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -32,38 +32,16 @@ final class PhabricatorProjectPictureProfileMenuItem
 | 
			
		||||
    return array();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $project = $config->getProfileObject();
 | 
			
		||||
    require_celerity_resource('people-picture-menu-item-css');
 | 
			
		||||
 | 
			
		||||
    $picture = $project->getProfileImageURI();
 | 
			
		||||
    $href = $project->getProfileURI();
 | 
			
		||||
 | 
			
		||||
    $classes = array();
 | 
			
		||||
    $classes[] = 'people-menu-image';
 | 
			
		||||
    if ($project->isArchived()) {
 | 
			
		||||
      $classes[] = 'phui-image-disabled';
 | 
			
		||||
    }
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setDisabled($project->isArchived());
 | 
			
		||||
 | 
			
		||||
    $photo = phutil_tag(
 | 
			
		||||
      'img',
 | 
			
		||||
      array(
 | 
			
		||||
        'src' => $picture,
 | 
			
		||||
        'class' => implode(' ', $classes),
 | 
			
		||||
      ));
 | 
			
		||||
 | 
			
		||||
    $view = phutil_tag_div('people-menu-image-container', $photo);
 | 
			
		||||
    $view = phutil_tag(
 | 
			
		||||
      'a',
 | 
			
		||||
      array(
 | 
			
		||||
        'href' => $href,
 | 
			
		||||
      ),
 | 
			
		||||
      $view);
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->appendChild($view);
 | 
			
		||||
    $item->newProfileImage($picture);
 | 
			
		||||
 | 
			
		||||
    return array(
 | 
			
		||||
      $item,
 | 
			
		||||
 
 | 
			
		||||
@@ -52,7 +52,7 @@ final class PhabricatorProjectPointsProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
    $project = $config->getProfileObject();
 | 
			
		||||
@@ -165,8 +165,8 @@ final class PhabricatorProjectPointsProfileMenuItem
 | 
			
		||||
      ),
 | 
			
		||||
      $bar);
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->appendChild($bar);
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->newProgressBar($bar);
 | 
			
		||||
 | 
			
		||||
    return array(
 | 
			
		||||
      $item,
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ final class PhabricatorProjectSubprojectsProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $project = $config->getProfileObject();
 | 
			
		||||
@@ -55,10 +55,10 @@ final class PhabricatorProjectSubprojectsProfileMenuItem
 | 
			
		||||
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
    $icon = 'fa-sitemap';
 | 
			
		||||
    $href = "/project/subprojects/{$id}/";
 | 
			
		||||
    $uri = "/project/subprojects/{$id}/";
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -56,16 +56,16 @@ final class PhabricatorProjectWorkboardProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    $project = $config->getProfileObject();
 | 
			
		||||
 | 
			
		||||
    $id = $project->getID();
 | 
			
		||||
    $href = $project->getWorkboardURI();
 | 
			
		||||
    $uri = $project->getWorkboardURI();
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon('fa-columns');
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ final class PhabricatorProfileMenuItemView
 | 
			
		||||
  private $uri;
 | 
			
		||||
  private $name;
 | 
			
		||||
  private $icon;
 | 
			
		||||
  private $iconImage;
 | 
			
		||||
  private $disabled;
 | 
			
		||||
  private $tooltip;
 | 
			
		||||
  private $actions = array();
 | 
			
		||||
@@ -53,6 +54,15 @@ final class PhabricatorProfileMenuItemView
 | 
			
		||||
    return $this->icon;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function setIconImage($icon_image) {
 | 
			
		||||
    $this->iconImage = $icon_image;
 | 
			
		||||
    return $this;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function getIconImage() {
 | 
			
		||||
    return $this->iconImage;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function setDisabled($disabled) {
 | 
			
		||||
    $this->disabled = $disabled;
 | 
			
		||||
    return $this;
 | 
			
		||||
@@ -146,6 +156,11 @@ final class PhabricatorProfileMenuItemView
 | 
			
		||||
      $view->setIcon($icon);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $icon_image = $this->getIconImage();
 | 
			
		||||
    if ($icon_image) {
 | 
			
		||||
      $view->setProfileImage($icon_image);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($this->getDisabled()) {
 | 
			
		||||
      $view->setDisabled(true);
 | 
			
		||||
    }
 | 
			
		||||
@@ -160,6 +175,11 @@ final class PhabricatorProfileMenuItemView
 | 
			
		||||
        ->addClass('phui-divider');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $tooltip = $this->getTooltip();
 | 
			
		||||
    if (strlen($tooltip)) {
 | 
			
		||||
      $view->setTooltip($tooltip);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($this->images) {
 | 
			
		||||
      require_celerity_resource('people-picture-menu-item-css');
 | 
			
		||||
      foreach ($this->images as $image_src) {
 | 
			
		||||
 
 | 
			
		||||
@@ -68,7 +68,7 @@ final class PhabricatorApplicationProfileMenuItem
 | 
			
		||||
    return head($apps);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
    $app = $this->getApplication($config);
 | 
			
		||||
@@ -83,8 +83,8 @@ final class PhabricatorApplicationProfileMenuItem
 | 
			
		||||
      return array();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($app->getApplicationURI())
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($app->getApplicationURI())
 | 
			
		||||
      ->setName($this->getDisplayName($config))
 | 
			
		||||
      ->setIcon($app->getIcon());
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ final class PhabricatorConpherenceProfileMenuItem
 | 
			
		||||
    return $conpherence;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function willBuildNavigationItems(array $items) {
 | 
			
		||||
  public function willGetMenuItemViewList(array $items) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
    $room_phids = array();
 | 
			
		||||
    foreach ($items as $item) {
 | 
			
		||||
@@ -98,7 +98,7 @@ final class PhabricatorConpherenceProfileMenuItem
 | 
			
		||||
    return $config->getMenuItemProperty('name');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
    $room = $this->getConpherence($config);
 | 
			
		||||
@@ -114,21 +114,14 @@ final class PhabricatorConpherenceProfileMenuItem
 | 
			
		||||
      $unread_count = $data['unread_count'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $count = null;
 | 
			
		||||
    if ($unread_count) {
 | 
			
		||||
      $count = phutil_tag(
 | 
			
		||||
        'span',
 | 
			
		||||
        array(
 | 
			
		||||
          'class' => 'phui-list-item-count',
 | 
			
		||||
        ),
 | 
			
		||||
        $unread_count);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref('/'.$room->getMonogram())
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI('/'.$room->getMonogram())
 | 
			
		||||
      ->setName($this->getDisplayName($config))
 | 
			
		||||
      ->setIcon('fa-comments')
 | 
			
		||||
      ->appendChild($count);
 | 
			
		||||
      ->setIcon('fa-comments');
 | 
			
		||||
 | 
			
		||||
    if ($unread_count) {
 | 
			
		||||
      $item->newCount($unread_count);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return array(
 | 
			
		||||
      $item,
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,7 @@ final class PhabricatorDashboardProfileMenuItem
 | 
			
		||||
  const FIELD_DASHBOARD = 'dashboardPHID';
 | 
			
		||||
 | 
			
		||||
  private $dashboard;
 | 
			
		||||
  private $dashboardHandle;
 | 
			
		||||
 | 
			
		||||
  public function getMenuItemTypeIcon() {
 | 
			
		||||
    return 'fa-dashboard';
 | 
			
		||||
@@ -26,21 +27,13 @@ final class PhabricatorDashboardProfileMenuItem
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function attachDashboard($dashboard) {
 | 
			
		||||
  private function attachDashboard(PhabricatorDashboard $dashboard = null) {
 | 
			
		||||
    $this->dashboard = $dashboard;
 | 
			
		||||
    return $this;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function getDashboard() {
 | 
			
		||||
    $dashboard = $this->dashboard;
 | 
			
		||||
 | 
			
		||||
    if (!$dashboard) {
 | 
			
		||||
      return null;
 | 
			
		||||
    } else if ($dashboard->isArchived()) {
 | 
			
		||||
      return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return $dashboard;
 | 
			
		||||
  private function getDashboard() {
 | 
			
		||||
    return $this->dashboard;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function newPageContent(
 | 
			
		||||
@@ -56,7 +49,15 @@ final class PhabricatorDashboardProfileMenuItem
 | 
			
		||||
      ->needPanels(true)
 | 
			
		||||
      ->executeOne();
 | 
			
		||||
    if (!$dashboard) {
 | 
			
		||||
      return null;
 | 
			
		||||
      return $this->newEmptyView(
 | 
			
		||||
        pht('Invalid Dashboard'),
 | 
			
		||||
        pht('This dashboard is invalid and could not be loaded.'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($dashboard->isArchived()) {
 | 
			
		||||
      return $this->newEmptyView(
 | 
			
		||||
        pht('Archived Dashboard'),
 | 
			
		||||
        pht('This dashboard has been archived.'));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $engine = id(new PhabricatorDashboardRenderingEngine())
 | 
			
		||||
@@ -66,7 +67,7 @@ final class PhabricatorDashboardProfileMenuItem
 | 
			
		||||
    return $engine->renderDashboard();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function willBuildNavigationItems(array $items) {
 | 
			
		||||
  public function willGetMenuItemViewList(array $items) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
    $dashboard_phids = array();
 | 
			
		||||
    foreach ($items as $item) {
 | 
			
		||||
@@ -78,11 +79,18 @@ final class PhabricatorDashboardProfileMenuItem
 | 
			
		||||
      ->withPHIDs($dashboard_phids)
 | 
			
		||||
      ->execute();
 | 
			
		||||
 | 
			
		||||
    $handles = $viewer->loadHandles($dashboard_phids);
 | 
			
		||||
 | 
			
		||||
    $dashboards = mpull($dashboards, null, 'getPHID');
 | 
			
		||||
    foreach ($items as $item) {
 | 
			
		||||
      $dashboard_phid = $item->getMenuItemProperty('dashboardPHID');
 | 
			
		||||
      $dashboard = idx($dashboards, $dashboard_phid, null);
 | 
			
		||||
      $item->getMenuItem()->attachDashboard($dashboard);
 | 
			
		||||
 | 
			
		||||
      $menu_item = $item->getMenuItem();
 | 
			
		||||
 | 
			
		||||
      $menu_item
 | 
			
		||||
        ->attachDashboard($dashboard)
 | 
			
		||||
        ->setDashboardHandle($handles[$dashboard_phid]);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -91,7 +99,15 @@ final class PhabricatorDashboardProfileMenuItem
 | 
			
		||||
    $dashboard = $this->getDashboard();
 | 
			
		||||
 | 
			
		||||
    if (!$dashboard) {
 | 
			
		||||
      return pht('(Restricted/Invalid Dashboard)');
 | 
			
		||||
      if ($this->getDashboardHandle()->getPolicyFiltered()) {
 | 
			
		||||
        return pht('Restricted Dashboard');
 | 
			
		||||
      } else {
 | 
			
		||||
        return pht('Invalid Dashboard');
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($dashboard->isArchived()) {
 | 
			
		||||
      return pht('Archived Dashboard');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (strlen($this->getName($config))) {
 | 
			
		||||
@@ -122,24 +138,43 @@ final class PhabricatorDashboardProfileMenuItem
 | 
			
		||||
    return $config->getMenuItemProperty('name');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $dashboard = $this->getDashboard();
 | 
			
		||||
    if (!$dashboard) {
 | 
			
		||||
      return array();
 | 
			
		||||
    }
 | 
			
		||||
    $is_disabled = true;
 | 
			
		||||
    $action_uri = null;
 | 
			
		||||
 | 
			
		||||
    $dashboard = $this->getDashboard();
 | 
			
		||||
    if ($dashboard) {
 | 
			
		||||
      if ($dashboard->isArchived()) {
 | 
			
		||||
        $icon = 'fa-ban';
 | 
			
		||||
        $name = $this->getDisplayName($config);
 | 
			
		||||
      } else {
 | 
			
		||||
        $icon = $dashboard->getIcon();
 | 
			
		||||
        $name = $this->getDisplayName($config);
 | 
			
		||||
    $href = $this->getItemViewURI($config);
 | 
			
		||||
    $action_href = '/dashboard/arrange/'.$dashboard->getID().'/';
 | 
			
		||||
        $is_disabled = false;
 | 
			
		||||
        $action_uri = '/dashboard/arrange/'.$dashboard->getID().'/';
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      $icon = 'fa-ban';
 | 
			
		||||
      if ($this->getDashboardHandle()->getPolicyFiltered()) {
 | 
			
		||||
        $name = pht('Restricted Dashboard');
 | 
			
		||||
      } else {
 | 
			
		||||
        $name = pht('Invalid Dashboard');
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $uri = $this->getItemViewURI($config);
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon)
 | 
			
		||||
      ->setActionIcon('fa-pencil', $action_href);
 | 
			
		||||
      ->setDisabled($is_disabled);
 | 
			
		||||
 | 
			
		||||
    if ($action_uri) {
 | 
			
		||||
      $item->newAction($action_uri);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return array(
 | 
			
		||||
      $item,
 | 
			
		||||
@@ -191,4 +226,13 @@ final class PhabricatorDashboardProfileMenuItem
 | 
			
		||||
    return $errors;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private function getDashboardHandle() {
 | 
			
		||||
    return $this->dashboardHandle;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private function setDashboardHandle(PhabricatorObjectHandle $handle) {
 | 
			
		||||
    $this->dashboardHandle = $handle;
 | 
			
		||||
    return $this;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -34,12 +34,11 @@ final class PhabricatorDividerProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setType(PHUIListItemView::TYPE_DIVIDER)
 | 
			
		||||
      ->addClass('phui-divider');
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setIsDivider(true);
 | 
			
		||||
 | 
			
		||||
    return array(
 | 
			
		||||
      $item,
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ final class PhabricatorEditEngineProfileMenuItem
 | 
			
		||||
    return $form;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function willBuildNavigationItems(array $items) {
 | 
			
		||||
  public function willGetMenuItemViewList(array $items) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
    $engines = PhabricatorEditEngine::getAllEditEngines();
 | 
			
		||||
    $engine_keys = array_keys($engines);
 | 
			
		||||
@@ -99,7 +99,7 @@ final class PhabricatorEditEngineProfileMenuItem
 | 
			
		||||
    return $config->getMenuItemProperty('name');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $form = $this->getForm();
 | 
			
		||||
@@ -110,13 +110,13 @@ final class PhabricatorEditEngineProfileMenuItem
 | 
			
		||||
    $icon = $form->getIcon();
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
 | 
			
		||||
    $href = $form->getCreateURI();
 | 
			
		||||
    if ($href === null) {
 | 
			
		||||
    $uri = $form->getCreateURI();
 | 
			
		||||
    if ($uri === null) {
 | 
			
		||||
      return array();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -39,14 +39,14 @@ final class PhabricatorLabelProfileMenuItem
 | 
			
		||||
    return $config->getMenuItemProperty('name');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $name = $this->getLabelName($config);
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setType(PHUIListItemView::TYPE_LABEL);
 | 
			
		||||
      ->setIsLabel(true);
 | 
			
		||||
 | 
			
		||||
    return array(
 | 
			
		||||
      $item,
 | 
			
		||||
 
 | 
			
		||||
@@ -71,22 +71,14 @@ final class PhabricatorLinkProfileMenuItem
 | 
			
		||||
    return $config->getMenuItemProperty('tooltip');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private function isValidLinkURI($uri) {
 | 
			
		||||
    return PhabricatorEnv::isValidURIForLink($uri);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $icon = $this->getLinkIcon($config);
 | 
			
		||||
    $name = $this->getLinkName($config);
 | 
			
		||||
    $href = $this->getLinkURI($config);
 | 
			
		||||
    $uri = $this->getLinkURI($config);
 | 
			
		||||
    $tooltip = $this->getLinkTooltip($config);
 | 
			
		||||
 | 
			
		||||
    if (!$this->isValidLinkURI($href)) {
 | 
			
		||||
      $href = '#';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $icon_object = id(new PhabricatorProfileMenuItemIconSet())
 | 
			
		||||
      ->getIcon($icon);
 | 
			
		||||
    if ($icon_object) {
 | 
			
		||||
@@ -95,12 +87,12 @@ final class PhabricatorLinkProfileMenuItem
 | 
			
		||||
      $icon_class = 'fa-link';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon_class)
 | 
			
		||||
      ->setTooltip($tooltip)
 | 
			
		||||
      ->setRel('noreferrer');
 | 
			
		||||
      ->setIsExternalLink(true);
 | 
			
		||||
 | 
			
		||||
    return array(
 | 
			
		||||
      $item,
 | 
			
		||||
@@ -142,7 +134,7 @@ final class PhabricatorLinkProfileMenuItem
 | 
			
		||||
          continue;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!$this->isValidLinkURI($new)) {
 | 
			
		||||
        if (!PhabricatorEnv::isValidURIForLink($new)) {
 | 
			
		||||
          $errors[] = $this->newInvalidError(
 | 
			
		||||
            pht(
 | 
			
		||||
              'URI "%s" is not a valid link URI. It should be a full, valid '.
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ final class PhabricatorManageProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
 | 
			
		||||
@@ -58,13 +58,13 @@ final class PhabricatorManageProfileMenuItem
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $engine = $this->getEngine();
 | 
			
		||||
    $href = $engine->getItemURI('configure/');
 | 
			
		||||
    $uri = $engine->getItemURI('configure/');
 | 
			
		||||
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
    $icon = 'fa-pencil';
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setIcon($icon);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ final class PhabricatorMotivatorProfileMenuItem
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $source = $config->getMenuItemProperty('source');
 | 
			
		||||
@@ -66,7 +66,7 @@ final class PhabricatorMotivatorProfileMenuItem
 | 
			
		||||
 | 
			
		||||
    $fact_text = $this->selectFact($facts);
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setName($fact_name)
 | 
			
		||||
      ->setIcon($fact_icon)
 | 
			
		||||
      ->setTooltip($fact_text)
 | 
			
		||||
 
 | 
			
		||||
@@ -5,15 +5,6 @@ abstract class PhabricatorProfileMenuItem extends Phobject {
 | 
			
		||||
  private $viewer;
 | 
			
		||||
  private $engine;
 | 
			
		||||
 | 
			
		||||
  final public function buildNavigationMenuItems(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    return $this->newNavigationMenuItems($config);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  abstract protected function newNavigationMenuItems(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config);
 | 
			
		||||
 | 
			
		||||
  public function willBuildNavigationItems(array $items) {}
 | 
			
		||||
 | 
			
		||||
  public function getMenuItemTypeIcon() {
 | 
			
		||||
    return null;
 | 
			
		||||
@@ -76,10 +67,38 @@ abstract class PhabricatorProfileMenuItem extends Phobject {
 | 
			
		||||
      ->execute();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newItem() {
 | 
			
		||||
    return new PHUIListItemView();
 | 
			
		||||
  final protected function newItemView() {
 | 
			
		||||
    return new PhabricatorProfileMenuItemView();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function willGetMenuItemViewList(array $items) {}
 | 
			
		||||
 | 
			
		||||
  final public function getMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    $list = $this->newMenuItemViewList($config);
 | 
			
		||||
 | 
			
		||||
    if (!is_array($list)) {
 | 
			
		||||
      throw new Exception(
 | 
			
		||||
        pht(
 | 
			
		||||
          'Expected "newMenuItemViewList()" to return a list (in class "%s"), '.
 | 
			
		||||
          'but it returned something else ("%s").',
 | 
			
		||||
          get_class($this),
 | 
			
		||||
          phutil_describe_type($list)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    assert_instances_of($list, 'PhabricatorProfileMenuItemView');
 | 
			
		||||
 | 
			
		||||
    foreach ($list as $view) {
 | 
			
		||||
      $view->setMenuItemConfiguration($config);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return $list;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  abstract protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  public function newPageContent(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
    return null;
 | 
			
		||||
@@ -131,4 +150,14 @@ abstract class PhabricatorProfileMenuItem extends Phobject {
 | 
			
		||||
    return $this->newError(pht('Invalid'), $message, $xaction);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  final protected function newEmptyView($title, $message) {
 | 
			
		||||
    return id(new PHUIInfoView())
 | 
			
		||||
      ->setTitle($title)
 | 
			
		||||
      ->setSeverity(PHUIInfoView::SEVERITY_NODATA)
 | 
			
		||||
      ->setErrors(
 | 
			
		||||
        array(
 | 
			
		||||
          $message,
 | 
			
		||||
        ));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ final class PhabricatorProjectProfileMenuItem
 | 
			
		||||
    return $project;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public function willBuildNavigationItems(array $items) {
 | 
			
		||||
  public function willGetMenuItemViewList(array $items) {
 | 
			
		||||
    $viewer = $this->getViewer();
 | 
			
		||||
    $project_phids = array();
 | 
			
		||||
    foreach ($items as $item) {
 | 
			
		||||
@@ -90,7 +90,7 @@ final class PhabricatorProjectProfileMenuItem
 | 
			
		||||
    return $config->getMenuItemProperty('name');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected function newNavigationMenuItems(
 | 
			
		||||
  protected function newMenuItemViewList(
 | 
			
		||||
    PhabricatorProfileMenuItemConfiguration $config) {
 | 
			
		||||
 | 
			
		||||
    $project = $this->getProject();
 | 
			
		||||
@@ -100,12 +100,12 @@ final class PhabricatorProjectProfileMenuItem
 | 
			
		||||
 | 
			
		||||
    $picture = $project->getProfileImageURI();
 | 
			
		||||
    $name = $this->getDisplayName($config);
 | 
			
		||||
    $href = $project->getURI();
 | 
			
		||||
    $uri = $project->getURI();
 | 
			
		||||
 | 
			
		||||
    $item = $this->newItem()
 | 
			
		||||
      ->setHref($href)
 | 
			
		||||
    $item = $this->newItemView()
 | 
			
		||||
      ->setURI($uri)
 | 
			
		||||
      ->setName($name)
 | 
			
		||||
      ->setProfileImage($picture);
 | 
			
		||||
      ->setIconImage($picture);
 | 
			
		||||
 | 
			
		||||
    return array(
 | 
			
		||||
      $item,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user