File: app/controllers/groups_controller.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  class: GroupsController#18
inherits from
  ApplicationController   
has properties
method: index #27
method: show #38
method: new #49
method: edit #59
method: create #65
method: update #84
method: destroy #101
method: add_users #111
method: remove_user #126
method: autocomplete_for_user #135
method: edit_membership #141
method: destroy_membership #164

Class Hierarchy

Code

   1  # Redmine - project management software
   2  # Copyright (C) 2006-2011  Jean-Philippe Lang
   3  #
   4  # This program is free software; you can redistribute it and/or
   5  # modify it under the terms of the GNU General Public License
   6  # as published by the Free Software Foundation; either version 2
   7  # of the License, or (at your option) any later version.
   8  #
   9  # This program is distributed in the hope that it will be useful,
  10  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  # GNU General Public License for more details.
  13  #
  14  # You should have received a copy of the GNU General Public License
  15  # along with this program; if not, write to the Free Software
  16  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  17 
  18  class GroupsController < ApplicationController
  19    layout 'admin'
  20 
  21    before_filter :require_admin
  22 
  23    helper :custom_fields
  24 
  25    # GET /groups
  26    # GET /groups.xml
  27    def index
  28      @groups = Group.find(:all, :order => 'lastname')
  29 
  30      respond_to do |format|
  31        format.html # index.html.erb
  32        format.xml  { render :xml => @groups }
  33      end
  34    end
  35 
  36    # GET /groups/1
  37    # GET /groups/1.xml
  38    def show
  39      @group = Group.find(params[:id])
  40 
  41      respond_to do |format|
  42        format.html # show.html.erb
  43        format.xml  { render :xml => @group }
  44      end
  45    end
  46 
  47    # GET /groups/new
  48    # GET /groups/new.xml
  49    def new
  50      @group = Group.new
  51 
  52      respond_to do |format|
  53        format.html # new.html.erb
  54        format.xml  { render :xml => @group }
  55      end
  56    end
  57 
  58    # GET /groups/1/edit
  59    def edit
  60      @group = Group.find(params[:id], :include => :projects)
  61    end
  62 
  63    # POST /groups
  64    # POST /groups.xml
  65    def create
  66      @group = Group.new(params[:group])
  67 
  68      respond_to do |format|
  69        if @group.save
  70          format.html {
  71            flash[:notice] = l(:notice_successful_create)
  72            redirect_to(params[:continue] ? new_group_path : groups_path)
  73          }
  74          format.xml  { render :xml => @group, :status => :created, :location => @group }
  75        else
  76          format.html { render :action => "new" }
  77          format.xml  { render :xml => @group.errors, :status => :unprocessable_entity }
  78        end
  79      end
  80    end
  81 
  82    # PUT /groups/1
  83    # PUT /groups/1.xml
  84    def update
  85      @group = Group.find(params[:id])
  86 
  87      respond_to do |format|
  88        if @group.update_attributes(params[:group])
  89          flash[:notice] = l(:notice_successful_update)
  90          format.html { redirect_to(groups_path) }
  91          format.xml  { head :ok }
  92        else
  93          format.html { render :action => "edit" }
  94          format.xml  { render :xml => @group.errors, :status => :unprocessable_entity }
  95        end
  96      end
  97    end
  98 
  99    # DELETE /groups/1
 100    # DELETE /groups/1.xml
 101    def destroy
 102      @group = Group.find(params[:id])
 103      @group.destroy
 104 
 105      respond_to do |format|
 106        format.html { redirect_to(groups_url) }
 107        format.xml  { head :ok }
 108      end
 109    end
 110 
 111    def add_users
 112      @group = Group.find(params[:id])
 113      users = User.find_all_by_id(params[:user_ids])
 114      @group.users << users if request.post?
 115      respond_to do |format|
 116        format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'users' }
 117        format.js {
 118          render(:update) {|page|
 119            page.replace_html "tab-content-users", :partial => 'groups/users'
 120            users.each {|user| page.visual_effect(:highlight, "user-#{user.id}") }
 121          }
 122        }
 123      end
 124    end
 125 
 126    def remove_user
 127      @group = Group.find(params[:id])
 128      @group.users.delete(User.find(params[:user_id])) if request.delete?
 129      respond_to do |format|
 130        format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'users' }
 131        format.js { render(:update) {|page| page.replace_html "tab-content-users", :partial => 'groups/users'} }
 132      end
 133    end
 134 
 135    def autocomplete_for_user
 136      @group = Group.find(params[:id])
 137      @users = User.active.not_in_group(@group).like(params[:q]).all(:limit => 100)
 138      render :layout => false
 139    end
 140 
 141    def edit_membership
 142      @group = Group.find(params[:id])
 143      @membership = Member.edit_membership(params[:membership_id], params[:membership], @group)
 144      @membership.save if request.post?
 145      respond_to do |format|
 146        if @membership.valid?
 147          format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'memberships' }
 148          format.js {
 149            render(:update) {|page|
 150              page.replace_html "tab-content-memberships", :partial => 'groups/memberships'
 151              page.visual_effect(:highlight, "member-#{@membership.id}")
 152            }
 153          }
 154        else
 155          format.js {
 156            render(:update) {|page|
 157              page.alert(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')))
 158            }
 159          }
 160        end
 161      end
 162    end
 163 
 164    def destroy_membership
 165      @group = Group.find(params[:id])
 166      Member.find(params[:membership_id]).destroy if request.post?
 167      respond_to do |format|
 168        format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'memberships' }
 169        format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'groups/memberships'} }
 170      end
 171    end
 172  end