# File vendor/plugins/sortable_column_headers/lib/sortable_column_headers.rb, line 15
  def add_to_sortable_columns(sortable_name, *args)
    if args.size >= 1
      if args.first.kind_of?(Class)
        model = args.first
        if args.size >= 2
          field = args[1].to_s
          if args.size == 2
            data_name = model.table_name+'.'+field
            self.sortable_column_header_data[assemble_sort_key(sortable_name, data_name)] = data_name
          else args.size == 3
            col_alias = args[2].to_s
            col_alias.chop! if (col_alias[-1].chr == '!')
            data_name = model.table_name+'.'+field
            self.sortable_column_header_data[assemble_sort_key(sortable_name, col_alias)] = data_name
          end
        else
          model.columns.each do |c|
            data_name = model.table_name+'.'+c.name
            self.sortable_column_header_data[assemble_sort_key(sortable_name, data_name)] = data_name
          end
        end

      # BEGIN - The "new" way ...
      elsif args.first.kind_of?(Hash)

        if !args.first[:model].blank? && args.first[:model].kind_of?(Class)
          model = args.first[:model]
          
          if !args.first[:field].blank?

            field = args.first[:field].to_s
            if args.first[:alias].blank?
              data_name = model.table_name+'.'+field
              self.sortable_column_header_data[assemble_sort_key(sortable_name, data_name)] = data_name
              prestore_sort(sortable_name, data_name, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
            else
              col_alias = args.first[:alias].to_s
              col_alias.chop! if (col_alias[-1].chr == '!')
              data_name = model.table_name+'.'+field
              self.sortable_column_header_data[assemble_sort_key(sortable_name, col_alias)] = data_name
              prestore_sort(sortable_name, col_alias, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
            end
          else
            model.columns.each do |c|
              data_name = model.table_name+'.'+c.name
              self.sortable_column_header_data[assemble_sort_key(sortable_name, data_name)] = data_name
              prestore_sort(sortable_name, data_name, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
            end

          end

        elsif !args.first[:field].blank?
          field = args.first[:field].to_s
          if !args.first[:alias].blank?
            col_alias = args.first[:alias].to_s
            col_alias.chop! if (col_alias[-1].chr == '!')
            self.sortable_column_header_data[assemble_sort_key(sortable_name, col_alias)] = field
            prestore_sort(sortable_name, col_alias, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
          else
            self.sortable_column_header_data[assemble_sort_key(sortable_name, field)] = field
            prestore_sort(sortable_name, data_name, self.sortable_column_header_data, *args) unless args.first[:sort_direction].blank?
          end
        else
          raise sch_err_msg
        end
      # END - The "new" way
        
      else
        field = args.first.to_s
        if args.size == 1
          self.sortable_column_header_data[assemble_sort_key(sortable_name, field)] = field
        else
          col_alias = args[1].to_s
          col_alias.chop! if (col_alias[-1].chr == '!')
          self.sortable_column_header_data[assemble_sort_key(sortable_name, col_alias)] = field
        end
      end
    else
      raise sch_err_msg
    end
  end