enju_question 0.0.3

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.
Files changed (130) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +36 -0
  4. data/app/controllers/answers_controller.rb +140 -0
  5. data/app/controllers/questions_controller.rb +171 -0
  6. data/app/models/answer.rb +59 -0
  7. data/app/models/answer_has_item.rb +20 -0
  8. data/app/models/question.rb +87 -0
  9. data/app/models/question_sweeper.rb +17 -0
  10. data/app/views/answers/_form.html.erb +33 -0
  11. data/app/views/answers/edit.html.erb +13 -0
  12. data/app/views/answers/index.atom.builder +16 -0
  13. data/app/views/answers/index.html.erb +44 -0
  14. data/app/views/answers/index.rss.builder +31 -0
  15. data/app/views/answers/new.html.erb +14 -0
  16. data/app/views/answers/new.mobile.erb +35 -0
  17. data/app/views/answers/show.html.erb +54 -0
  18. data/app/views/questions/_crd.html.erb +24 -0
  19. data/app/views/questions/_index.html.erb +22 -0
  20. data/app/views/questions/_index_user.html.erb +18 -0
  21. data/app/views/questions/_list.html.erb +69 -0
  22. data/app/views/questions/_solved_facet.html.erb +21 -0
  23. data/app/views/questions/edit.html.erb +44 -0
  24. data/app/views/questions/index.atom.builder +16 -0
  25. data/app/views/questions/index.html.erb +5 -0
  26. data/app/views/questions/index.js.erb +2 -0
  27. data/app/views/questions/index.mobile.erb +21 -0
  28. data/app/views/questions/index.rss.builder +41 -0
  29. data/app/views/questions/index_crd.xml.builder +36 -0
  30. data/app/views/questions/new.html.erb +35 -0
  31. data/app/views/questions/show.html.erb +62 -0
  32. data/app/views/questions/show.mobile.erb +46 -0
  33. data/app/views/questions/show_crd.xml.builder +34 -0
  34. data/config/routes.rb +10 -0
  35. data/db/migrate/098_create_questions.rb +21 -0
  36. data/db/migrate/099_create_answers.rb +21 -0
  37. data/db/migrate/20100217054028_create_answer_has_items.rb +17 -0
  38. data/lib/enju_question/engine.rb +4 -0
  39. data/lib/enju_question/version.rb +3 -0
  40. data/lib/enju_question.rb +4 -0
  41. data/lib/tasks/enju_question_tasks.rake +4 -0
  42. data/spec/cassette_library/enju_ndl/crd.yml +440 -0
  43. data/spec/controllers/answers_controller_spec.rb +486 -0
  44. data/spec/controllers/questions_controller_spec.rb +559 -0
  45. data/spec/dummy/Rakefile +7 -0
  46. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  47. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  48. data/spec/dummy/app/controllers/application_controller.rb +106 -0
  49. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  50. data/spec/dummy/app/models/ability.rb +42 -0
  51. data/spec/dummy/app/models/item.rb +5 -0
  52. data/spec/dummy/app/models/role.rb +8 -0
  53. data/spec/dummy/app/models/user.rb +29 -0
  54. data/spec/dummy/app/models/user_group.rb +2 -0
  55. data/spec/dummy/app/models/user_has_role.rb +4 -0
  56. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  57. data/spec/dummy/app/views/page/403.html.erb +9 -0
  58. data/spec/dummy/app/views/page/403.mobile.erb +5 -0
  59. data/spec/dummy/app/views/page/403.xml.erb +4 -0
  60. data/spec/dummy/app/views/page/404.html.erb +9 -0
  61. data/spec/dummy/app/views/page/404.mobile.erb +5 -0
  62. data/spec/dummy/app/views/page/404.xml.erb +4 -0
  63. data/spec/dummy/config/application.rb +46 -0
  64. data/spec/dummy/config/boot.rb +10 -0
  65. data/spec/dummy/config/database.yml +25 -0
  66. data/spec/dummy/config/environment.rb +5 -0
  67. data/spec/dummy/config/environments/development.rb +30 -0
  68. data/spec/dummy/config/environments/production.rb +60 -0
  69. data/spec/dummy/config/environments/test.rb +39 -0
  70. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  71. data/spec/dummy/config/initializers/devise.rb +209 -0
  72. data/spec/dummy/config/initializers/inflections.rb +10 -0
  73. data/spec/dummy/config/initializers/mime_types.rb +6 -0
  74. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  75. data/spec/dummy/config/initializers/session_store.rb +8 -0
  76. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  77. data/spec/dummy/config/locales/en.yml +5 -0
  78. data/spec/dummy/config/routes.rb +60 -0
  79. data/spec/dummy/config.ru +4 -0
  80. data/spec/dummy/db/development.sqlite3 +0 -0
  81. data/spec/dummy/db/migrate/006_create_items.rb +36 -0
  82. data/spec/dummy/db/migrate/20100525171356_acts_as_taggable_on_migration.rb +30 -0
  83. data/spec/dummy/db/migrate/20111201121636_create_languages.rb +16 -0
  84. data/spec/dummy/db/migrate/20111201121844_create_roles.rb +12 -0
  85. data/spec/dummy/db/migrate/20111201155456_create_users.rb +13 -0
  86. data/spec/dummy/db/migrate/20111201155513_add_devise_to_users.rb +31 -0
  87. data/spec/dummy/db/migrate/20111201163342_create_user_groups.rb +12 -0
  88. data/spec/dummy/db/migrate/20111201163718_create_user_has_roles.rb +10 -0
  89. data/spec/dummy/db/schema.rb +168 -0
  90. data/spec/dummy/db/test.sqlite3 +0 -0
  91. data/spec/dummy/lib/expire_editable_fragment.rb +62 -0
  92. data/spec/dummy/log/development.log +2 -0
  93. data/spec/dummy/log/sunspot-solr-test.log +222 -0
  94. data/spec/dummy/log/test.log +77918 -0
  95. data/spec/dummy/public/404.html +26 -0
  96. data/spec/dummy/public/422.html +26 -0
  97. data/spec/dummy/public/500.html +26 -0
  98. data/spec/dummy/public/favicon.ico +0 -0
  99. data/spec/dummy/script/rails +6 -0
  100. data/spec/dummy/solr/conf/admin-extra.html +31 -0
  101. data/spec/dummy/solr/conf/elevate.xml +36 -0
  102. data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  103. data/spec/dummy/solr/conf/protwords.txt +21 -0
  104. data/spec/dummy/solr/conf/schema.xml +238 -0
  105. data/spec/dummy/solr/conf/scripts.conf +24 -0
  106. data/spec/dummy/solr/conf/solrconfig.xml +934 -0
  107. data/spec/dummy/solr/conf/spellings.txt +2 -0
  108. data/spec/dummy/solr/conf/stopwords.txt +58 -0
  109. data/spec/dummy/solr/conf/synonyms.txt +31 -0
  110. data/spec/dummy/solr/data/test/index/segments.gen +0 -0
  111. data/spec/dummy/solr/data/test/index/segments_1 +0 -0
  112. data/spec/dummy/solr/data/test/spellchecker/segments.gen +0 -0
  113. data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
  114. data/spec/factories/answer.rb +7 -0
  115. data/spec/factories/question.rb +6 -0
  116. data/spec/factories/user.rb +34 -0
  117. data/spec/fixtures/answer_has_items.yml +26 -0
  118. data/spec/fixtures/answers.yml +61 -0
  119. data/spec/fixtures/questions.yml +61 -0
  120. data/spec/fixtures/roles.yml +21 -0
  121. data/spec/fixtures/user_groups.yml +25 -0
  122. data/spec/fixtures/user_has_roles.yml +41 -0
  123. data/spec/fixtures/users.yml +69 -0
  124. data/spec/models/answer_has_item_spec.rb +20 -0
  125. data/spec/models/answer_spec.rb +25 -0
  126. data/spec/spec_helper.rb +48 -0
  127. data/spec/support/controller_macros.rb +48 -0
  128. data/spec/support/devise.rb +4 -0
  129. data/spec/support/vcr.rb +6 -0
  130. metadata +306 -0
