Project

General

Profile

Feature #13767 » issue_13767.patch

David Escala, 2016-12-14 13:18

View differences:

app/controllers/roles_controller.rb
23 23
  before_filter :find_role, :only => [:show, :edit, :update, :destroy]
24 24
  accept_api_auth :index, :show
25 25

  
26
  include RolesHelper
27

  
26 28
  require_sudo_mode :create, :update, :destroy
27 29

  
28 30
  def index
......
106 108
      flash[:notice] = l(:notice_successful_update)
107 109
      redirect_to roles_path
108 110
    end
111
    respond_to do |format|
112
      format.html
113
      format.csv  { send_data(permissions_to_csv(@roles, @permissions), :type => 'text/csv; header=present', :filename => 'permissions_export.csv') }
114
    end
109 115
  end
110 116

  
111 117
  private
app/helpers/roles_helper.rb
18 18
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19 19

  
20 20
module RolesHelper
21
  def permissions_to_csv(roles, permissions)
22
    Redmine::Export::CSV.generate do |csv|
23
      # csv header fields
24
      headers = [l(:field_cvs_module), l(:label_permissions)] + roles.collect {|role| role.name}
25
      csv << headers
26
      # csv lines
27
      permissions.each do |p|
28
        names = [
29
          l_or_humanize(p.project_module.to_s, :prefix => 'project_module_'),
30
          l_or_humanize(p.name, :prefix => 'permission_').to_s,
31
        ]
32
        fields = names + roles.collect do |role|
33
          if role.setable_permissions.include?(p)
34
            role.permissions.include?(p.name) ? 1 : 0
35
          else
36
            ""
37
          end
38

  
39
        end
40
        csv << fields
41
      end
42
    end
43
  end
21 44
end
app/views/roles/permissions.html.erb
54 54
</tbody>
55 55
</table>
56 56
</div>
57
<% other_formats_links do |f| %>
58
    <%= f.link_to 'CSV' %>
59
<% end %>
57 60
<p><%= check_all_links 'permissions_form' %></p>
58 61
<p><%= submit_tag l(:button_save) %></p>
59 62
<% end %>
(1-1/4)