enju_leaf 1.1.0.rc18 → 1.1.0.rc19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/app/controllers/my_accounts_controller.rb +1 -1
  4. data/app/controllers/page_controller.rb +5 -5
  5. data/app/controllers/profiles_controller.rb +0 -1
  6. data/app/controllers/user_import_files_controller.rb +2 -1
  7. data/app/models/identity.rb +9 -0
  8. data/app/models/profile.rb +2 -0
  9. data/app/models/user_import_file.rb +0 -1
  10. data/app/views/devise/registrations/edit.html.erb +8 -14
  11. data/app/views/my_accounts/_edit_credential.html.erb +6 -21
  12. data/app/views/my_accounts/_edit_credential.html.slim +63 -0
  13. data/app/views/my_accounts/edit.html.erb +1 -0
  14. data/app/views/my_accounts/show.html.erb +2 -1
  15. data/app/views/my_accounts/show.html.slim +59 -0
  16. data/app/views/page/500_nosolr.html.erb +66 -0
  17. data/app/views/page/{_msie_acceralator.html.erb → _msie_accelerator.html.erb} +0 -0
  18. data/app/views/page/add_on.html.slim +7 -0
  19. data/app/views/page/{msie_acceralator.builder → msie_accelerator.builder} +0 -0
  20. data/app/views/profiles/_edit_credential.html.slim +67 -0
  21. data/app/views/profiles/_edit_profile.html.slim +40 -0
  22. data/app/views/profiles/new.html.erb +0 -5
  23. data/app/views/roles/index.html.erb +6 -2
  24. data/app/views/roles/show.html.erb +3 -1
  25. data/app/views/user_groups/index.html.erb +3 -1
  26. data/app/views/user_groups/show.html.erb +6 -2
  27. data/app/views/user_import_files/index.html.slim +52 -0
  28. data/app/views/user_import_files/new.html.slim +64 -0
  29. data/config/locales/devise.ja.yml +1 -1
  30. data/config/locales/translation_en.yml +11 -9
  31. data/config/locales/translation_ja.yml +2 -0
  32. data/config/routes.rb +6 -1
  33. data/db/migrate/20140110122216_create_user_import_files.rb +1 -1
  34. data/db/migrate/20150421023923_create_identities.rb +15 -0
  35. data/lib/enju_leaf/controller.rb +1 -1
  36. data/lib/enju_leaf/user.rb +8 -8
  37. data/lib/enju_leaf/version.rb +1 -1
  38. data/lib/enju_leaf.rb +13 -2
  39. data/lib/generators/enju_leaf/quick_install/quick_install_generator.rb +12 -8
  40. data/lib/generators/enju_leaf/setup/setup_generator.rb +14 -14
  41. data/lib/generators/enju_leaf/setup/templates/config/initializers/resque.rb +3 -0
  42. data/lib/generators/enju_leaf/setup/templates/db/seeds.rb +2 -7
  43. data/lib/generators/enju_leaf/setup/templates/solr/conf/schema.xml +32 -12
  44. data/lib/generators/enju_leaf/setup/templates/solr/conf/solrconfig.xml +599 -853
  45. data/spec/controllers/my_accounts_controller_spec.rb +6 -6
  46. data/spec/controllers/page_controller_spec.rb +2 -2
  47. data/spec/dummy/db/schema.rb +14 -1
  48. data/spec/factories/user.rb +0 -3
  49. data/spec/fixtures/library_groups.yml +1 -0
  50. data/spec/models/user_import_file_spec.rb +1 -1
  51. data/spec/models/user_spec.rb +0 -17
  52. metadata +27 -25
  53. data/lib/generators/enju_leaf/setup/templates/config/resque.yml +0 -3
  54. data/lib/generators/enju_leaf/setup/templates/solr/conf/admin-extra.html +0 -31
  55. data/lib/generators/enju_leaf/setup/templates/solr/conf/elevate.xml +0 -36
  56. data/lib/generators/enju_leaf/setup/templates/solr/conf/mapping-ISOLatin1Accent.txt +0 -246
  57. data/lib/generators/enju_leaf/setup/templates/solr/conf/protwords.txt +0 -21
  58. data/lib/generators/enju_leaf/setup/templates/solr/conf/scripts.conf +0 -24
  59. data/lib/generators/enju_leaf/setup/templates/solr/conf/spellings.txt +0 -2
  60. data/lib/generators/enju_leaf/setup/templates/solr/conf/stopwords.txt +0 -58
  61. data/lib/generators/enju_leaf/setup/templates/solr/conf/synonyms.txt +0 -31
