class ProjectGroupsController

Public Instance Methods

create() click to toggle source
# File app/controllers/project_groups_controller.rb, line 3
def create
        @project_group = ProjectGroup.new(params[:project_group])
        access_level = params[:project_group][:access_level].to_i
        if access_level >= 3 then
                @project_group.project_administrator = true
        end
        if access_level >= 2 then
                @project_group.project_editor = true
        end
        if (user_signed_in?) && @project_group.project.administerable_by(current_user.id) then
                respond_to do |format|
                        if params[:project_group][:email].present? && params[:project_group][:email].length > 0 then
                                message = 'User added to project'
                                if @project_group.save
                                        if @project_group.user.nil? then
                                                if User.find_by_email(params[:project_group][:email]).nil? then
                                                        User.invite!(:email => params[:project_group][:email])
                                                        message = 'Invitation issued successfully.'
                                                        @project_group.user = User.find_by_email(params[:project_group][:email])
                                                        @project_group.save
                                                else
                                                        @project_group.user = User.find_by_email(params[:project_group][:email])
                                                        @project_group.save
                                                        UserMailer.sharing_notification(@project_group).deliver
                                                        logger.debug("Email sent from here?")
                                                end
                                        else
                                                UserMailer.sharing_notification(@project_group).deliver
                                                logger.debug("Email sent from there?")
                                        end
                                        flash[:notice] = message
                                        format.html { redirect_to :controller => 'projects', :action => 'share', :id => @project_group.project.slug }
                                        format.json { render json: @project_group, status: :created, location: @project_group }
                                else
                                        format.html { render action: "new" }
                                        format.json { render json: @project_group.errors, status: :unprocessable_entity }
                                end
                        else
                                flash[:notice] = "Please enter an email address"
                                format.html { redirect_to :controller => 'projects', :action => 'share', :id => @project_group.project.slug }
                                format.json { render json: @project_group, status: :created, location: @project_group }
                        end
                end                  
        else
                render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false)
        end
        
end
destroy() click to toggle source
# File app/controllers/project_groups_controller.rb, line 82
def destroy
        @project_group = ProjectGroup.find(params[:id])
        if (user_signed_in?) && @project_group.project.administerable_by(current_user.id) then
                user = @project_group.user
                project = @project_group.project
                @project_group.destroy
                respond_to do |format|
                        flash[:notice] = 'Access removed'
                        UserMailer.project_access_removed_notification(user, project).deliver
                        format.html { redirect_to :controller => 'projects', :action => 'share', :id => @project_group.project.slug }
                        format.json { head :no_content }
                end
        else
                render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false)
        end
end
update() click to toggle source
# File app/controllers/project_groups_controller.rb, line 52
def update
@project_group = ProjectGroup.find(params[:id])
access_level = params[:project_group][:access_level].to_i
        if access_level >= 3 then
                @project_group.project_administrator = true
        else
                @project_group.project_administrator = false
        end
        if access_level >= 2 then
                @project_group.project_editor = true
        else
                @project_group.project_editor = false
        end
if (user_signed_in?) && @project_group.project.administerable_by(current_user.id) then
                respond_to do |format|
                        if @project_group.update_attributes(params[:project_group])
                                flash[:notice] = 'Sharing details successfully updated.'
                                UserMailer.permissions_change_notification(@project_group).deliver
                                format.html { redirect_to :controller => 'projects', :action => 'share', :id => @project_group.project.slug }
                                format.json { head :no_content }
                        else
                                format.html { render action: "edit" }
                                format.json { render json: @project_group.errors, status: :unprocessable_entity }
                         end
                end
else
                render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false)
        end
end