Browse Source

Expose mass-add members

Maarten van den Berg 7 years ago
parent
commit
f877571c8e

+ 5 - 7
app/controllers/groups_controller.rb

@@ -1,10 +1,10 @@
1 1
 class GroupsController < ApplicationController
2 2
   include GroupsHelper
3
-  before_action :set_group, only: [:show, :edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup]
3
+  before_action :set_group, only: [:show, :edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup, :mass_add_members, :process_mass_add_members]
4 4
   before_action :set_default_subgroup, only: [:update_default_subgroup, :destroy_default_subgroup]
5
-  before_action :require_admin!, only: [:index, :process_mass_add_members, :mass_add_members]
5
+  before_action :require_admin!, only: [:index]
6 6
   before_action :require_membership!, only: [:show]
7
-  before_action :require_leader!, only: [:edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup]
7
+  before_action :require_leader!, only: [:edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup, :process_mass_add_members, :mass_add_members]
8 8
 
9 9
   # GET /groups
10 10
   # GET /groups.json
@@ -102,23 +102,21 @@ class GroupsController < ApplicationController
102 102
   end
103 103
 
104 104
   def mass_add_members
105
-    @group = Group.find(params[:group_id])
106 105
   end
107 106
 
108 107
   def process_mass_add_members
109
-    @group = Group.find(params[:group_id])
110 108
     require 'csv'
111 109
     uploaded_io = params[:spreadsheet]
112 110
     result = Person.from_csv(uploaded_io.read)
113 111
 
114 112
     result.each do |p|
115 113
       m = Member.find_by(person: p, group: @group)
116
-      if not m
114
+      unless m
117 115
         m = Member.new(person: p, group: @group)
118 116
         m.save!
119 117
       end
120 118
     end
121
-    flash_message(:success, "#{result.count} people added to group")
119
+    flash_message(:success, I18n.t('groups.mass_add_success', count: result.count))
122 120
     redirect_to group_members_path(@group)
123 121
   end
124 122
 

+ 1 - 0
app/views/groups/edit.html.haml

@@ -59,3 +59,4 @@
59 59
     .btn-group
60 60
       = link_to t(:back), @group, class: 'btn btn-default'
61 61
       = link_to t('activities.mass_import_short'), group_activities_mass_new_path(@group), class: 'btn btn-default'
62
+      = link_to t('groups.mass_add_short'), group_mass_add_path(@group), class: 'btn btn-default'

+ 14 - 5
app/views/groups/mass_add_members.html.haml

@@ -2,8 +2,17 @@
2 2
   .row
3 3
     .col-md-12
4 4
       %h1
5
-        Mass-adding members to
6
-        = @group.name
7
-      = form_tag("/groups/#{@group.id}/mass_add", method: 'post', multipart: true) do
8
-        = file_field_tag 'spreadsheet'
9
-        = submit_tag
5
+        = t 'groups.mass_add_members', group: @group.name
6
+  .row
7
+    .col-md-12
8
+      %p
9
+        = t 'groups.mass_add_explanation'
10
+      = link_to asset_path('batch_persons.csv'), class: 'btn btn-default' do
11
+        = t :download
12
+  .row
13
+    .col-md-12
14
+      = form_tag(group_mass_add_path(@group), method: 'post', multipart: true) do
15
+        .form-group
16
+          = file_field_tag 'spreadsheet', required: true
17
+        .form-group
18
+          = submit_tag("Go!", class: 'btn btn-warning', confirm: t(:areyousure))

+ 5 - 0
config/locales/groups/en.yml

@@ -22,6 +22,11 @@ en:
22 22
     member_updated: "Member updated."
23 23
     member_removed: "%{name} was removed from the group."
24 24
 
25
+    mass_add_members: "Adding multiple members to %{group}"
26
+    mass_add_short: "Import members"
27
+    mass_add_explanation: "Download the example file using the link below, and fill in this file in the format shown. Upload the completed form using the form at the bottom of this page. Note that all data fields will be ignored if a user with the same email address exists. Date of birth is not required."
28
+    mass_add_success: "%{count} members added to group."
29
+
25 30
     member:
26 31
       add: "New Member"
27 32
       adding: "Add member to %{name}"

+ 5 - 0
config/locales/groups/nl.yml

@@ -22,6 +22,11 @@ nl:
22 22
     member_updated: "Lid bijgewerkt."
23 23
     member_removed: "%{name} is verwijderd uit de groep."
24 24
 
25
+    mass_add_members: "Meerdere leden toevoegen aan %{group}"
26
+    mass_add_short: "Leden importeren"
27
+    mass_add_explanation: "Download het voorbeeldbestand via de link hieronder, vul de velden in in het formaat zoals aangegeven, en upload het ingevulde formulier via de knop onderaan. Merk op dat aangepaste velden worden genegeerd als al een gebruiker met hetzelfde e-mailadres bestaat. Geboortedatum is niet verplicht."
28
+    mass_add_success: "%{count} leden toegevoegd aan de groep."
29
+
25 30
     member:
26 31
       add: "Lid toevoegen"
27 32
       adding: "Lid toevoegen aan %{name}"

+ 2 - 1
public/batch_persons.csv

@@ -1 +1,2 @@
1
-first_name,infix,last_name,birth_date,email,organizers
1
+first_name,infix,last_name,birth_date,email
2
+Gekke,,Henkie,1-1-1997,gekkehenkie@maartenberg.nl