@@ -0,0 +1,64 @@
1
+ .row
2
+ #submenu.col-md-3
3
+ .panel.panel-default
4
+ .panel-heading
5
+ h2.panel-title
6
+ = t('activerecord.models.user_import_file')
7
+ ul.list-group
8
+ li.list-group-item
9
+ = back_to_index(flash[:page_info])
10
+ #content_list.col-md-9
11
+ .panel.panel-default
12
+ .panel-heading
13
+ h1.panel-title
14
+ = t('page.new', model: t('activerecord.models.user_import_file'))
15
+ .panel-body
16
+ = form_for(@user_import_file, html: { multipart: true }) do |f|
17
+ = f.error_messages
18
+ .form-group
19
+ = f.label t('page.file')
20
+ br
21
+ = f.file_field :user_import
22
+ .form-group
23
+ = f.label :edit_mode
24
+ br
25
+ .radio-inline
26
+ = f.radio_button :edit_mode, 'create', checked: 'checked'
27
+ = f.label :edit_mode, t('page.create'), value: 'create'
28
+ .radio-inline
29
+ = f.radio_button :edit_mode, 'update'
30
+ = f.label :edit_mode, t('page.update'), value: 'update'
31
+ .radio-inline
32
+ = f.radio_button :edit_mode, 'update_relationship'
33
+ = f.label :edit_mode, t('resource_import_file.update_relationship'), value: 'update_relationship'
34
+ .radio-inline
35
+ = f.radio_button :edit_mode, 'destroy'
36
+ = f.label :edit_mode, t('page.destroy'), value: 'destroy'
37
+ .form-group
38
+ = f.label :user_encoding
39
+ br
40
+ .radio-inline
41
+ = f.radio_button :user_encoding, 'auto_detect', checked: 'checked'
42
+ = f.label :user_encoding, t('import.auto_detect'), value: 'auto_detect'
43
+ .radio-inline
44
+ = f.radio_button :user_encoding, 'utf-8'
45
+ = f.label :user_encoding, 'UTF-8', value: 'utf-8'
46
+ .radio-inline
47
+ = f.radio_button :user_encoding, 'shift_jis'
48
+ = f.label :user_encoding, 'Shift_JIS', value: 'shift_jis'
49
+ .radio-inline
50
+ = f.radio_button :user_encoding, 'euc-jp'
51
+ = f.label :user_encoding, 'EUC-JP', value: 'euc-jp'
52
+ .form-group
53
+ = f.label :default_user_group_id
54
+ = f.select(:default_user_group_id, @user_groups.collect{|u| [u.display_name.localize, u.id]}, {}, {class: 'form-control'})
55
+ br
56
+ = t('user_import_file.default_user_group')
57
+ .form-group
58
+ = f.label :default_library_id
59
+ = f.select(:default_library_id, @libraries.collect{|l| [l.display_name.localize, l.id]}, {}, {class: 'form-control'})
60
+ br
61
+ = t('user_import_file.default_library')
62
+ .form-group
63
+ = f.hidden_field :mode, value: 'import'
64
+ = f.submit t('page.start_import'), class: 'btn btn-default'
@@ -37,7 +37,7 @@ ja:
37
37
  signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
38
38
  signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
39
39
  update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address."
