Project

General

Profile

Feature #37996 ยป repository_sidebar_with_config_and_hooks.patch

Alexander Meindl, 2022-12-06 10:43

View differences:

app/helpers/application_helper.rb
141 141
    link_to text, url, html_options
142 142
  end
143 143

  
144
  def link_to_repository_buttons(repo, project)
145
    if User.current.allowed_to? :manage_repository, project
146
      link_to "(#{l :label_settings})",
147
              edit_repository_path(repo),
148
              title: l(:label_settings),
149
              class: 'icon-only icon-settings'
150
    end
151
  end
152

  
153
  def link_to_repository(repo, **options)
154
    name = options.delete(:name).presence || repo.name
155
    current_repo = options.delete :current_repo
156

  
157
    css_class = ['repository', repo.scm_name.downcase]
158
    css_class << 'selected' if current_repo && repo == current_repo
159

  
160
    link_to name,
161
            { controller: 'repositories',
162
              action: 'show',
163
              id: repo.project,
164
              repository_id: repo.identifier_param,
165
              rev: nil,
166
              path: nil }.merge(options),
167
            class: css_class.join(' ')
168
  end
169

  
144 170
  # Generates a link to a SCM revision
145 171
  # Options:
146 172
  # * :text - Link text (default to the formatted revision)
app/views/projects/settings/_repositories.html.erb
18 18
    <% @project.repositories.sort.each do |repository| %>
19 19
      <tr>
20 20
        <td class="name">
21
        <%= link_to repository.identifier,
22
              {:controller => 'repositories', :action => 'show',:id => @project, :repository_id => repository.identifier_param} if repository.identifier.present? %>
21
        <%= link_to_repository(repository) if repository.identifier.present? %>
23 22
        </td>
24 23
        <td><%= checked_image repository.is_default? %></td>
25 24
        <td><%= repository.scm_name %></td>
app/views/repositories/_sidebar.html.erb
1
<%= call_hook :view_repositories_sidebar_top, project: @project, repository: @repository %>
2

  
3
<% if @repositories.size > 1 %>
4
  <h3><%= l(:label_repository_plural) %></h3>
5
  <ul class="repositories">
6
    <% @repositories.sort.map do |repo| %>
7
    <li>
8
      <%= link_to_repository repo, current_repo: @repository %>
9
      <%= link_to_repository_buttons repo, @project %>
10
    </li>
11
    <% end %>
12
  </ul>
13
<% end %>
14

  
15
<%= call_hook :view_repositories_sidebar_bottom, project: @project, repository: @repository %>
app/views/repositories/show.html.erb
57 57
  <% end %>
58 58
<% end %>
59 59

  
60
<% if @repositories.size > 1 %>
61
  <% content_for :sidebar do %>
62
    <h3><%= l(:label_repository_plural) %></h3>
63
    <p>
64
      <%= @repositories.sort.collect {|repo|
65
          link_to repo.name, 
66
                  {:controller => 'repositories', :action => 'show',
67
                   :id => @project, :repository_id => repo.identifier_param, :rev => nil, :path => nil},
68
                  :class => 'repository' + (repo == @repository ? ' selected' : '')
69
        }.join('<br />').html_safe %>
70
    </p>
71
  <% end %>
60
<% content_for :sidebar do %>
61
  <%= render :partial => 'repositories/sidebar' %>
72 62
<% end %>
73 63

  
74 64
<% content_for :header_tags do %>
test/helpers/application_helper_test.rb
2211 2211
    end
2212 2212
  end
2213 2213

  
2214
  def test_link_to_repository
2215
    repo = Repository.find(11)
2216
    assert_equal '<a class="repository subversion" href="/projects/onlinestore/repository/11">Main repository</a>',
2217
                 link_to_repository(repo)
2218
  end
2219

  
2220
  def test_link_to_repository_with_identifier
2221
    repo = Repository.new identifier: 'foo', project: Project.find(2)
2222
    assert_equal '<a class="repository abstract" href="/projects/onlinestore/repository/foo">foo</a>',
2223
                 link_to_repository(repo)
2224
  end
2225

  
2226
  def test_link_to_repository_with_custom_name
2227
    repo = Repository.find(11)
2228
    assert_equal '<a class="repository subversion" href="/projects/onlinestore/repository/11">showme</a>',
2229
                 link_to_repository(repo, name: 'showme')
2230
  end
2231

  
2232
  def test_link_to_repository_with_select
2233
    repo = Repository.find(11)
2234
    assert_equal '<a class="repository subversion selected" href="/projects/onlinestore/repository/11">Main repository</a>',
2235
                 link_to_repository(repo, current_repo: repo)
2236
  end
2237

  
2214 2238
  private
2215 2239

  
2216 2240
  def wiki_links_with_special_characters
    (1-1/1)