diff --git a/app/controllers/contacts_controller.rb b/app/controllers/contacts_controller.rb index 9947d5b..c1a87e0 100644 --- a/app/controllers/contacts_controller.rb +++ b/app/controllers/contacts_controller.rb @@ -2,22 +2,11 @@ class ContactsController < ApplicationController layout :select_layout def index - @contact_pages = Paginator.new(self, Contact.count("customer_id = #{logged_user}"), CDF::CONFIG[:contacts_per_page], params['page']) - @contacts = Contact.find(:all, :conditions=>["customer_id = #{logged_user}"], :order=>['fname'], :limit=>CDF::CONFIG[:contacts_per_page], :offset=>@contact_pages.current.offset) - - if params["mode"] == "groups" - if params["id"] and not params["id"].nil? and not params["id"] == '' - @group_id = params["id"].to_i - @contacts_for_group = Hash.new - for contact in @contacts - @contacts_for_group[contact.id] = 0 # initialize - for gr in contact.groups - if gr.contact_group_id.to_i == @group_id - @contacts_for_group[contact.id] = 1 # checked - end - end - end - end + if params[:letter] && params[:letter].any? + @contacts = Contact.for_customer(logged_user).letter(params[:letter]).paginate :page => params[:page], + :per_page => CDF::CONFIG[:contacts_per_page] + else + @contacts = Contact.for_customer(logged_user).paginate :page => params[:page], :per_page => CDF::CONFIG[:contacts_per_page] end end diff --git a/app/models/contact.rb b/app/models/contact.rb index 877473a..a181864 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -25,6 +25,9 @@ class Contact < ActiveRecord::Base } result end + + named_scope :for_customer, lambda{ |customer_id| {:conditions => {:customer_id => customer_id}} } + named_scope :letter, lambda{ |letter| {:conditions => ["contacts.fname LIKE ?", "#{letter}%"]} } def Contact.find_by_user_letter(user_id, letter) find_by_sql("select * from contacts where customer_id=#{user_id} and substr(UPPER(fname),1,1) = '#{letter}' order by fname") diff --git a/app/views/contacts/index.html.erb b/app/views/contacts/index.html.erb index 588081f..4860ee4 100644 --- a/app/views/contacts/index.html.erb +++ b/app/views/contacts/index.html.erb @@ -29,17 +29,15 @@ - + <% if @mode == "choose" %>
- <% - letters = CDF::CONFIG[:contact_letters] - for letterIndex in 0...letters.size - letter = letters[letterIndex] %> - <%= link_to(letter, :controller=>"contacts", :action=>"listLetter", :id=>letterIndex, :params=>{"mode"=>@mode, "group_id"=>(@group_id ? @group_id : nil)}) %> - <% end %> -      <%= link_to(_('Show all'), :controller=>"contact", :action=>"list", :id=>(@group_id ? @group_id : nil), :params=>{"mode"=>@mode})%> + <% CDF::CONFIG[:contact_letters].each do |letter| %> + <%= link_to letter, contacts_path(:letter => letter) %> + <% end %> +       + <%= link_to _('Show all'), contacts_path %>
<%= pagination_links @contact_pages, {}, :mode => @mode %><%= will_paginate @contacts %>