40
- updated: "Your account has been updated successfully."
40
+ updated: "アカウントは正常に更新されました。"
41
41
  sessions:
42
42
  signed_in: "ログインしました。"
43
43
  signed_out: "ログアウトしました。"
@@ -185,7 +185,7 @@ en:
185
185
  sort_by: "Sort by"
186
186
  bookmarklet: "Bookmarklet"
187
187
  add_file: "Add a file"
188
- telephone_number: "Telephoone number"
188
+ telephone_number: "Telephone number"
189
189
  about_this_system: "About this system"
190
190
  report_bugs: "Report bugs"
191
191
  new_resource: "New resources"
@@ -239,9 +239,9 @@ en:
239
239
  local_record: "Local record"
240
240
  search_catalog_at: "Search catalog at %{library_name}"
241
241
  add_on: "Add-ons"
242
- asc: "ascendent"
243
- desc: "descendent"
244
- error_occured: "An error occured."
242
+ asc: "ascendant"
243
+ desc: "descendant"
244
+ error_occurred: "An error occurred."
245
245
  did_you_mean: "Did you mean"
246
246
  calendar: "Calendar"
247
247
  related: "Related"
@@ -286,6 +286,8 @@ en:
286
286
  cannot_parse_yaml_header: "has an invalid YAML header. You must add a space after the header's colon."
287
287
  notice: Notice
288
288
  system_information: System information
289
+ nosolr_error: 'There is an error on connecting to the search server.'
290
+ nosolr_error_description: 'This error may be caused by a delay when the sever is still waiting for launching the search server. In that case, please wait for a while, and go back to this page later.'
289
291
  title:
290
292
  index: "index"
291
293
  show: "show"
@@ -315,11 +317,11 @@ en:
315
317
  from_file: "from file"
316
318
  from_isbn: "from ISBN"
317
319
  will_be_imported:
318
- one: "Resource will be impored in a %{minute} minute."
319
- other: "Resource will be impored in %{minute} minutes."
320
+ one: "Resource will be imported in a %{minute} minute."
321
+ other: "Resource will be imported in %{minute} minutes."
320
322
  auto_detect: "Auto detect"
321
323
  successfully_created: "%{model} was created successfully. When the task is completed, its status on the list will be updated to 'completed'."
322
- following_column_were_ignored: "The follwing column(s) were ignored: %{column}"
324
+ following_column_were_ignored: "The following column(s) were ignored: %{column}"
323
325
  dummy: This row is treated as a dummy input.
324
326
  export:
325
327
  export_completed: Export completed.
@@ -347,7 +349,7 @@ en:
347
349
  set_auto_generated_password: "Set auto-generated password"
348
350
  history: "History"
349
351
  account_management: "Account management"
350
- checkout_history_icalendar_url: "checkout historoy iCalendar URL"
352
+ checkout_history_icalendar_url: "checkout history iCalendar URL"
351
353
  reset_checkout_icalendar_url: "Reset checkout iCalendar URL"
352
354
  you_have_to_save_profile_to_activate_feed_url: "You have to save your profile to activate this url."
353
355
  you_have_to_save_profile_to_deactivate_feed_url: "You have to save your profile to deactivate this url."
@@ -373,7 +375,7 @@ en:
373
375
  you_should_specify_work: "You should specify a work in the series statement."
374
376
  state:
375
377
  pending: "Pending"
376
- canceled: "Cancaled"
378
+ canceled: "Canceled"
377
379
  completed: "Completed"
378
380
  started: "Started"
379
381
  failed: "Failed"
@@ -271,6 +271,8 @@ ja:
271
271
  cannot_parse_yaml_header: "のYAMLヘッダを読み込めません。ヘッダのコロンの後には、半角スペースを含める必要があります。"
272
272
  notice: 注意
273
273
  system_information: システムの基本的な情報の表示
