class Muck::FriendsController < ApplicationController unloadable before_filter :login_required, :except => [:index] before_filter :get_user_and_target, :except => [:index] def index @user = User.find(params[:user_id]) rescue current_user respond_to do |format| format.html { render :template => 'friends/index' } end end def create respond_to do |format| if Friend.make_friends(@user, @target) friend = current_user.reload.friend_of?(@target) format.html do if GlobalConfig.enable_following flash[:notice] = t('muck.friends.you_are_now_following', :user => @target.display_name) else flash[:notice] = t('muck.friends.friend_request_sent') end redirect_to profile_path(@target) end format.js { render(:update) {|page| page.replace make_id(@user, @target), friend_link(@user, @target)}} else if GlobalConfig.enable_following message = t('muck.friends.problem_adding_follow', :user => @target.display_name) else message = t('muck.friends.problem_sending_friend_request', :user => @target.display_name) end format.html do flash[:notice] = message redirect_to profile_path(@target) end format.js {render(:update){|page| page.alert message}} end end end def destroy success = @user.drop_friend(@target) if GlobalConfig.enable_friending if success message = t('muck.friends.removed_friendship', :user => @target.display_name) else message = t('muck.friends.removed_friendship_error', :user => @target.display_name) end elsif GlobalConfig.enable_following if success message = t('muck.friends.stopped_following', :user => @target.display_name) else message = t('muck.friends.removed_following_error', :user => @target.display_name) end end respond_to do |format| format.html do flash[:notice] = message redirect_to profile_path(@target) end format.js do if success render(:update){|page| page.replace make_id(@user, @target), friend_link(@user, @target)} else format.js {render(:update){|page| page.alert message}} end end end end protected def make_id(user, target) user.dom_id(target.dom_id + '_friendship_') end def get_user_and_target if admin? && params[:user_id] @user = User.find(params[:user_id]) rescue current_user else @user = current_user end @target = User.find(params[:id]) end end