smart_search 0.0.4 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/config/database.yml +6 -0
- data/config/routes.rb +3 -2
- data/lib/smart_search/smart_search_engine.rb +10 -0
- data/lib/smart_search.rb +156 -78
- data/lib/smart_search_history.rb +7 -0
- data/lib/smart_search_ignore_word.rb +30 -0
- data/lib/smart_search_tag.rb +16 -0
- data/lib/smart_similarity.rb +133 -0
- data/lib/tasks/smart_search.rake +58 -0
- data/lib/tasks/testing.rake +27 -0
- data/test/test_document_multi_line.txt +6 -0
- data/test/test_document_one_line.txt +1 -0
- data/test/test_helper.rb +77 -0
- data/test/unit/01_smart_search_test.rb +81 -0
- data/test/unit/02_smart_search_similarity_test.rb +32 -0
- data/test/unit/03_smart_search_boost_test.rb +60 -0
- metadata +92 -35
- data/app/controllers/search_controller.rb +0 -46
- data/app/views/search/_results_small.html.erb +0 -25
- data/app/views/search/all.html.erb +0 -15
- data/app/views/search/results/_ansprechpartner.html.erb +0 -8
- data/app/views/search/results/_calendar_entry.html.erb +0 -29
- data/app/views/search/results/_company.html.erb +0 -25
- data/app/views/search/results/_concept.html.erb +0 -26
- data/app/views/search/results/_customer.html.erb +0 -51
- data/app/views/search/results/_family.html.erb +0 -1
- data/app/views/search/results/_firma.html.erb +0 -1
- data/app/views/search/results/_product.html.erb +0 -37
- data/app/views/search/results/_smart_document.html.erb +0 -8
- data/app/views/search/results/_topic.html.erb +0 -8
- data/app/views/search/results/_umsatz.html.erb +0 -1
- data/app/views/search/results/_umsatz_refactor.html.erb +0 -4
- data/app/views/search/results/_umsatz_storno.html.erb +0 -1
- data/app/views/search/results/_user.html.erb +0 -3
- data/app/views/search/results/_wiki_page.html.erb +0 -9
- data/lib/add_search_tags.rb +0 -8
data/test/test_helper.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'rubygems'
|
3
|
+
require 'bundler'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'active_support'
|
6
|
+
require 'active_record'
|
7
|
+
require 'active_model'
|
8
|
+
|
9
|
+
require "smart_search"
|
10
|
+
require "smart_search/smart_search_engine"
|
11
|
+
|
12
|
+
|
13
|
+
ActiveRecord::Base.establish_connection(:adapter => "mysql2", :database => "smart_search_test")
|
14
|
+
|
15
|
+
ActiveRecord::Schema.define(:version => 1) do
|
16
|
+
create_table :users do |t|
|
17
|
+
t.string :first_name
|
18
|
+
t.string :last_name
|
19
|
+
t.integer :office_id
|
20
|
+
t.date :birthday
|
21
|
+
t.timestamps
|
22
|
+
end
|
23
|
+
|
24
|
+
create_table :customers do |t|
|
25
|
+
t.string :first_name
|
26
|
+
t.string :last_name
|
27
|
+
t.integer :user_id
|
28
|
+
t.date :birthday
|
29
|
+
t.timestamps
|
30
|
+
end
|
31
|
+
|
32
|
+
create_table :offices do |t|
|
33
|
+
t.string :name
|
34
|
+
t.timestamps
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
end
|
39
|
+
#
|
40
|
+
# def drop_db
|
41
|
+
# ActiveRecord::Base.connection.tables.each do |table|
|
42
|
+
# ActiveRecord::Base.connection.drop_table(table)
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
class User < ActiveRecord::Base
|
47
|
+
|
48
|
+
belongs_to :office, :class_name => "Office", :foreign_key => "office_id"
|
49
|
+
|
50
|
+
smart_search :on => [:full_name, 'office.name']
|
51
|
+
|
52
|
+
def full_name
|
53
|
+
"#{self.first_name} #{self.last_name}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
class Customer < ActiveRecord::Base
|
58
|
+
smart_search :on => [:first_name, :last_name, 'user.full_name', 'user.office.name', :birthday]
|
59
|
+
|
60
|
+
def user
|
61
|
+
User.find(self.user_id)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
# This one has not included smart-search yet
|
67
|
+
class Office < ActiveRecord::Base
|
68
|
+
smart_search :on => [:name, :user_names]
|
69
|
+
|
70
|
+
def user_names
|
71
|
+
self.users.map {|u| u.full_name }.join(" ")
|
72
|
+
end
|
73
|
+
|
74
|
+
def users
|
75
|
+
User.find_all_by_office_id(self.id)
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require "test_helper"
|
3
|
+
class SmartSearchTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_simple_search_tags_should_be_saved
|
6
|
+
office_name = "Office1"
|
7
|
+
office = Office.create(:name => office_name)
|
8
|
+
|
9
|
+
Office.enable_similarity = false
|
10
|
+
|
11
|
+
assert_equal office, Office.find_by_tags(office_name).first
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_search_tags_should_cross_reference
|
15
|
+
|
16
|
+
office_name = "Office2"
|
17
|
+
|
18
|
+
office = Office.create(:name => office_name)
|
19
|
+
user = User.create(:first_name => "My", :last_name => "User", :office_id => office.id)
|
20
|
+
|
21
|
+
assert_equal user, User.find_by_tags("My User").first
|
22
|
+
assert_equal user, User.find_by_tags(office_name).first
|
23
|
+
|
24
|
+
# test that all is linked correctly
|
25
|
+
assert_equal user.office, office
|
26
|
+
assert_equal user.office_id, office.id
|
27
|
+
assert_equal 1, office.users.size
|
28
|
+
|
29
|
+
# test for loading user names to office
|
30
|
+
office.save
|
31
|
+
|
32
|
+
assert_equal office, Office.find_by_tags("My User").first
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_should_use_default_conditions
|
37
|
+
office_id_ok = 4
|
38
|
+
office_id_nok = 5
|
39
|
+
|
40
|
+
User.smart_search :on => [:full_name], :conditions => "office_id <> #{office_id_nok}", :force => true
|
41
|
+
User.enable_similarity = false
|
42
|
+
|
43
|
+
user = User.create(:first_name => "Unknown", :last_name => "User", :office_id => office_id_nok)
|
44
|
+
user = User.create(:first_name => "Public", :last_name => "User", :office_id => office_id_ok)
|
45
|
+
|
46
|
+
assert_equal User.find_by_tags("unknown").size, 0
|
47
|
+
assert_equal User.find_by_tags("public").size, 1
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_should_use_default_order_and_order_should_be_overwriteable
|
51
|
+
User.smart_search :on => [:full_name], :order => :first_name, :force => true
|
52
|
+
User.enable_similarity = false
|
53
|
+
|
54
|
+
user_c = User.create(:first_name => "C", :last_name => "Test1")
|
55
|
+
user_a = User.create(:first_name => "A", :last_name => "Test3")
|
56
|
+
user_b = User.create(:first_name => "B", :last_name => "Test2")
|
57
|
+
|
58
|
+
|
59
|
+
assert_equal user_a, User.find_by_tags("test").first
|
60
|
+
assert_equal user_c, User.find_by_tags("test").last
|
61
|
+
|
62
|
+
assert_equal user_c, User.find_by_tags("test", :order => :last_name).first
|
63
|
+
assert_equal user_a, User.find_by_tags("test", :order => :last_name).last
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_search_tags_should_work_with_array_of_strings
|
67
|
+
User.smart_search :on => %w(first_name last_name office.name), :force => true
|
68
|
+
o = Office.create(:name => "Neandertal")
|
69
|
+
u = User.create(:first_name => "Homo", :last_name => "Sapiens", :office_id => o.id)
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
def test_should_create_search_history
|
75
|
+
User.find_by_tags("XXXYYY")
|
76
|
+
|
77
|
+
assert_not_equal 0, SmartSearchHistory.where(:query => "XXXYYY").size
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require "test_helper"
|
3
|
+
class SmartSearchSimilartyTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_similarity_should_load_from_file
|
6
|
+
testfile_1 = File.expand_path("../../test_document_one_line.txt", __FILE__)
|
7
|
+
testfile_2 = File.expand_path("../../test_document_multi_line.txt", __FILE__)
|
8
|
+
SmartSimilarity.connection.execute "Truncate table #{SmartSimilarity.table_name}"
|
9
|
+
|
10
|
+
assert_equal 0, SmartSimilarity.count
|
11
|
+
SmartSimilarity.load_file(testfile_2)
|
12
|
+
new_count = SmartSimilarity.count
|
13
|
+
assert_not_equal 0, new_count
|
14
|
+
|
15
|
+
SmartSimilarity.load_file(testfile_1)
|
16
|
+
assert_not_equal new_count, SmartSimilarity.count
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_similarity_should_load_from_url
|
20
|
+
count = SmartSimilarity.count
|
21
|
+
SmartSimilarity.load_url("https://github.com/florianeck/smart_search")
|
22
|
+
assert_not_equal count, SmartSimilarity.count
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_similarity_should_load_from_history
|
26
|
+
count = SmartSimilarity.count
|
27
|
+
User.find_by_tags("this is history now")
|
28
|
+
SmartSimilarity.load_from_query_history
|
29
|
+
assert_not_equal count, SmartSimilarity.count
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require "test_helper"
|
3
|
+
class SmartSearchBoostTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_boost_search_index_cols_should_be_created
|
6
|
+
SmartSearchTag.connection.execute("TRUNCATE #{SmartSearchTag.table_name}")
|
7
|
+
Customer.smart_search :on => [
|
8
|
+
{:field_name => :first_name, :boost => 1},
|
9
|
+
{:field_name => :last_name, :boost => 2},
|
10
|
+
{:field_name => "user.full_name", :boost => 0.5},
|
11
|
+
], :force => true
|
12
|
+
|
13
|
+
user = User.create(:first_name => "Pi", :last_name => "Pa")
|
14
|
+
|
15
|
+
Customer.create(:first_name => "Lorem", :last_name => "Ipsum", :user_id => user.id)
|
16
|
+
|
17
|
+
assert_equal 1, SmartSearchTag.where(:field_name => "first_name", :boost => 1).count
|
18
|
+
assert_equal 1, SmartSearchTag.where(:field_name => "last_name", :boost => 2).count
|
19
|
+
assert_equal 1, SmartSearchTag.where(:field_name => "user.full_name", :boost => 0.5).count
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_boost_search__results_should_order_by_score
|
23
|
+
Customer.smart_search :on => [
|
24
|
+
{:field_name => :first_name, :boost => 1},
|
25
|
+
{:field_name => :last_name, :boost => 2},
|
26
|
+
{:field_name => "user.full_name", :boost => 0.5},
|
27
|
+
], :force => true
|
28
|
+
|
29
|
+
user = User.create(:first_name => "Rudi", :last_name => "Piff")
|
30
|
+
|
31
|
+
c1 = Customer.create(:first_name => "Rudi", :last_name => "Rolle", :user_id => user.id)
|
32
|
+
c2 = Customer.create(:first_name => "Rolle", :last_name => "Rudi", :user_id => user.id)
|
33
|
+
c3 = Customer.create(:first_name => "Jackie", :last_name => "Brown", :user_id => user.id)
|
34
|
+
|
35
|
+
results = Customer.find_by_tags("Rudi")
|
36
|
+
|
37
|
+
assert_equal c1, results[1]
|
38
|
+
assert_equal c2, results[0]
|
39
|
+
assert_equal c3, results[2]
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
def test_same_boost_search_index_cols_should_be_grouped
|
44
|
+
|
45
|
+
Customer.smart_search :on => [
|
46
|
+
{:field_name => :first_name, :boost => 2},
|
47
|
+
{:field_name => :last_name, :boost => 2},
|
48
|
+
{:field_name => "user.full_name", :boost => 0.5},
|
49
|
+
], :force => true
|
50
|
+
|
51
|
+
user = User.create(:first_name => "Pipi", :last_name => "Papa")
|
52
|
+
|
53
|
+
customer = Customer.create(:first_name => "Lorem", :last_name => "Ipsum", :user_id => user.id)
|
54
|
+
|
55
|
+
assert_equal 2, SmartSearchTag.where(:table_name => Customer.table_name, :entry_id => customer.id).count
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
end
|
metadata
CHANGED
@@ -1,66 +1,123 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.7
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Florian Eck
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
14
|
-
|
15
|
-
|
11
|
+
date: 2014-05-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.2.9
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.2.9
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: amatch
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: friendly_extensions
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.0.61
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.0.61
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mysql2
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: SmartSearch adds full-text search functions to ActiveRecord running with
|
70
|
+
MySQL, including search for similiar words. Its fast, simple, and works with almost
|
71
|
+
zero-config!
|
16
72
|
email: it-support@friends-systems.de
|
17
73
|
executables: []
|
18
74
|
extensions: []
|
19
75
|
extra_rdoc_files: []
|
20
76
|
files:
|
21
|
-
-
|
22
|
-
- lib/smart_search.rb
|
23
|
-
- app/controllers/search_controller.rb
|
24
|
-
- app/views/search/_results_small.html.erb
|
25
|
-
- app/views/search/all.html.erb
|
26
|
-
- app/views/search/results/_ansprechpartner.html.erb
|
27
|
-
- app/views/search/results/_calendar_entry.html.erb
|
28
|
-
- app/views/search/results/_company.html.erb
|
29
|
-
- app/views/search/results/_concept.html.erb
|
30
|
-
- app/views/search/results/_customer.html.erb
|
31
|
-
- app/views/search/results/_family.html.erb
|
32
|
-
- app/views/search/results/_firma.html.erb
|
33
|
-
- app/views/search/results/_product.html.erb
|
34
|
-
- app/views/search/results/_smart_document.html.erb
|
35
|
-
- app/views/search/results/_topic.html.erb
|
36
|
-
- app/views/search/results/_umsatz.html.erb
|
37
|
-
- app/views/search/results/_umsatz_refactor.html.erb
|
38
|
-
- app/views/search/results/_umsatz_storno.html.erb
|
39
|
-
- app/views/search/results/_user.html.erb
|
40
|
-
- app/views/search/results/_wiki_page.html.erb
|
77
|
+
- config/database.yml
|
41
78
|
- config/routes.rb
|
42
|
-
|
79
|
+
- lib/smart_search.rb
|
80
|
+
- lib/smart_search/smart_search_engine.rb
|
81
|
+
- lib/smart_search_history.rb
|
82
|
+
- lib/smart_search_ignore_word.rb
|
83
|
+
- lib/smart_search_tag.rb
|
84
|
+
- lib/smart_similarity.rb
|
85
|
+
- lib/tasks/smart_search.rake
|
86
|
+
- lib/tasks/testing.rake
|
87
|
+
- test/test_document_multi_line.txt
|
88
|
+
- test/test_document_one_line.txt
|
89
|
+
- test/test_helper.rb
|
90
|
+
- test/unit/01_smart_search_test.rb
|
91
|
+
- test/unit/02_smart_search_similarity_test.rb
|
92
|
+
- test/unit/03_smart_search_boost_test.rb
|
93
|
+
homepage: https://github.com/florianeck/smart_search
|
43
94
|
licenses: []
|
95
|
+
metadata: {}
|
44
96
|
post_install_message:
|
45
97
|
rdoc_options: []
|
46
98
|
require_paths:
|
47
99
|
- lib
|
48
100
|
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
101
|
requirements:
|
51
|
-
- -
|
102
|
+
- - ">="
|
52
103
|
- !ruby/object:Gem::Version
|
53
104
|
version: '0'
|
54
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
106
|
requirements:
|
57
|
-
- -
|
107
|
+
- - ">="
|
58
108
|
- !ruby/object:Gem::Version
|
59
109
|
version: '0'
|
60
110
|
requirements: []
|
61
111
|
rubyforge_project:
|
62
|
-
rubygems_version:
|
112
|
+
rubygems_version: 2.2.1
|
63
113
|
signing_key:
|
64
|
-
specification_version:
|
65
|
-
summary: Simple, easy to use search
|
66
|
-
test_files:
|
114
|
+
specification_version: 4
|
115
|
+
summary: Simple, easy to use search MySQL based search for ActiveRecord
|
116
|
+
test_files:
|
117
|
+
- test/test_document_multi_line.txt
|
118
|
+
- test/test_document_one_line.txt
|
119
|
+
- test/test_helper.rb
|
120
|
+
- test/unit/01_smart_search_test.rb
|
121
|
+
- test/unit/02_smart_search_similarity_test.rb
|
122
|
+
- test/unit/03_smart_search_boost_test.rb
|
123
|
+
has_rdoc:
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
class SearchController < ApplicationController
|
3
|
-
|
4
|
-
def all
|
5
|
-
|
6
|
-
if params[:search]
|
7
|
-
@query = params[:search][:query]
|
8
|
-
else
|
9
|
-
@query = params[:query]
|
10
|
-
end
|
11
|
-
|
12
|
-
unless @query.blank?
|
13
|
-
team = current_user.get_team_tree(:get_ids => true )
|
14
|
-
@results = []
|
15
|
-
SmartSearch::Config.get_search_models.each do |m|
|
16
|
-
if params[:only].nil? || params[:only] == m.to_s.split("::").last
|
17
|
-
#if (admin? || backoffice? || controller? || backoffice_vertrieb?) || !m.column_names.include?("user_id") || SmartSearch::Config.get_public_models.include?(m)
|
18
|
-
|
19
|
-
if SmartSearch::Config.get_public_models.include?(m)
|
20
|
-
@results << m.find_by_tags(@query)
|
21
|
-
elsif m.column_names.include?("user_id")
|
22
|
-
@results << m.find_by_tags(@query, {:user_id => team})
|
23
|
-
elsif m.column_names.include?("account_id")
|
24
|
-
@results << m.find_by_tags(@query, {:account_id => current_user.account_id})
|
25
|
-
else
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
@empty = @results.flatten.empty?
|
32
|
-
|
33
|
-
if request.xhr?
|
34
|
-
render :partial => "/search/results_small", :locals => {:results => @results, :no_limit => !params[:only].nil?}, :layout => params[:layout]
|
35
|
-
end
|
36
|
-
else
|
37
|
-
render :text => "Bitte geben Sie einen Suchbegriff ein"
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
# (admin? || backoffice? || controller? || backoffice_vertrieb?) ||
|
@@ -1,25 +0,0 @@
|
|
1
|
-
<div id="smartsearch-results-container-small">
|
2
|
-
<div class="bold teaser">
|
3
|
-
<%= "keine " if @empty %>Suchergebnisse für
|
4
|
-
<%= form_for :search, :url => {:controller => "search", :action => "all", :layout => "info_overlay"}, :html => default_ajax_link(:update => FOOTER_SEARCH_RESULTS_ID).merge!(:style => "display: inline;") do |f| %>
|
5
|
-
<%= f.text_field :query, :value => "Suchbegriff eingeben", :value => @query, :style => "width: 25%" %>
|
6
|
-
<% end %>
|
7
|
-
</div>
|
8
|
-
<% @results.each do |results| %>
|
9
|
-
<% limit = no_limit ? results.size : 5 %>
|
10
|
-
<% unless results.empty? %>
|
11
|
-
<h3 class="result-small-header cf"><%= "Suchergebnisse in #{(results[0].class.name+'_results').to_label}" %> <%= " - Zeige #{limit} von #{results.size}" if (results.size > limit) %> <%#= link_to_if(results.size > limit, "Alle (#{results.size})", ) %>
|
12
|
-
<% if (results.size > limit) %>
|
13
|
-
<span class="metainfo"><%= link_to "Zeige alle Ergebnisse", { :controller => "/search", :action => "all", :only => results[0].class.name, :query => (params[:search][:query] rescue params[:query]), :layout => params[:layout]}, default_ajax_link(:update => FOOTER_SEARCH_RESULTS_ID, :load_message => true, :class => "next-link") %></span>
|
14
|
-
<% elsif no_limit %>
|
15
|
-
<span class="metainfo"><%= link_to "zurück", { :controller => "/search", :action => "all", :query => (params[:search][:query] rescue params[:query]), :layout => params[:layout]}, default_ajax_link(:update => FOOTER_SEARCH_RESULTS_ID, :load_message => true, :class => "prev-link") %></span>
|
16
|
-
<% end %>
|
17
|
-
</h3>
|
18
|
-
<% results.first(limit).each do |r| %>
|
19
|
-
<div class="result-block-small"><%= render :partial => r.result_template_path, :locals => {:result => r, :small => true} %></div>
|
20
|
-
<% end %>
|
21
|
-
<div class="seperator small"> </div>
|
22
|
-
<% end %>
|
23
|
-
<% end %>
|
24
|
-
|
25
|
-
</div>
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<div class="search-">
|
2
|
-
<%= page_title "Suchergebnisse für '#{@query}'" %>
|
3
|
-
|
4
|
-
<div id="smartsearch-results-container">
|
5
|
-
<% @results.each do |results| %>
|
6
|
-
<% if results.empty? %>
|
7
|
-
<% else %>
|
8
|
-
<h3>Suchergebnisse in <%= "#{results[0].class.name}_results".to_label %> (<%= results.size %>)</h3>
|
9
|
-
<% results.each do |r| %>
|
10
|
-
<%= render :partial => r.result_template_path, :locals => {:result => r } %>
|
11
|
-
<% end %>
|
12
|
-
<%= seperator %>
|
13
|
-
<% end %>
|
14
|
-
<% end %>
|
15
|
-
</div>
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<div class="spacer highlighter">
|
2
|
-
<div class="field-container-4-cols cf">
|
3
|
-
<div class="container"><%= link_to result.company.name, {:controller => "/companies", :action => "show", :id => result.company.id}, default_ajax_link() %><br /></div>
|
4
|
-
<div class="center-left"><%= result.name %> (<%= result.art %>)</div>
|
5
|
-
<div class="center-right"><%= result.phone %></div>
|
6
|
-
<div class="container"><%= email_link(result.email) %></div>
|
7
|
-
</div>
|
8
|
-
</div>
|
@@ -1,29 +0,0 @@
|
|
1
|
-
<% small ||= false %>
|
2
|
-
|
3
|
-
<% if small == false %>
|
4
|
-
<div class="highlighter <%= cycle('odd', 'even', :name => "customer_results") %> <%= result.css_class %>">
|
5
|
-
<b><%= link_to result.name, {} %></b><br />
|
6
|
-
<div class="field-container-4-cols cf">
|
7
|
-
<div class="container">
|
8
|
-
<div class="metainfo">Status</div>
|
9
|
-
<div><%= result.type(:name) %></div>
|
10
|
-
<div><%= result.status %></div>
|
11
|
-
</div>
|
12
|
-
<div class="center-left">
|
13
|
-
<div class="metainfo">Beginn/Ende</div>
|
14
|
-
<div>von <%= result.starts_at.to_de %></div>
|
15
|
-
<div>bis <%= result.ends_at.to_de %></div>
|
16
|
-
</div>
|
17
|
-
<div class="center-right">
|
18
|
-
<div class="metainfo">Berater</div>
|
19
|
-
<div><%= result.user.full_name %></div>
|
20
|
-
</div>
|
21
|
-
<div class="container">
|
22
|
-
</div>
|
23
|
-
</div>
|
24
|
-
</div>
|
25
|
-
<% else %>
|
26
|
-
<%= link_to result.name, {} %> (<span class="metainfo"><%= result.user.full_name rescue "-" %></span>)
|
27
|
-
<br />
|
28
|
-
<%= result.type(:name) %> | <%= result.status %> | <%= result.starts_at.to_de %>
|
29
|
-
<% end %>
|
@@ -1,25 +0,0 @@
|
|
1
|
-
<% small ||= false %>
|
2
|
-
|
3
|
-
<% if small == false %>
|
4
|
-
<div class="highlighter <%= cycle('odd', 'even', :name => "company_results") %>">
|
5
|
-
<b><%= link_to result.name, {} %></b><br />
|
6
|
-
<div class="field-container-4-cols cf">
|
7
|
-
<div class="container">
|
8
|
-
<div class="metainfo">Anbindung</div>
|
9
|
-
<div><%= result.direct ? "Direktanbindung" : "keine Direktanbindung" %></div>
|
10
|
-
</div>
|
11
|
-
<div class="center-left">
|
12
|
-
<div class="metainfo">VP-Nr</div>
|
13
|
-
<div><%= result.direct ? result.vp_nr : "keine VP-Nummer" %></div>
|
14
|
-
</div>
|
15
|
-
<div class="center-right">
|
16
|
-
|
17
|
-
</div>
|
18
|
-
<div class="container">
|
19
|
-
</div>
|
20
|
-
</div>
|
21
|
-
</div>
|
22
|
-
<% else %>
|
23
|
-
<%= link_to result.name, {:controller => "/companies", :action => "show", :id => result.id}, default_ajax_link() %><br />
|
24
|
-
<%#= result.direct ? "Direktanbindung" : "keine Direktanbindung" %> / <%#= result.direct ? "VP-Nr: #{result.vp_nr}" : "keine VP-Nummer" %>
|
25
|
-
<% end %>
|
@@ -1,26 +0,0 @@
|
|
1
|
-
<div class="highlighter <%= cycle('odd', 'even', :name => "customer_results") %>">
|
2
|
-
<b><%= link_to result.customer.full_name, :controller => "/concepts", :action => "data_form", :concept_id => result.id %></b><br />
|
3
|
-
<div class="field-container-4-cols cf">
|
4
|
-
<div class="container">
|
5
|
-
<div class="metainfo">Status</div>
|
6
|
-
<div>
|
7
|
-
<% if result.firma_concept %>
|
8
|
-
Firmenkonzept
|
9
|
-
<% elsif result.family_concept %>
|
10
|
-
Familienkonzept
|
11
|
-
<% else %>
|
12
|
-
Standardkonzept
|
13
|
-
<% end %>
|
14
|
-
<%= progress_bar(result.ist_concept.progress_percent) %>
|
15
|
-
</div>
|
16
|
-
</div>
|
17
|
-
<div class="center-left">
|
18
|
-
<div class="metainfo">Datum</div>
|
19
|
-
<div>erstellt: <%= result.created_at.to_de %></div>
|
20
|
-
</div>
|
21
|
-
<div class="center-right">
|
22
|
-
</div>
|
23
|
-
<div class="container">
|
24
|
-
</div>
|
25
|
-
</div>
|
26
|
-
</div>
|
@@ -1,51 +0,0 @@
|
|
1
|
-
<% small ||= false %>
|
2
|
-
|
3
|
-
<% if small == false %>
|
4
|
-
<div class="highlighter <%= cycle('odd', 'even', :name => "customer_results") %>">
|
5
|
-
<b><%= link_to result.full_name, :controller => "/customers", :action => "show", :id => result.id %></b><br />
|
6
|
-
<div><%= result.notes.clear_html rescue nil %></div>
|
7
|
-
<div class="field-container-4-cols cf">
|
8
|
-
<div class="container">
|
9
|
-
<div class="metainfo">Kontaktdaten</div>
|
10
|
-
<div><%= result.personal_data.phone %></div>
|
11
|
-
<div><%= result.personal_data.mobile %></div>
|
12
|
-
<div><%= result.personal_data.email %></div>
|
13
|
-
</div>
|
14
|
-
<div class="center-left">
|
15
|
-
<div class="metainfo">Anschrift</div>
|
16
|
-
<div><%= result.personal_data.adress %></div>
|
17
|
-
</div>
|
18
|
-
<div class="center-right">
|
19
|
-
<div class="metainfo">Persönliches</div>
|
20
|
-
<div>geb. <%= result.personal_data.birthday %></div>
|
21
|
-
</div>
|
22
|
-
<div class="container">
|
23
|
-
<div class="metainfo">
|
24
|
-
<% if result.concepts.empty? %>
|
25
|
-
keine Konzepte
|
26
|
-
<% else %>
|
27
|
-
<%= result.ist_concepts.size %> Konzept(e)
|
28
|
-
<% end %>
|
29
|
-
</div>
|
30
|
-
<% result.ist_concepts.each do |concept| %>
|
31
|
-
<% if concept.firma_concept %>
|
32
|
-
Firmenkonzept
|
33
|
-
<% elsif concept.family_concept %>
|
34
|
-
Familienkonzept
|
35
|
-
<% else %>
|
36
|
-
Standardkonzept
|
37
|
-
<% end %> (<%= concept.created_at.to_de %>)
|
38
|
-
<%= progress_bar(concept.progress_percent, :size => :small) %>
|
39
|
-
<% end %>
|
40
|
-
</div>
|
41
|
-
</div>
|
42
|
-
</div>
|
43
|
-
<% else %>
|
44
|
-
<div class="field-container-4-cols highlighter cf">
|
45
|
-
<div class="container"><%= link_to(result.full_name, {:controller => "/customers", :action => "customer_detail_ajax", :id => result.id, :layout => "ajax_overlay"}, default_ajax_link()) %> </div>
|
46
|
-
<div class="center-left metainfo"><%= result.user.full_name rescue "-" %></div>
|
47
|
-
<div class="center-right"></div>
|
48
|
-
<div class="container"></div>
|
49
|
-
</div>
|
50
|
-
|
51
|
-
<% end %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render :partial => "/smart/search/results/customer", :locals => {:result => result, :small => small} %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render :partial => "/smart/search/results/customer", :locals => {:result => result} %>
|