274
+ nosolr_error: '検索サーバに不具合があるようです'
275
+ nosolr_error_description: '検索サーバーの起動に時間がかかっている場合もこのエラーとなります。少し時間を置いてアクセスするとエラーが解消される場合もありますのでお試しください。'
274
276
  title:
275
277
  index: "一覧"
276
278
  show: "表示"
data/config/routes.rb CHANGED
@@ -25,6 +25,11 @@ Rails.application.routes.draw do
25
25
  resources :accepts, :except => [:edit, :update]
26
26
  end
27
27
 
28
+ as :user do
29
+ get 'users/edit' => 'devise/registrations#edit', as: 'edit_user_registration'
30
+ put 'users' => 'devise/registrations#update', as: 'user_registration'
31
+ end
32
+
28
33
  root :to => "page#index"
29
34
 
30
35
  get '/page/about' => 'page#about'
@@ -33,7 +38,7 @@ Rails.application.routes.draw do
33
38
  get '/page/add_on' => 'page#add_on'
34
39
  get '/page/export' => 'page#export'
35
40
  get '/page/import' => 'page#import'
36
- get '/page/msie_acceralator' => 'page#msie_acceralator'
41
+ get '/page/msie_accelerator' => 'page#msie_accelerator'
37
42
  get '/page/opensearch' => 'page#opensearch'
38
43
  get '/page/statistics' => 'page#statistics'
39
44
  get '/page/system_information' => 'page#system_information'
@@ -6,7 +6,7 @@ class CreateUserImportFiles < ActiveRecord::Migration
6
6
  t.datetime :executed_at
7
7
  t.string :user_import_file_name
8
8
  t.string :user_import_content_type
9
- t.string :user_import_file_size
9
+ t.integer :user_import_file_size
10
10
  t.datetime :user_import_updated_at
11
11
  t.string :user_import_fingerprint
12
12
  t.string :edit_mode
@@ -0,0 +1,15 @@
1
+ class CreateIdentities < ActiveRecord::Migration
2
+ def change
3
+ create_table :identities do |t|
4
+ t.string :name
5
+ t.string :email
6
+ t.string :password_digest
7
+ t.integer :profile_id
8
+
9
+ t.timestamps null: false
10
+ end
11
+ add_index :identities, :name
12
+ add_index :identities, :email
13
+ add_index :identities, :profile_id
14
+ end
15
+ end
@@ -10,7 +10,7 @@ module EnjuLeaf
10
10
  def set_error_template
11
11
  rescue_from CanCan::AccessDenied, with: :render_403
12
12
  #rescue_from ActiveRecord::RecordNotFound, with: :render_404
13
- rescue_from Errno::ECONNREFUSED, with: :render_500
13
+ rescue_from Errno::ECONNREFUSED, with: :render_500_nosolr
14
14
  #rescue_from ActionView::MissingTemplate, with: :render_404_invalid_format
15
15
  end
16
16
  end
@@ -49,8 +49,8 @@ module EnjuLeaf
49
49
  within: Devise::password_length
50
50
  end
51
51
 
52
- validates_presence_of :email, :email_confirmation, on: :create, if: proc{|user| !user.operator.try(:has_role?, 'Librarian')}
53
- validates_confirmation_of :email, on: :create #, if: proc{|user| !user.operator.try(:has_role?, 'Librarian')}
52
+ #validates_presence_of :email, :email_confirmation, on: :create, if: proc{|user| !user.operator.try(:has_role?, 'Librarian')}
53
+ #validates_confirmation_of :email, on: :create #, if: proc{|user| !user.operator.try(:has_role?, 'Librarian')}
54
54
 
55
55
  before_validation :set_lock_information
56
56
  before_destroy :check_role_before_destroy
@@ -63,7 +63,7 @@ module EnjuLeaf
63
63
  normalize_attributes :username
64
64
  normalize_attributes :email, with: :strip
65
65
 
66
- attr_accessor :operator, :password_not_verified,
66
+ attr_accessor :password_not_verified,
67
67
  :update_own_account, :auto_generated_password,
