dispatcher.js.coffee 5.23 KB
Newer Older
1 2
$ ->
  new Dispatcher()
3

4 5
class Dispatcher
  constructor: () ->
6 7 8 9
    @initSearch()
    @initPageScripts()

  initPageScripts: ->
10 11
    page = $('body').attr('data-page')

12 13 14
    unless page
      return false

15
    path = page.split(':')
16
    shortcut_handler = null
17
    switch page
18
      when 'projects:issues:index'
19
        Issues.init()
20
        Issuable.init()
21
        shortcut_handler = new ShortcutsNavigation()
22 23
      when 'projects:issues:show'
        new Issue()
24
        shortcut_handler = new ShortcutsIssuable()
25
        new ZenMode()
ZJ van de Weg's avatar
ZJ van de Weg committed
26
        window.awardsHandler = new AwardsHandler()
27
      when 'projects:milestones:show', 'groups:milestones:show', 'dashboard:milestones:show'
28
        new Milestone()
29 30
      when 'dashboard:todos:index'
        new Todos()
31
      when 'projects:milestones:new', 'projects:milestones:edit'
32
        new ZenMode()
33
        new GLForm($('.milestone-form'))
34 35
      when 'groups:milestones:new'
        new ZenMode()
36 37
      when 'projects:compare:show'
        new Diff()
38
      when 'projects:issues:new','projects:issues:edit'
39
        shortcut_handler = new ShortcutsNavigation()
40
        new GLForm($('.issue-form'))
41
        new IssuableForm($('.issue-form'))
42
      when 'projects:merge_requests:new', 'projects:merge_requests:edit'
skv's avatar
skv committed
43
        new Diff()
44
        shortcut_handler = new ShortcutsNavigation()
45
        new GLForm($('.merge-request-form'))
46
        new IssuableForm($('.merge-request-form'))
47 48
      when 'projects:tags:new'
        new ZenMode()
49
        new GLForm($('.tag-form'))
50 51
      when 'projects:releases:edit'
        new ZenMode()
52
        new GLForm($('.release-form'))
skv's avatar
skv committed
53 54
      when 'projects:merge_requests:show'
        new Diff()
55
        shortcut_handler = new ShortcutsIssuable(true)
56
        new ZenMode()
ZJ van de Weg's avatar
ZJ van de Weg committed
57
        window.awardsHandler = new AwardsHandler()
skv's avatar
skv committed
58 59
      when "projects:merge_requests:diffs"
        new Diff()
60
        new ZenMode()
61 62
      when 'projects:merge_requests:index'
        shortcut_handler = new ShortcutsNavigation()
63
        Issuable.init()
64
      when 'dashboard:activity'
65
        new Activities()
66 67
      when 'dashboard:projects:starred'
        new Activities()
68
      when 'projects:commit:show'
69
        new Commit()
skv's avatar
skv committed
70
        new Diff()
71
        new ZenMode()
72 73 74
        shortcut_handler = new ShortcutsNavigation()
      when 'projects:commits:show'
        shortcut_handler = new ShortcutsNavigation()
75
      when 'projects:activity'
76
        shortcut_handler = new ShortcutsNavigation()
77
      when 'projects:show'
78
        shortcut_handler = new ShortcutsNavigation()
79

80
        new TreeView() if $('#tree-slider').length
81
      when 'groups:activity'
82
        new Activities()
83
      when 'groups:show'
84
        shortcut_handler = new ShortcutsNavigation()
85
      when 'groups:group_members:index'
86
        new GroupMembers()
87
        new UsersSelect()
88 89 90
      when 'projects:project_members:index'
        new ProjectMembers()
        new UsersSelect()
Stan Hu's avatar
Stan Hu committed
91
      when 'groups:new', 'groups:edit', 'admin:groups:edit', 'admin:groups:new'
92
        new GroupAvatar()
93
      when 'projects:tree:show'
94
        shortcut_handler = new ShortcutsNavigation()
95
        new TreeView()
96 97
      when 'projects:find_file:show'
        shortcut_handler = true
98
      when 'projects:blob:show', 'projects:blame:show'
99
        new LineHighlighter()
100
        shortcut_handler = new ShortcutsNavigation()
101
      when 'projects:labels:new', 'projects:labels:edit'
102
        new Labels()
103 104 105 106
      when 'projects:network:show'
        # Ensure we don't create a particular shortcut handler here. This is
        # already created, where the network graph is created.
        shortcut_handler = true
107 108
      when 'projects:forks:new'
        new ProjectFork()
109 110
      when 'projects:artifacts:browse'
        new BuildArtifacts()
111 112
      when 'projects:group_links:index'
        new GroupsSelect()
Phil Hughes's avatar
Phil Hughes committed
113
      when 'search:show'
Phil Hughes's avatar
Phil Hughes committed
114
        new Search()
115 116

    switch path.first()
117 118 119
      when 'admin'
        new Admin()
        switch path[1]
120 121
          when 'groups'
            new UsersSelect()
122 123
          when 'projects'
            new NamespaceSelect()
124
      when 'dashboard', 'root'
125
        shortcut_handler = new ShortcutsDashboardNavigation()
126 127
      when 'profiles'
        new Profile()
128
      when 'projects'
129
        new Project()
130
        new ProjectAvatar()
131
        switch path[1]
132 133
          when 'compare'
            shortcut_handler = new ShortcutsNavigation()
134 135 136 137 138 139 140
          when 'edit'
            shortcut_handler = new ShortcutsNavigation()
            new ProjectNew()
          when 'new'
            new ProjectNew()
          when 'show'
            new ProjectShow()
141 142 143
          when 'wikis'
            new Wikis()
            shortcut_handler = new ShortcutsNavigation()
144
            new ZenMode()
145
            new GLForm($('.wiki-form'))
146 147 148 149
          when 'snippets'
            shortcut_handler = new ShortcutsNavigation()
            new ZenMode() if path[2] == 'show'
          when 'labels', 'graphs'
150
            shortcut_handler = new ShortcutsNavigation()
151
          when 'project_members', 'deploy_keys', 'hooks', 'services', 'protected_branches'
152 153 154 155 156
            shortcut_handler = new ShortcutsNavigation()

    # If we haven't installed a custom shortcut handler, install the default one
    if not shortcut_handler
      new Shortcuts()
157

158
  initSearch: ->
159 160 161

    # Only when search form is present
    new SearchAutocomplete() if $('.search').length