~ubuntu-branches/ubuntu/wily/phabricator/wily

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php

final class PhabricatorHomeApplication extends PhabricatorApplication {

  const DASHBOARD_DEFAULT = 'dashboard:default';

  public function getBaseURI() {
    return '/home/';
  }

  public function getName() {
    return pht('Home');
  }

  public function getShortDescription() {
    return pht('Command Center');
  }

  public function getIconName() {
    return 'home';
  }

  public function getFontIcon() {
    return 'fa-home';
  }

  public function getRoutes() {
    return array(
      '/' => 'PhabricatorHomeMainController',
      '/(?P<only>home)/' => 'PhabricatorHomeMainController',
      '/home/' => array(
        'create/' => 'PhabricatorHomeQuickCreateController',
      ),
    );
  }

  public function isLaunchable() {
    return false;
  }

  public function canUninstall() {
    return false;
  }

  public function getApplicationOrder() {
    return 9;
  }

  public function buildMainMenuItems(
    PhabricatorUser $user,
    PhabricatorController $controller = null) {

    $items = array();

    if ($user->isLoggedIn() && $user->isUserActivated()) {
      $create_id = celerity_generate_unique_node_id();
      Javelin::initBehavior(
        'aphlict-dropdown',
        array(
          'bubbleID' => $create_id,
          'dropdownID' => 'phabricator-quick-create-menu',
          'local' => true,
          'desktop' => true,
          'right' => true,
        ));

      $item = id(new PHUIListItemView())
        ->setName(pht('Create New...'))
        ->setIcon('fa-plus')
        ->addClass('core-menu-item')
        ->setHref('/home/create/')
        ->addSigil('quick-create-menu')
        ->setID($create_id)
        ->setAural(pht('Quick Create'))
        ->setOrder(300);
      $items[] = $item;
    }

    return $items;
  }

  public function loadAllQuickCreateItems(PhabricatorUser $viewer) {
    $applications = id(new PhabricatorApplicationQuery())
      ->setViewer($viewer)
      ->withInstalled(true)
      ->execute();

    $items = array();
    foreach ($applications as $application) {
      $app_items = $application->getQuickCreateItems($viewer);
      foreach ($app_items as $app_item) {
        $items[] = $app_item;
      }
    }

    return $items;
  }

  public function buildMainMenuExtraNodes(
    PhabricatorUser $viewer,
    PhabricatorController $controller = null) {

    $items = $this->loadAllQuickCreateItems($viewer);

    $view = new PHUIListView();
    $view->newLabel(pht('Create New...'));
    foreach ($items as $item) {
      $view->addMenuItem($item);
    }

    return phutil_tag(
      'div',
      array(
        'id' => 'phabricator-quick-create-menu',
        'class' => 'phabricator-main-menu-dropdown phui-list-sidenav',
        'style' => 'display: none',
      ),
      $view);
  }

}