68
68
  :locked, :current_password #, :agent_id
69
69
 
@@ -136,7 +136,9 @@ module EnjuLeaf
136
136
 
137
137
  module InstanceMethods
138
138
  def password_required?
139
- !persisted? || !password.nil? || !password_confirmation.nil?
139
+ if Devise.mappings[:user].modules.include?(:database_authenticatable)
140
+ !persisted? || !password.nil? || !password_confirmation.nil?
141
+ end
140
142
  end
141
143
 
142
144
  def has_role?(role_in_question)
@@ -161,7 +163,7 @@ module EnjuLeaf
161
163
  end
162
164
 
163
165
  def set_confirmation
164
- if operator and respond_to?(:confirm!)
166
+ if respond_to?(:confirm!)
165
167
  reload
166
168
  confirm!
167
169
  end
@@ -206,9 +208,7 @@ module EnjuLeaf
206
208
  end
207
209
 
208
210
  def send_confirmation_instructions
209
- unless self.operator
210
- Devise::Mailer.confirmation_instructions(self).deliver if self.email.present?
211
- end
211
+ Devise::Mailer.confirmation_instructions(self).deliver if self.email.present?
212
212
  end
213
213
 
214
214
  def deletable_by?(current_user)
@@ -1,3 +1,3 @@
1
1
  module EnjuLeaf
2
- VERSION = "1.1.0.rc18"
2
+ VERSION = "1.1.0.rc19"
3
3
  end
data/lib/enju_leaf.rb CHANGED
@@ -67,9 +67,7 @@ module EnjuLeaf
67
67
  end
68
68
 
69
69
  def render_500
70
- Rails.logger.fatal("please confirm that the Solr is running.")
71
70
  return if performed?
72
- #flash[:notice] = t('page.connection_failed')
73
71
  respond_to do |format|
74
72
  format.html {render file: "#{Rails.root}/public/500", layout: false, status: 500}
75
73
  format.mobile {render file: "#{Rails.root}/public/500", layout: false, status: 500}
@@ -79,6 +77,19 @@ module EnjuLeaf
79
77
  end
80
78
  end
81
79
 
80
+ def render_500_nosolr
81
+ Rails.logger.fatal("please confirm that the Solr is running.")
82
+ return if performed?
83
+ #flash[:notice] = t('page.connection_failed')
84
+ respond_to do |format|
85
+ format.html {render template: "page/500_nosolr", layout: false, status: 500}
86
+ format.mobile {render template: "page/500_nosolr", layout: false, status: 500}
87
+ format.xml {render template: 'page/500', status: 500}
88
+ format.json { render text: '{"error": "server_error"}' }
89
+ format.xml {render template: 'page/500.xml', status: 500}
90
+ end
91
+ end
92
+
82
93
  def set_locale
83
94
  if params[:locale]
84
95
  unless I18n.available_locales.include?(params[:locale].to_s.intern)
@@ -3,10 +3,12 @@ class EnjuLeaf::QuickInstallGenerator < Rails::Generators::Base
3
3
 
4
4
  def quick_install
5
5
  environment = ENV['RAILS_ENV'] || 'development'
6
+ gsub_file 'config/schedule.rb', /^set :environment, :development$/,
7
+ "set :environment, :#{environment}"
6
8
  rake("enju_leaf_engine:install:migrations")
7
9
  rake("enju_biblio_engine:install:migrations")
8
10
  rake("enju_library_engine:install:migrations")
9
- if !ENV['SKIP_CONFIG']
11
+ if !ENV['ENJU_SKIP_CONFIG']
10
12
  generate("enju_biblio:setup")
11
13
  generate("enju_library:setup")
12
14
  generate("enju_circulation:setup")
@@ -18,13 +20,15 @@ class EnjuLeaf::QuickInstallGenerator < Rails::Generators::Base
18
20
  rake("enju_subject:setup", env: environment)