@@ -0,0 +1,60 @@
1
+ Dummy::Application.routes.draw do
2
+ devise_for :users
3
+
4
+ # The priority is based upon order of creation:
5
+ # first created -> highest priority.
6
+
7
+ # Sample of regular route:
8
+ # match 'products/:id' => 'catalog#view'
9
+ # Keep in mind you can assign values other than :controller and :action
10
+
11
+ # Sample of named route:
12
+ # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
13
+ # This route can be invoked with purchase_url(:id => product.id)
14
+
15
+ # Sample resource route (maps HTTP verbs to controller actions automatically):
16
+ # resources :products
17
+
18
+ # Sample resource route with options:
19
+ # resources :products do
20
+ # member do
21
+ # get 'short'
22
+ # post 'toggle'
23
+ # end
24
+ #
25
+ # collection do
26
+ # get 'sold'
27
+ # end
28
+ # end
29
+
30
+ # Sample resource route with sub-resources:
31
+ # resources :products do
32
+ # resources :comments, :sales
33
+ # resource :seller
34
+ # end
35
+
36
+ # Sample resource route with more complex sub-resources
37
+ # resources :products do
38
+ # resources :comments
39
+ # resources :sales do
40
+ # get 'recent', :on => :collection
41
+ # end
42
+ # end
43
+
44
+ # Sample resource route within a namespace:
45
+ # namespace :admin do
46
+ # # Directs /admin/products/* to Admin::ProductsController
47
+ # # (app/controllers/admin/products_controller.rb)
48
+ # resources :products
49
+ # end
50
+
51
+ # You can have the root of your site routed with "root"
52
+ # just remember to delete public/index.html.
53
+ # root :to => 'welcome#index'
54
+
55
+ # See how all your routes lay out with "rake routes"
56
+
57
+ # This is a legacy wild controller route that's not recommended for RESTful applications.
58
+ # Note: This route will make all actions in every controller accessible via GET requests.
59
+ # match ':controller(/:action(/:id(.:format)))'
60
+ end
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Dummy::Application
Binary file
@@ -0,0 +1,36 @@
1
+ class CreateItems < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :items do |t|
4
+ #t.integer :manifestation_id
5
+ t.string :call_number
6
+ t.string :item_identifier
7
+ t.integer :circulation_status_id, :default => 5, :null => false
8
+ t.integer :checkout_type_id, :default => 1, :null => false
9
+ t.timestamps
10
+ t.datetime :deleted_at
11
+ t.integer :shelf_id, :default => 1, :null => false
12
+ t.integer :basket_id
13
+ t.boolean :include_supplements, :default => false, :null => false
14
+ t.integer :checkouts_count, :default => 0, :null => false
15
+ t.integer :owns_count, :default => 0, :null => false
16
+ t.integer :resource_has_subjects_count, :default => 0, :null => false
17
+ t.text :note
18
+ t.string :url
19
+ t.integer :price
20
+ t.integer :lock_version, :default => 0, :null => false
21
+ t.integer :required_role_id, :default => 1, :null => false
22
+ t.string :state
23
+ t.integer :required_score, :default => 0, :null => false
24
+ end
25
+ #add_index :items, :manifestation_id
26
+ add_index :items, :circulation_status_id
27
+ add_index :items, :checkout_type_id
28
+ add_index :items, :shelf_id
29
+ add_index :items, :item_identifier
30
+ add_index :items, :required_role_id
31
+ end
32
+
33
+ def self.down
34
+ drop_table :items
35
+ end
36
+ end
@@ -0,0 +1,30 @@
1
+ class ActsAsTaggableOnMigration < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :tags do |t|
4
+ t.string :name
5
+ t.string :name_transcription
6
+ t.timestamps
7
+ end
8
+
9
+ create_table :taggings do |t|
10
+ t.references :tag
11
+
12
+ # You should make sure that the column created is
13
+ # long enough to store the required class names.
14
+ t.references :taggable, :polymorphic => true
15
+ t.references :tagger, :polymorphic => true
16
+
17
+ t.string :context
18
+
19
+ t.datetime :created_at
20
+ end
21
+
22
+ add_index :taggings, :tag_id
23
+ add_index :taggings, [:taggable_id, :taggable_type, :context]
24
+ end
25
+
26
+ def self.down
27
+ drop_table :taggings
28
+ drop_table :tags
29
+ end
30
+ end
@@ -0,0 +1,16 @@
1
+ class CreateLanguages < ActiveRecord::Migration
2
+ def change
3
+ create_table :languages do |t|
4
+ t.string :name
5
+ t.string :native_name
6
+ t.text :display_name
7
+ t.string :iso_639_1
8
+ t.string :iso_639_2
9
+ t.string :iso_639_3
10
+ t.text :note
11
+ t.integer :position
12
+
13
+ t.timestamps
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ class CreateRoles < ActiveRecord::Migration
2
+ def change
3
+ create_table :roles do |t|
4
+ t.string :name
5
+ t.text :display_name
6
+ t.text :note
7
+ t.integer :position
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def change
3
+ create_table :users do |t|
4
+ t.integer :user_group_id
5
+ t.integer :required_role_id
6
+ t.string :username
7
+ t.text :note
8
+ t.string :locale
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,31 @@
1
+ class AddDeviseToUsers < ActiveRecord::Migration
2
+ def self.up
3
+ change_table(:users) do |t|
4
+ t.database_authenticatable :null => false
5
+ t.recoverable
6
+ t.rememberable
7
+ t.trackable
8
+
9
+ # t.encryptable
10
+ # t.confirmable
11
+ # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
12
+ # t.token_authenticatable
13
+
14
+
15
+ # Uncomment below if timestamps were not included in your original model.
16
+ # t.timestamps
17
+ end
18
+
19
+ add_index :users, :email #, :unique => true
20
+ add_index :users, :reset_password_token, :unique => true
21
+ # add_index :users, :confirmation_token, :unique => true
22
+ # add_index :users, :unlock_token, :unique => true
23
+ # add_index :users, :authentication_token, :unique => true
24
+ end
25
+
26
+ def self.down
27
+ # By default, we don't want to make any assumption about how to roll back a migration when your
28
+ # model already existed. Please edit below which fields you would like to remove in this migration.
29
+ raise ActiveRecord::IrreversibleMigration
30
+ end
31
+ end
@@ -0,0 +1,12 @@
1
+ class CreateUserGroups < ActiveRecord::Migration
2
+ def change
3
+ create_table :user_groups do |t|
4
+ t.string :name
5
+ t.text :display_name
6
+ t.text :note
7
+ t.integer :position
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ class CreateUserHasRoles < ActiveRecord::Migration
2
+ def change
3
+ create_table :user_has_roles do |t|
4
+ t.integer :user_id
5
+ t.integer :role_id
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,168 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended to check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(:version => 20111201163718) do
15
+
16
+ create_table "answer_has_items", :force => true do |t|
17
+ t.integer "answer_id"
18
+ t.integer "item_id"
19
+ t.integer "position"
20
+ t.datetime "created_at"
21
+ t.datetime "updated_at"
22
+ end
23
+
24
+ add_index "answer_has_items", ["answer_id"], :name => "index_answer_has_items_on_answer_id"
25
+ add_index "answer_has_items", ["item_id"], :name => "index_answer_has_items_on_item_id"
26
+
27
+ create_table "answers", :force => true do |t|
28
+ t.integer "user_id", :null => false
29
+ t.integer "question_id", :null => false
30
+ t.text "body"
31
+ t.datetime "created_at"
32
+ t.datetime "updated_at"
33
+ t.datetime "deleted_at"
34
+ t.boolean "shared", :default => true, :null => false
35
+ t.string "state"
36
+ t.text "item_identifier_list"
37
+ t.text "url_list"
38
+ end
39
+
40
+ add_index "answers", ["question_id"], :name => "index_answers_on_question_id"
41
+ add_index "answers", ["user_id"], :name => "index_answers_on_user_id"
42
+
43
+ create_table "items", :force => true do |t|
44
+ t.string "call_number"
45
+ t.string "item_identifier"
46
+ t.integer "circulation_status_id", :default => 5, :null => false
47
+ t.integer "checkout_type_id", :default => 1, :null => false
48
+ t.datetime "created_at"
49
+ t.datetime "updated_at"
50
+ t.datetime "deleted_at"
51
+ t.integer "shelf_id", :default => 1, :null => false
52
+ t.integer "basket_id"
53
+ t.boolean "include_supplements", :default => false, :null => false
54
+ t.integer "checkouts_count", :default => 0, :null => false
55
+ t.integer "owns_count", :default => 0, :null => false
56
+ t.integer "resource_has_subjects_count", :default => 0, :null => false
57
+ t.text "note"
58
+ t.string "url"
59
+ t.integer "price"
60
+ t.integer "lock_version", :default => 0, :null => false
61
+ t.integer "required_role_id", :default => 1, :null => false
62
+ t.string "state"
63
+ t.integer "required_score", :default => 0, :null => false
64
+ end
65
+
66
+ add_index "items", ["checkout_type_id"], :name => "index_items_on_checkout_type_id"
67
+ add_index "items", ["circulation_status_id"], :name => "index_items_on_circulation_status_id"
68
+ add_index "items", ["item_identifier"], :name => "index_items_on_item_identifier"
69
+ add_index "items", ["required_role_id"], :name => "index_items_on_required_role_id"
70
+ add_index "items", ["shelf_id"], :name => "index_items_on_shelf_id"
71
+
72
+ create_table "languages", :force => true do |t|
73
+ t.string "name"
74
+ t.string "native_name"
75
+ t.text "display_name"
76
+ t.string "iso_639_1"
77
+ t.string "iso_639_2"
78
+ t.string "iso_639_3"
79
+ t.text "note"
80
+ t.integer "position"
81
+ t.datetime "created_at"
82
+ t.datetime "updated_at"
83
+ end
84
+
85
+ create_table "questions", :force => true do |t|
86
+ t.integer "user_id", :null => false
87
+ t.text "body"
88
+ t.boolean "shared", :default => true, :null => false
89
+ t.integer "answers_count", :default => 0, :null => false
90
+ t.datetime "deleted_at"
91
+ t.string "state"
92
+ t.boolean "solved", :default => false, :null => false
93
+ t.text "note"
94
+ t.datetime "created_at"
95
+ t.datetime "updated_at"
96
+ end
97
+
98
+ add_index "questions", ["user_id"], :name => "index_questions_on_user_id"
99
+
100
+ create_table "roles", :force => true do |t|
101
+ t.string "name"
102
+ t.text "display_name"
103
+ t.text "note"
104
+ t.integer "position"
105
+ t.datetime "created_at"
106
+ t.datetime "updated_at"
107
+ end
108
+
109
+ create_table "taggings", :force => true do |t|
110
+ t.integer "tag_id"
111
+ t.integer "taggable_id"
112
+ t.string "taggable_type"
113
+ t.integer "tagger_id"
114
+ t.string "tagger_type"
115
+ t.string "context"
116
+ t.datetime "created_at"
117
+ end
118
+
119
+ add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
120
+ add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
121
+
122
+ create_table "tags", :force => true do |t|
123
+ t.string "name"
124
+ t.string "name_transcription"
125
+ t.datetime "created_at"
126
+ t.datetime "updated_at"
127
+ end
128
+
129
+ create_table "user_groups", :force => true do |t|
130
+ t.string "name"
131
+ t.text "display_name"
132
+ t.text "note"
133
+ t.integer "position"
134
+ t.datetime "created_at"
135
+ t.datetime "updated_at"
136
+ end
137
+
138
+ create_table "user_has_roles", :force => true do |t|
139
+ t.integer "user_id"
140
+ t.integer "role_id"
141
+ t.datetime "created_at"
142
+ t.datetime "updated_at"
143
+ end
144
+
145
+ create_table "users", :force => true do |t|
146
+ t.integer "user_group_id"
147
+ t.integer "required_role_id"
148
+ t.string "username"
149
+ t.text "note"
150
+ t.string "locale"
151
+ t.datetime "created_at"
152
+ t.datetime "updated_at"
153
+ t.string "email", :default => "", :null => false
154
+ t.string "encrypted_password", :limit => 128, :default => "", :null => false
155
+ t.string "reset_password_token"
156
+ t.datetime "reset_password_sent_at"
157
+ t.datetime "remember_created_at"
158
+ t.integer "sign_in_count", :default => 0
159
+ t.datetime "current_sign_in_at"
160
+ t.datetime "last_sign_in_at"
161
+ t.string "current_sign_in_ip"
162
+ t.string "last_sign_in_ip"
163
+ end
164
+
165
+ add_index "users", ["email"], :name => "index_users_on_email"
166
+ add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
167
+
168
+ end
Binary file
@@ -0,0 +1,62 @@
1
+ module ExpireEditableFragment
2
+ def expire_editable_fragment(record, fragments = [], formats = [])
3
+ fragments.uniq!
4
+ fragments = ['detail'] if fragments.empty?
5
+ if record
6
+ if record.is_a?(Manifestation)
7
+ expire_manifestation_cache(record, fragments, formats)
8
+ else
9
+ I18n.available_locales.each do |locale|
10
+ Role.all_cache.each do |role|
11
+ fragments.each do |fragment|
12
+ expire_fragment(:controller => record.class.to_s.pluralize.downcase, :action => :show, :id => record.id, :page => fragment, :role => role.name, :locale => locale)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ def expire_manifestation_cache(manifestation, fragments = [], formats = [])
21
+ fragments = %w[detail pickup title show_list show_index sru] if fragments.size == 1 and fragments.first == 'detail'
22
+ expire_fragment(:controller => :manifestations, :action => :index, :page => 'numdocs')
23
+ fragments.uniq.each do |fragment|
24
+ expire_manifestation_fragment(manifestation, fragment, formats)
25
+ end
26
+ if defined?(EnjuBookmark)
27
+ manifestation.bookmarks.each do |bookmark|
28
+ expire_tag_cloud(bookmark)
29
+ end
30
+ end
31
+ end
32
+
33
+ def expire_manifestation_fragment(manifestation, fragment, formats = [])
34
+ formats = ['atom', 'csv', 'html', 'mods', 'mobile', 'oai_list_identifiers', 'oai_list_records', 'rdf', 'rss'] if formats.empty?
35
+ if manifestation
36
+ I18n.available_locales.each do |locale|
37
+ if fragment == 'holding'
38
+ expire_fragment(:controller => :manifestations, :action => :show, :id => manifestation.id, :page => fragment, :locale => locale, :manifestation_id => nil)
39
+ formats.each do |format|
40
+ expire_fragment(:controller => :manifestations, :action => :show, :id => manifestation.id, :page => fragment, :locale => locale, :format => format, :manifestation_id => nil)
41
+ end
42
+ else
43
+ Role.all_cache.each do |role|
44
+ expire_fragment(:controller => :manifestations, :action => :show, :id => manifestation.id, :page => fragment, :role => role.name, :locale => locale, :manifestation_id => nil)
45
+ formats.each do |format|
46
+ expire_fragment(:controller => :manifestations, :action => :show, :id => manifestation.id, :page => fragment, :role => role.name, :locale => locale, :format => format, :manifestation_id => nil)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ def expire_tag_cloud(bookmark)
55
+ I18n.available_locales.each do |locale|
56
+ Role.all_cache.each do |role|
57
+ expire_fragment(:controller => :tags, :action => :index, :page => 'user_tag_cloud', :user_id => bookmark.user.username, :locale => locale, :role => role.name, :user_id => nil)
58
+ expire_fragment(:controller => :tags, :action => :index, :page => 'public_tag_cloud', :locale => locale, :role => role.name, :user_id => nil)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,2 @@
1
+ SOLR Request (1.8ms) [ path=#<RSolr::Client:0x007fd361ba8b28> parameters={data: <?xml version="1.0" encoding="UTF-8"?><delete><query>type:Question</query></delete>, headers: {"Content-Type"=>"text/xml"}, method: post, params: {:wt=>:ruby}, query: wt=ruby, path: update, uri: http://localhost:8982/solr/update?wt=ruby} ]
2
+ SOLR Request (2.0ms) [ path=#<RSolr::Client:0x007fb543353c48> parameters={data: <?xml version="1.0" encoding="UTF-8"?><delete><query>type:Question</query></delete>, headers: {"Content-Type"=>"text/xml"}, method: post, params: {:wt=>:ruby}, query: wt=ruby, path: update, uri: http://localhost:8982/solr/update?wt=ruby} ]