136 lines
4.1 KiB
Ruby
Executable file
136 lines
4.1 KiB
Ruby
Executable file
require 'tempfile'
|
|
|
|
class ContactsController < ApplicationController
|
|
|
|
before_filter :check_current_user,:selected_folder, :get_current_folders
|
|
|
|
before_filter :get_contacts, :only => [:index]
|
|
|
|
before_filter :prepare_ops_buttons, :prepare_export_import_buttons,:only => [:index]
|
|
|
|
#theme :theme_resolver
|
|
|
|
def index
|
|
|
|
end
|
|
|
|
def ops
|
|
if params["create_new"]
|
|
redirect_to(new_contact_path)
|
|
return
|
|
end
|
|
if !params["cids"]
|
|
flash[:warning] = t(:no_selected,:scope=>:contact)
|
|
else
|
|
if params["delete_selected"]
|
|
params["cids"].each do |id|
|
|
@current_user.contacts.find_by_id(id).destroy
|
|
end
|
|
elsif params["compose_to_selected"]
|
|
redirect_to :controller=>'messages',:action=>'compose',:cids=>params["cids"]
|
|
return
|
|
end
|
|
end
|
|
redirect_to(contacts_path)
|
|
end
|
|
|
|
#problem http://binary10ve.blogspot.com/2011/05/migrating-to-rails-3-got-stuck-with.html
|
|
#def destroy
|
|
# @current_user.contacts.find(params[:id]).destroy
|
|
# redirect_to(contacts_path)
|
|
#end
|
|
|
|
def new
|
|
@contact = Contact.new
|
|
end
|
|
|
|
def edit
|
|
@contact = @current_user.contacts.find(params[:id])
|
|
render 'edit'
|
|
end
|
|
|
|
def create
|
|
@contact = @current_user.contacts.build(params[:contact])
|
|
if @contact.valid?
|
|
@contact.save
|
|
flash[:success] = t(:was_created,:scope=>:contact)
|
|
redirect_to(contacts_path)
|
|
else
|
|
render 'new'
|
|
end
|
|
end
|
|
|
|
def update
|
|
@contact = @current_user.contacts.find(params[:id])
|
|
if @contact.update_attributes(params[:contact])
|
|
redirect_to(contacts_path)
|
|
else
|
|
render 'edit'
|
|
end
|
|
end
|
|
|
|
def external
|
|
if params["export"]
|
|
redirect_to :action => 'export'
|
|
return
|
|
elsif params["import"]
|
|
begin
|
|
raise t(:no_file_chosen,:scope=>:common) if not params[:upload]
|
|
raise t(:no_tmp_dir,:scope=>:common) if not File.exists?($defaults["msg_upload_dir"])
|
|
tmp_file = Tempfile.new($defaults["contact_tmp_filename"],$defaults["msg_upload_dir"])
|
|
tmp_file.write(params[:upload][:datafile].read)
|
|
tmp_file.flush
|
|
tmp_file.rewind
|
|
tmp_file.readlines.each do |line|
|
|
next if line =~ /^#/
|
|
Contact.import(@current_user,line)
|
|
end
|
|
rescue ActiveRecord::RecordInvalid => e
|
|
flash[:error] = {:title => e.to_s,:info => e.record.inspect + e.record.errors.inspect}
|
|
rescue Exception => e
|
|
flash[:error] = e.to_s
|
|
else
|
|
flash[:success] = t(:were_imported,:scope=>:contact)
|
|
end
|
|
end
|
|
redirect_to :action => 'index'
|
|
end
|
|
|
|
def export
|
|
contacts = @current_user.contacts
|
|
s = ""
|
|
contacts.each do |c|
|
|
s += c.export + "\r\n"
|
|
end
|
|
headers['Content-type'] = "text/csv"
|
|
headers['Content-Disposition'] = %(attachment; filename="contacts.csv")
|
|
render :text => s
|
|
end
|
|
|
|
####################################### protected section ################################
|
|
|
|
protected
|
|
|
|
def prepare_ops_buttons
|
|
@buttons = []
|
|
@buttons << {:text => 'compose_to_selected',:scope=> 'contact', :image => 'email.png'}
|
|
@buttons << {:text => 'create_new',:scope=> 'contact', :image => 'plus.png'}
|
|
@buttons << {:text => 'delete_selected',:scope=>'contact',:image => 'minus.png'}
|
|
end
|
|
|
|
def prepare_export_import_buttons
|
|
@ei_buttons = []
|
|
@ei_buttons << {:text => 'import',:scope=>'contact',:image => 'right.png'}
|
|
@ei_buttons << {:text => 'export',:scope=>'contact',:image => 'left.png'}
|
|
end
|
|
|
|
####################################### private section ##################################
|
|
|
|
private
|
|
|
|
def get_contacts
|
|
@contacts = Contact.getPageForUser(@current_user,params[:page],params[:sort_field],params[:sort_dir])
|
|
end
|
|
|
|
end
|