19
21
  rake("assets:precompile", env: environment) if environment == 'production'
20
22
  rake("db:seed", env: environment)
21
- if ENV['OS'] == 'Windows_NT'
22
- rake("sunspot:solr:run", env: environment)
23
- else
24
- rake("sunspot:solr:start", env: environment)
25
- sleep 5
26
- rake("environment sunspot:reindex", env: environment)
27
- rake("sunspot:solr:stop", env: environment)
23
+ if !ENV['ENJU_SKIP_SOLR']
24
+ if ENV['OS'] == 'Windows_NT'
25
+ rake("sunspot:solr:run", env: environment)
26
+ else
27
+ rake("sunspot:solr:start", env: environment)
28
+ sleep 5
29
+ rake("environment sunspot:reindex", env: environment)
30
+ rake("sunspot:solr:stop", env: environment)
31
+ end
28
32
  end
29
33
  end
30
34
  end
@@ -4,9 +4,10 @@ class EnjuLeaf::SetupGenerator < Rails::Generators::Base
4
4
 
5
5
  def copy_setup_files
6
6
  directory("db/fixtures", "db/fixtures/enju_leaf")
7
+ directory("solr", "example/solr")
7
8
  copy_file("Procfile", "Procfile")
8
- copy_file("config/resque.yml", "config/resque.yml")
9
9
  copy_file("config/schedule.rb", "config/schedule.rb")
10
+ copy_file("config/initializers/resque.rb", "config/initializers/resque.rb")
10
11
  inject_into_file 'config/application.rb', after: /# config.i18n.default_locale = :de$\n/ do
11
12
  <<"EOS"
12
13
  config.i18n.available_locales = [:en, :ja]
@@ -32,6 +33,12 @@ EOS
32
33
  end
33
34
  generate("devise:install")
34
35
  generate("devise", "User")
36
+ gsub_file 'app/models/user.rb', /, :registerable,$/, ', #:registerable,'
37
+ gsub_file 'app/models/user.rb', /, :trackable, :validatable$/, <<EOS
38
+ , :trackable, #:validatable,
39
+ :lockable, :lock_strategy => :none, :unlock_strategy => :none
40
+ enju_leaf_user_model
41
+ EOS
35
42
  generate("sunspot_rails:install")
36
43
  generate("kaminari:config")
37
44
  generate("simple_form:install")
@@ -48,19 +55,13 @@ EOS
48
55
  /\/\/= require turbolinks$/,
49
56
  ""
50
57
  end
51
- gsub_file 'config/routes.rb', /devise_for :users$/, "devise_for :users, path: 'accounts'"
58
+ gsub_file 'config/routes.rb', /devise_for :users$/, "devise_for :users, skip: [:registration]"
52
59
  gsub_file 'config/initializers/devise.rb', '# config.email_regexp = /\A[^@]+@[^@]+\z/', 'config.email_regexp = /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\Z/i'
53
- gsub_file 'config/initializers/devise.rb', '# config.authentication_keys = [ :email ]', 'config.authentication_keys = [ :username ]'
60
+ gsub_file 'config/initializers/devise.rb', '# config.authentication_keys = [:email]', 'config.authentication_keys = [:username]'
54
61
  gsub_file 'config/initializers/devise.rb', '# config.secret_key', 'config.secret_key'
55
62
  gsub_file 'config/initializers/devise.rb',
56
63
  "# config.navigational_formats = ['*/*', :html]",
57
64
  "config.navigational_formats = ['*/*', :html, :mobile]"
58
- gsub_file 'app/models/user.rb', /, :registerable,$/, ', #:registerable,'
59
- gsub_file 'app/models/user.rb', /, :trackable, :validatable$/, <<EOS
60
- , :trackable, #:validatable,
61
- :lockable, :lock_strategy => :none, :unlock_strategy => :none
62
- enju_leaf_user_model
63
- EOS
64
65
 
65
66
  inject_into_class "app/controllers/application_controller.rb", ApplicationController do
