| 
				
			 | 
			
			
				@@ -1,9 +1,10 @@ 
			 | 
		
	
		
			
			| 
				1
			 | 
			
				1
			 | 
			
			
				 class GroupsController < ApplicationController 
			 | 
		
	
		
			
			| 
				2
			 | 
			
				2
			 | 
			
			
				   include GroupsHelper 
			 | 
		
	
		
			
			| 
				3
			 | 
			
				
			 | 
			
			
				-  before_action :set_group, only: [:show, :edit, :update, :destroy] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				3
			 | 
			
			
				+  before_action :set_group, only: [:show, :edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				4
			 | 
			
			
				+  before_action :set_default_subgroup, only: [:update_default_subgroup, :destroy_default_subgroup] 
			 | 
		
	
		
			
			| 
				4
			 | 
			
				5
			 | 
			
			
				   before_action :require_admin!, only: [:index, :process_mass_add_members, :mass_add_members] 
			 | 
		
	
		
			
			| 
				5
			 | 
			
				6
			 | 
			
			
				   before_action :require_membership!, only: [:show] 
			 | 
		
	
		
			
			| 
				6
			 | 
			
				
			 | 
			
			
				-  before_action :require_leader!, only: [:edit, :update, :destroy] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				7
			 | 
			
			
				+  before_action :require_leader!, only: [:edit, :update, :destroy, :create_default_subgroup, :update_default_subgroup, :destroy_default_subgroup] 
			 | 
		
	
		
			
			| 
				7
			 | 
			
				8
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				8
			 | 
			
				9
			 | 
			
			
				   # GET /groups 
			 | 
		
	
		
			
			| 
				9
			 | 
			
				10
			 | 
			
			
				   # GET /groups.json 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -45,6 +46,7 @@ class GroupsController < ApplicationController 
			 | 
		
	
		
			
			| 
				45
			 | 
			
				46
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				46
			 | 
			
				47
			 | 
			
			
				   # GET /groups/1/edit 
			 | 
		
	
		
			
			| 
				47
			 | 
			
				48
			 | 
			
			
				   def edit 
			 | 
		
	
		
			
			| 
				
			 | 
			
				49
			 | 
			
			
				+    @defaultsubgroup = DefaultSubgroup.new 
			 | 
		
	
		
			
			| 
				48
			 | 
			
				50
			 | 
			
			
				   end 
			 | 
		
	
		
			
			| 
				49
			 | 
			
				51
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				50
			 | 
			
				52
			 | 
			
			
				   # POST /groups 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -77,6 +79,7 @@ class GroupsController < ApplicationController 
			 | 
		
	
		
			
			| 
				77
			 | 
			
				79
			 | 
			
			
				         } 
			 | 
		
	
		
			
			| 
				78
			 | 
			
				80
			 | 
			
			
				         format.json { render :show, status: :ok, location: @group } 
			 | 
		
	
		
			
			| 
				79
			 | 
			
				81
			 | 
			
			
				       else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				82
			 | 
			
			
				+        @defaultsubgroup = DefaultSubgroup.new 
			 | 
		
	
		
			
			| 
				80
			 | 
			
				83
			 | 
			
			
				         format.html { render :edit } 
			 | 
		
	
		
			
			| 
				81
			 | 
			
				84
			 | 
			
			
				         format.json { render json: @group.errors, status: :unprocessable_entity } 
			 | 
		
	
		
			
			| 
				82
			 | 
			
				85
			 | 
			
			
				       end 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -117,14 +120,55 @@ class GroupsController < ApplicationController 
			 | 
		
	
		
			
			| 
				117
			 | 
			
				120
			 | 
			
			
				     redirect_to group_members_path(@group) 
			 | 
		
	
		
			
			| 
				118
			 | 
			
				121
			 | 
			
			
				   end 
			 | 
		
	
		
			
			| 
				119
			 | 
			
				122
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				123
			 | 
			
			
				+  # POST /groups/:id/default_subgroups 
			 | 
		
	
		
			
			| 
				
			 | 
			
				124
			 | 
			
			
				+  def create_default_subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				125
			 | 
			
			
				+    @defaultsubgroup = DefaultSubgroup.new(default_subgroup_params) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				126
			 | 
			
			
				+    @defaultsubgroup.group = @group 
			 | 
		
	
		
			
			| 
				
			 | 
			
				127
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				128
			 | 
			
			
				+    if @defaultsubgroup.save 
			 | 
		
	
		
			
			| 
				
			 | 
			
				129
			 | 
			
			
				+      flash_message(:success, I18n.t('defaultsubgroups.created')) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				130
			 | 
			
			
				+      redirect_to edit_group_path(@group) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				131
			 | 
			
			
				+    else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				132
			 | 
			
			
				+      flash_message(:danger, I18n.t('defaultsubgroups.create_failed')) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				133
			 | 
			
			
				+      render :edit 
			 | 
		
	
		
			
			| 
				
			 | 
			
				134
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				135
			 | 
			
			
				+  end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				136
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				137
			 | 
			
			
				+  # PATCH /groups/:id/default_subgroups/:default_subgroup_id 
			 | 
		
	
		
			
			| 
				
			 | 
			
				138
			 | 
			
			
				+  def update_default_subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				139
			 | 
			
			
				+    if @defaultsubgroup.update(default_subgroup_params) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				140
			 | 
			
			
				+      flash_message(:success, I18n.t('defaultsubgroups.updated')) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				141
			 | 
			
			
				+      redirect_to edit_group_path(@group) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				142
			 | 
			
			
				+    else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				143
			 | 
			
			
				+      flash_message(:danger, I18n.t('defaultsubgroups.update_failed')) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				144
			 | 
			
			
				+      render :edit 
			 | 
		
	
		
			
			| 
				
			 | 
			
				145
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				146
			 | 
			
			
				+  end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				147
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				148
			 | 
			
			
				+  # DELETE /groups/:id/default_subgroups/:default_subgroup_id 
			 | 
		
	
		
			
			| 
				
			 | 
			
				149
			 | 
			
			
				+  def destroy_default_subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				150
			 | 
			
			
				+    @defaultsubgroup.destroy 
			 | 
		
	
		
			
			| 
				
			 | 
			
				151
			 | 
			
			
				+    flash_message(:info, I18n.t('defaultsubgroups.destroyed')) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				152
			 | 
			
			
				+    redirect_to edit_group_path(@group) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				153
			 | 
			
			
				+  end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				154
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				120
			 | 
			
				155
			 | 
			
			
				   private 
			 | 
		
	
		
			
			| 
				121
			 | 
			
				156
			 | 
			
			
				     # Use callbacks to share common setup or constraints between actions. 
			 | 
		
	
		
			
			| 
				122
			 | 
			
				157
			 | 
			
			
				     def set_group 
			 | 
		
	
		
			
			| 
				123
			 | 
			
				
			 | 
			
			
				-      @group = Group.find(params[:id]) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				158
			 | 
			
			
				+      @group = Group.find(params[:group_id] || params[:id]) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				159
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				160
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				161
			 | 
			
			
				+    # Retrieve DefaultSubgroup to update or delete 
			 | 
		
	
		
			
			| 
				
			 | 
			
				162
			 | 
			
			
				+    def set_default_subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				163
			 | 
			
			
				+      @defaultsubgroup = DefaultSubgroup.find(params[:default_subgroup_id]) 
			 | 
		
	
		
			
			| 
				124
			 | 
			
				164
			 | 
			
			
				     end 
			 | 
		
	
		
			
			| 
				125
			 | 
			
				165
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				126
			 | 
			
				166
			 | 
			
			
				     # Never trust parameters from the scary internet, only allow the white list through. 
			 | 
		
	
		
			
			| 
				127
			 | 
			
				167
			 | 
			
			
				     def group_params 
			 | 
		
	
		
			
			| 
				128
			 | 
			
				168
			 | 
			
			
				       params.require(:group).permit(:name) 
			 | 
		
	
		
			
			| 
				129
			 | 
			
				169
			 | 
			
			
				     end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				170
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				171
			 | 
			
			
				+    def default_subgroup_params 
			 | 
		
	
		
			
			| 
				
			 | 
			
				172
			 | 
			
			
				+      params.require(:default_subgroup).permit(:name, :is_assignable) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				173
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				130
			 | 
			
				174
			 | 
			
			
				 end 
			 |