66
67
  <<"EOS"
@@ -70,12 +71,13 @@ EOS
70
71
 
71
72
  mobylette_config do |config|
72
73
  config[:skip_xhr_requests] = false
73
- config[:skip_user_agents] = ENV['ENJU_SKIP_MOBILE_AGENTS'].to_s.split.map{|s| s.to_sym}
74
+ config[:skip_user_agents] = ENV['ENJU_SKIP_MOBILE_AGENTS'].to_s.split(',').map{|a|
75
+ a.to_sym
76
+ }
74
77
  end
75
-
76
78
  EOS
77
79
  end
78
- #inject_into_class "app/models/user.rb", User, " enju_user_model\n"
80
+
79
81
  inject_into_file "app/helpers/application_helper.rb", after: /module ApplicationHelper$\n/ do
80
82
  <<"EOS"
81
83
  include EnjuLeaf::EnjuLeafHelper
@@ -107,8 +109,6 @@ EOS
107
109
  end
108
110
  remove_file "public/index.html"
109
111
  remove_file "app/views/layouts/application.html.erb"
110
- gsub_file 'config/schedule.rb', /^set :environment, :development$/,
111
- "set :environment, :#{environment}"
112
112
  gsub_file 'config/environments/production.rb',
113
113
  /config.serve_static_assets = false$/,
114
114
  "config.serve_static_assets = true"
@@ -0,0 +1,3 @@
1
+ if defined?(Resque)
2
+ Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }
3
+ end
@@ -6,7 +6,7 @@ end
6
6
  email = 'admin@example.jp'
7
7
  password = 'adminpassword'
8
8
 
9
- # Don't edit!
9
+ # Don't edit the following lines!
10
10
 
11
11
  Sunspot.session = Sunspot::Rails::StubSessionProxy.new(Sunspot.session)
12
12
  #unless solr = Sunspot.commit rescue nil
@@ -28,21 +28,18 @@ end
28
28
  system_user = User.new
29
29
  system_user.username = 'system'
30
30
  system_user.password = SecureRandom.urlsafe_base64(32)
31
- system_user.email = system_user.email_confirmation = 'root@library.example.jp'
31
+ system_user.email = 'root@library.example.jp'
32
32
  system_user.role = Role.where(name: 'Administrator').first
33
33
  system_user.save!
34
34
  system_profile = new_profile
35
35
  system_profile.user = system_user
36
36
  system_profile.save!
37
- system_profile.index
38
37
 
39
38
  user = User.new
40
39
  user.username = username
41
40
  user.email = email
42
- user.email_confirmation = email
43
41
  user.password = password
44
42
  user.password_confirmation = password
45
- user.operator = user
46
43
  #user.confirm!
47
44
  user.role = Role.where(name: 'Administrator').first
48
45
  user.save!
@@ -50,6 +47,4 @@ profile = new_profile
50
47
  profile.user_number = '0'
51
48
  profile.user = user
52
49
  profile.save!
53
- profile.index
54
- Sunspot.commit
55
50
  puts 'Administrator account created.'
@@ -15,10 +15,10 @@
15
15
  See the License for the specific language governing permissions and
16
16
  limitations under the License.
17
17
  -->
18
- <!--
18
+ <!--
19
19
  This is the Solr schema file. This file should be named "schema.xml" and
20
20
  should be in the conf directory under the solr home
21
- (i.e. ./solr/conf/schema.xml by default)
21
+ (i.e. ./solr/conf/schema.xml by default)
22
22
  or located where the classloader for the Solr webapp can find it.
23
23
 
24
24
  This example schema is the recommended starting point for users.
@@ -60,15 +60,11 @@
60
60
  <fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
61
61
  <!-- *** This fieldType is used by Sunspot! *** -->
62
62
  <fieldType name="text" class="solr.TextField" omitNorms="false">
63
- <analyzer type="index" class="org.apache.lucene.analysis.cjk.CJKAnalyzer">
64
- <tokenizer class="solr.StandardTokenizerFactory"/>
65
- <filter class="solr.StandardFilterFactory"/>
66
- <filter class="solr.LowerCaseFilterFactory"/>
67
- </analyzer>
68
- <analyzer type="query" class="org.apache.lucene.analysis.cjk.CJKAnalyzer">
63
+ <analyzer>
69
64
  <tokenizer class="solr.StandardTokenizerFactory"/>
70
65
  <filter class="solr.StandardFilterFactory"/>
71
66
  <filter class="solr.LowerCaseFilterFactory"/>
67
+ <filter class="solr.PorterStemFilterFactory"/>
72
68
  </analyzer>
73
69
  </fieldType>
74
70
  <!-- *** This fieldType is used by Sunspot! *** -->
@@ -88,8 +84,22 @@
88
84
  <!-- *** This fieldType is used by Sunspot! *** -->
89
85
  <fieldType name="tfloat" class="solr.TrieFloatField" omitNorms="true"/>
90
86
  <!-- *** This fieldType is used by Sunspot! *** -->
91
- <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true"/>
87
+ <fieldType name="tdate" class="solr.TrieDateField"
88
+ omitNorms="true"/>
92
89
 
90
+ <!-- Special field type for spell correction. Be careful about
91
+ adding filters here, as they apply *before* your values go in
92
+ the spellcheck. For example, the lowercase filter here means
93
+ all spelling suggestions will be lower case (without it,
94
+ though, you'd have duplicate suggestions for lower and proper
95
+ cased words). -->
96
+ <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
97
+ <analyzer>
98
+ <tokenizer class="solr.StandardTokenizerFactory"/>
99
+ <filter class="solr.StandardFilterFactory"/>
100
+ <filter class="solr.LowerCaseFilterFactory"/>
101
+ </analyzer>
102
+ </fieldType>
93
103
  <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
94
104
  <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
95
105
  </types>
@@ -112,9 +122,9 @@
112
122
  given field.
113
123
  When using MoreLikeThis, fields used for similarity should be
114
124
  stored for best performance.
115
- termPositions: Store position information with the term vector.
125
+ termPositions: Store position information with the term vector.
116
126
  This will increase storage costs.
117
- termOffsets: Store offset information with the term vector. This
127
+ termOffsets: Store offset information with the term vector. This
118
128
  will increase storage costs.
119
129
  default: a value that should be used if no value is specified
120
130
  when adding a document.
@@ -240,7 +250,11 @@
240
250
  <dynamicField name="*_llm" stored="false" type="location" multiValued="true" indexed="true"/>
241
251
  <dynamicField name="*_lls" stored="true" type="location" multiValued="false" indexed="true"/>
242
252
  <dynamicField name="*_llms" stored="true" type="location" multiValued="true" indexed="true"/>
253
+ <field name="textSpell" stored="false" type="textSpell" multiValued="true" indexed="true"/>
254
+ <!-- required by Solr 4 -->
255
+ <field name="_version_" type="string" indexed="true" stored="true" multiValued="false" />
243
256
  </fields>
257
+
244
258
  <!-- Field to use to determine and enforce document uniqueness.
245
259
  Unless this field is marked with required="false", it will be a required field
246
260
  -->
@@ -251,5 +265,11 @@
251
265
  <solrQueryParser defaultOperator="AND"/>
252
266
  <!-- copyField commands copy one field to another at the time a document
253
267
  is added to the index. It's used either to index the same field differently,
254
- or to add multiple fields to the same field for easier/faster searching. -->
268
+ or to add multiple fields to the same field for easier/faster
269
+ searching. -->
270
+
271
+ <!-- Use copyField to copy the fields you want to run spell checking
272
+ on into one field. For example: -->
273
+ <copyField source="*_text" dest="textSpell" />
274
+ <copyField source="*_s" dest="textSpell" />
255
275
  </schema>