enju_leaf 1.1.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (610) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +24 -0
  4. data/Rakefile +35 -0
  5. data/app/assets/images/border.png +0 -0
  6. data/app/assets/images/controls.png +0 -0
  7. data/app/assets/images/icons/arrow_divide.png +0 -0
  8. data/app/assets/images/icons/arrow_down.png +0 -0
  9. data/app/assets/images/icons/arrow_left.png +0 -0
  10. data/app/assets/images/icons/arrow_up.png +0 -0
  11. data/app/assets/images/icons/basket_add.png +0 -0
  12. data/app/assets/images/icons/book.png +0 -0
  13. data/app/assets/images/icons/book_edit.png +0 -0
  14. data/app/assets/images/icons/bullet_go.png +0 -0
  15. data/app/assets/images/icons/cancel.png +0 -0
  16. data/app/assets/images/icons/cd.png +0 -0
  17. data/app/assets/images/icons/comments.png +0 -0
  18. data/app/assets/images/icons/cross.png +0 -0
  19. data/app/assets/images/icons/date.png +0 -0
  20. data/app/assets/images/icons/delete.png +0 -0
  21. data/app/assets/images/icons/dvd.png +0 -0
  22. data/app/assets/images/icons/email.png +0 -0
  23. data/app/assets/images/icons/feed.png +0 -0
  24. data/app/assets/images/icons/film.png +0 -0
  25. data/app/assets/images/icons/group.png +0 -0
  26. data/app/assets/images/icons/help.png +0 -0
  27. data/app/assets/images/icons/lock.png +0 -0
  28. data/app/assets/images/icons/map.png +0 -0
  29. data/app/assets/images/icons/monitor.png +0 -0
  30. data/app/assets/images/icons/newspaper.png +0 -0
  31. data/app/assets/images/icons/page_edit.png +0 -0
  32. data/app/assets/images/icons/page_go.png +0 -0
  33. data/app/assets/images/icons/page_white_acrobat.png +0 -0
  34. data/app/assets/images/icons/page_white_cd.png +0 -0
  35. data/app/assets/images/icons/page_white_delete.png +0 -0
  36. data/app/assets/images/icons/page_white_dvd.png +0 -0
  37. data/app/assets/images/icons/page_white_edit.png +0 -0
  38. data/app/assets/images/icons/page_white_excel.png +0 -0
  39. data/app/assets/images/icons/page_white_flash.png +0 -0
  40. data/app/assets/images/icons/page_white_go.png +0 -0
  41. data/app/assets/images/icons/page_white_picture.png +0 -0
  42. data/app/assets/images/icons/page_white_powerpoint.png +0 -0
  43. data/app/assets/images/icons/page_white_text.png +0 -0
  44. data/app/assets/images/icons/page_white_word.png +0 -0
  45. data/app/assets/images/icons/page_white_zip.png +0 -0
  46. data/app/assets/images/icons/picture.png +0 -0
  47. data/app/assets/images/icons/picture_link.png +0 -0
  48. data/app/assets/images/icons/sound.png +0 -0
  49. data/app/assets/images/icons/star.png +0 -0
  50. data/app/assets/images/icons/stop.png +0 -0
  51. data/app/assets/images/icons/tag_blue_edit.png +0 -0
  52. data/app/assets/images/icons/user.png +0 -0
  53. data/app/assets/images/icons/world.png +0 -0
  54. data/app/assets/images/icons/world_go.png +0 -0
  55. data/app/assets/images/ie6/borderBottomCenter.png +0 -0
  56. data/app/assets/images/ie6/borderBottomLeft.png +0 -0
  57. data/app/assets/images/ie6/borderBottomRight.png +0 -0
  58. data/app/assets/images/ie6/borderMiddleLeft.png +0 -0
  59. data/app/assets/images/ie6/borderMiddleRight.png +0 -0
  60. data/app/assets/images/ie6/borderTopCenter.png +0 -0
  61. data/app/assets/images/ie6/borderTopLeft.png +0 -0
  62. data/app/assets/images/ie6/borderTopRight.png +0 -0
  63. data/app/assets/images/loading.gif +0 -0
  64. data/app/assets/images/loading_background.png +0 -0
  65. data/app/assets/images/overlay.png +0 -0
  66. data/app/assets/images/rails.png +0 -0
  67. data/app/assets/images/spinner.gif +0 -0
  68. data/app/assets/images/unknown_resource.png +0 -0
  69. data/app/assets/javascripts/enju_leaf.js +16 -0
  70. data/app/assets/javascripts/menu.enju.js +10 -0
  71. data/app/assets/javascripts/mobile.js +3 -0
  72. data/app/assets/javascripts/portlets.js +63 -0
  73. data/app/assets/javascripts/select_locale.js +9 -0
  74. data/app/assets/javascripts/tab_view.js +4 -0
  75. data/app/assets/stylesheets/enju.css +536 -0
  76. data/app/assets/stylesheets/enju_leaf.css +14 -0
  77. data/app/assets/stylesheets/enju_mobile.css +3 -0
  78. data/app/assets/stylesheets/enju_print.css +9 -0
  79. data/app/assets/stylesheets/images/ajax-loader.gif +0 -0
  80. data/app/assets/stylesheets/images/border.png +0 -0
  81. data/app/assets/stylesheets/images/controls.png +0 -0
  82. data/app/assets/stylesheets/images/icons-18-black.png +0 -0
  83. data/app/assets/stylesheets/images/icons-18-white.png +0 -0
  84. data/app/assets/stylesheets/images/icons-36-black.png +0 -0
  85. data/app/assets/stylesheets/images/icons-36-white.png +0 -0
  86. data/app/assets/stylesheets/images/ie6/borderBottomCenter.png +0 -0
  87. data/app/assets/stylesheets/images/ie6/borderBottomLeft.png +0 -0
  88. data/app/assets/stylesheets/images/ie6/borderBottomRight.png +0 -0
  89. data/app/assets/stylesheets/images/ie6/borderMiddleLeft.png +0 -0
  90. data/app/assets/stylesheets/images/ie6/borderMiddleRight.png +0 -0
  91. data/app/assets/stylesheets/images/ie6/borderTopCenter.png +0 -0
  92. data/app/assets/stylesheets/images/ie6/borderTopLeft.png +0 -0
  93. data/app/assets/stylesheets/images/ie6/borderTopRight.png +0 -0
  94. data/app/assets/stylesheets/images/loading.gif +0 -0
  95. data/app/assets/stylesheets/images/loading_background.png +0 -0
  96. data/app/assets/stylesheets/images/overlay.png +0 -0
  97. data/app/assets/stylesheets/images/spinner_bar.gif +0 -0
  98. data/app/assets/stylesheets/mobile.css +8 -0
  99. data/app/assets/stylesheets/pagination.css +92 -0
  100. data/app/assets/stylesheets/portlets.css +7 -0
  101. data/app/assets/stylesheets/print.css +7 -0
  102. data/app/assets/stylesheets/scaffold.css +56 -0
  103. data/app/assets/stylesheets/scaffold_modified.css +60 -0
  104. data/app/assets/stylesheets/scaffolds.css.scss +56 -0
  105. data/app/controllers/my_accounts_controller.rb +74 -0
  106. data/app/controllers/page_controller.rb +81 -0
  107. data/app/controllers/roles_controller.rb +44 -0
  108. data/app/controllers/user_groups_controller.rb +84 -0
  109. data/app/controllers/users_controller.rb +195 -0
  110. data/app/helpers/page_helper.rb +2 -0
  111. data/app/mailers/notifier.rb +40 -0
  112. data/app/models/enju_leaf/ability.rb +63 -0
  113. data/app/models/local_patron.rb +27 -0
  114. data/app/models/role.rb +46 -0
  115. data/app/models/setting.rb +4 -0
  116. data/app/models/user_group.rb +39 -0
  117. data/app/models/user_has_role.rb +21 -0
  118. data/app/models/user_sweeper.rb +18 -0
  119. data/app/views/devise/confirmations/new.html.erb +12 -0
  120. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  121. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  122. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  123. data/app/views/devise/passwords/edit.html.erb +24 -0
  124. data/app/views/devise/passwords/new.html.erb +20 -0
  125. data/app/views/devise/registrations/edit.html.erb +33 -0
  126. data/app/views/devise/registrations/new.html.erb +18 -0
  127. data/app/views/devise/sessions/new.html.erb +37 -0
  128. data/app/views/devise/sessions/new.mobile.erb +29 -0
  129. data/app/views/devise/shared/_links.erb +19 -0
  130. data/app/views/devise/unlocks/new.html.erb +12 -0
  131. data/app/views/kaminari/_first_page.html.erb +9 -0
  132. data/app/views/kaminari/_first_page.mobile.erb +12 -0
  133. data/app/views/kaminari/_gap.html.erb +8 -0
  134. data/app/views/kaminari/_gap.mobile.erb +10 -0
  135. data/app/views/kaminari/_last_page.html.erb +9 -0
  136. data/app/views/kaminari/_last_page.mobile.erb +13 -0
  137. data/app/views/kaminari/_next_page.html.erb +9 -0
  138. data/app/views/kaminari/_next_page.mobile.erb +13 -0
  139. data/app/views/kaminari/_page.html.erb +12 -0
  140. data/app/views/kaminari/_page.mobile.erb +12 -0
  141. data/app/views/kaminari/_paginator.html.erb +25 -0
  142. data/app/views/kaminari/_paginator.mobile.erb +25 -0
  143. data/app/views/kaminari/_prev_page.html.erb +9 -0
  144. data/app/views/kaminari/_prev_page.mobile.erb +13 -0
  145. data/app/views/layouts/application.html.erb +34 -0
  146. data/app/views/layouts/application.mobile.erb +18 -0
  147. data/app/views/layouts/devise/passwords.html.erb +21 -0
  148. data/app/views/layouts/devise/passwords.mobile.erb +18 -0
  149. data/app/views/layouts/devise/sessions.html.erb +21 -0
  150. data/app/views/layouts/devise/sessions.mobile.erb +18 -0
  151. data/app/views/layouts/patrons.html.erb +26 -0
  152. data/app/views/layouts/patrons.mobile.erb +18 -0
  153. data/app/views/my_accounts/_edit_credential.html.erb +87 -0
  154. data/app/views/my_accounts/_form.html.erb +24 -0
  155. data/app/views/my_accounts/_show.html.erb +1 -0
  156. data/app/views/my_accounts/edit.html.erb +73 -0
  157. data/app/views/my_accounts/show.html.erb +72 -0
  158. data/app/views/my_accounts/show.mobile.erb +1 -0
  159. data/app/views/notifier/manifestation_info.en.text.erb +18 -0
  160. data/app/views/notifier/manifestation_info.ja.text.erb +18 -0
  161. data/app/views/page/403.html.erb +9 -0
  162. data/app/views/page/403.mobile.erb +5 -0
  163. data/app/views/page/403.xml.erb +4 -0
  164. data/app/views/page/404.html.erb +9 -0
  165. data/app/views/page/404.mobile.erb +5 -0
  166. data/app/views/page/404.xml.erb +4 -0
  167. data/app/views/page/500.html.erb +9 -0
  168. data/app/views/page/500.mobile.erb +5 -0
  169. data/app/views/page/500.xml.erb +4 -0
  170. data/app/views/page/_add.html.erb +11 -0
  171. data/app/views/page/_footer.html.erb +13 -0
  172. data/app/views/page/_footer.mobile.erb +3 -0
  173. data/app/views/page/_header.html.erb +34 -0
  174. data/app/views/page/_include.html.erb +4 -0
  175. data/app/views/page/_index.html.erb +57 -0
  176. data/app/views/page/_index.mobile.erb +25 -0
  177. data/app/views/page/_locale_menu.html.erb +2 -0
  178. data/app/views/page/_login.html.erb +5 -0
  179. data/app/views/page/_menu.html.erb +136 -0
  180. data/app/views/page/_mobile.mobile.erb +3 -0
  181. data/app/views/page/_msie_acceralator.html.erb +6 -0
  182. data/app/views/page/_portlets.html.erb +26 -0
  183. data/app/views/page/_position.html.erb +2 -0
  184. data/app/views/page/_required_field.html.erb +4 -0
  185. data/app/views/page/_search_form.html.erb +11 -0
  186. data/app/views/page/_search_form.mobile.erb +10 -0
  187. data/app/views/page/_select_locale.html.erb +14 -0
  188. data/app/views/page/about.en.html.erb +58 -0
  189. data/app/views/page/about.ja.html.erb +57 -0
  190. data/app/views/page/add_on.html.erb +13 -0
  191. data/app/views/page/advanced_search.html.erb +77 -0
  192. data/app/views/page/configuration.html.erb +113 -0
  193. data/app/views/page/export.html.erb +31 -0
  194. data/app/views/page/import.html.erb +19 -0
  195. data/app/views/page/index.html.erb +5 -0
  196. data/app/views/page/index.mobile.erb +1 -0
  197. data/app/views/page/msie_acceralator.builder +15 -0
  198. data/app/views/page/opensearch.builder +16 -0
  199. data/app/views/page/statistics.html.erb +105 -0
  200. data/app/views/roles/_form.html.erb +19 -0
  201. data/app/views/roles/edit.html.erb +13 -0
  202. data/app/views/roles/index.html.erb +28 -0
  203. data/app/views/roles/new.html.erb +12 -0
  204. data/app/views/roles/show.html.erb +44 -0
  205. data/app/views/user_groups/_form.html.erb +35 -0
  206. data/app/views/user_groups/edit.html.erb +13 -0
  207. data/app/views/user_groups/index.html.erb +41 -0
  208. data/app/views/user_groups/new.html.erb +12 -0
  209. data/app/views/user_groups/show.html.erb +64 -0
  210. data/app/views/users/_edit_credential.html.erb +79 -0
  211. data/app/views/users/_form.html.erb +24 -0
  212. data/app/views/users/_show.html.erb +1 -0
  213. data/app/views/users/edit.html.erb +76 -0
  214. data/app/views/users/index.html.erb +67 -0
  215. data/app/views/users/new.html.erb +85 -0
  216. data/app/views/users/show.html.erb +86 -0
  217. data/app/views/users/show.mobile.erb +1 -0
  218. data/config/initializers/mime_types.rb +13 -0
  219. data/config/locales/devise.en.yml +59 -0
  220. data/config/locales/devise.ja.yml +55 -0
  221. data/config/locales/ja.yml +200 -0
  222. data/config/locales/kaminari.yml +19 -0
  223. data/config/locales/simple_form.en.yml +25 -0
  224. data/config/locales/simple_form.ja.yml +27 -0
  225. data/config/locales/translation_en.yml +423 -0
  226. data/config/locales/translation_ja.yml +400 -0
  227. data/config/routes.rb +33 -0
  228. data/db/fixtures2/bookstores.yml +9 -0
  229. data/db/fixtures2/carrier_type_has_checkout_types.yml +8 -0
  230. data/db/fixtures2/carrier_types.yml +29 -0
  231. data/db/fixtures2/checkout_types.yml +22 -0
  232. data/db/fixtures2/circulation_statuses.yml +106 -0
  233. data/db/fixtures2/classification_types.yml +7 -0
  234. data/db/fixtures2/content_types.yml +22 -0
  235. data/db/fixtures2/countries.yml +2044 -0
  236. data/db/fixtures2/create_types.yml +47 -0
  237. data/db/fixtures2/event_categories.yml +13 -0
  238. data/db/fixtures2/form_of_works.yml +7 -0
  239. data/db/fixtures2/frequencies.yml +55 -0
  240. data/db/fixtures2/languages.yml +1885 -0
  241. data/db/fixtures2/libraries.yml +25 -0
  242. data/db/fixtures2/library_groups.yml +10 -0
  243. data/db/fixtures2/licenses.yml +15 -0
  244. data/db/fixtures2/manifestation_relationship_types.yml +14 -0
  245. data/db/fixtures2/message_templates.yml +84 -0
  246. data/db/fixtures2/patron_relationship_types.yml +20 -0
  247. data/db/fixtures2/patron_types.yml +16 -0
  248. data/db/fixtures2/patrons.yml +19 -0
  249. data/db/fixtures2/produce_types.yml +32 -0
  250. data/db/fixtures2/realize_types.yml +40 -0
  251. data/db/fixtures2/request_status_types.yml +37 -0
  252. data/db/fixtures2/request_types.yml +29 -0
  253. data/db/fixtures2/roles.yml +29 -0
  254. data/db/fixtures2/shelves.yml +15 -0
  255. data/db/fixtures2/subject_types.yml +28 -0
  256. data/db/fixtures2/use_restrictions.yml +79 -0
  257. data/db/fixtures2/user_groups.yml +7 -0
  258. data/db/migrate/041_create_roles.rb +13 -0
  259. data/db/migrate/077_create_user_groups.rb +12 -0
  260. data/db/migrate/20091202124834_create_versions.rb +18 -0
  261. data/db/migrate/20100606065209_create_user_has_roles.rb +12 -0
  262. data/db/migrate/20110318183304_add_valid_period_for_new_user_to_user_group.rb +11 -0
  263. data/db/migrate/20130221154434_add_additional_attributes_to_user.rb +26 -0
  264. data/db/schema.rb +1896 -0
  265. data/lib/enju_leaf.rb +294 -0
  266. data/lib/enju_leaf/controller.rb +24 -0
  267. data/lib/enju_leaf/engine.rb +16 -0
  268. data/lib/enju_leaf/helper.rb +116 -0
  269. data/lib/enju_leaf/user.rb +285 -0
  270. data/lib/enju_leaf/version.rb +3 -0
  271. data/lib/generators/enju_leaf/USAGE +8 -0
  272. data/lib/generators/enju_leaf/quick_install/USAGE +8 -0
  273. data/lib/generators/enju_leaf/quick_install/quick_install_generator.rb +27 -0
  274. data/lib/generators/enju_leaf/setup/setup_generator.rb +65 -0
  275. data/lib/generators/enju_leaf/setup/templates/config/application.yml +47 -0
  276. data/lib/generators/enju_leaf/setup/templates/config/resque.yml +3 -0
  277. data/lib/generators/enju_leaf/setup/templates/config/schedule.rb +53 -0
  278. data/lib/generators/enju_leaf/setup/templates/db/fixtures/roles.yml +29 -0
  279. data/lib/generators/enju_leaf/setup/templates/db/fixtures/user_groups.yml +7 -0
  280. data/lib/generators/enju_leaf/setup/templates/db/seeds.rb +38 -0
  281. data/lib/generators/enju_leaf/setup/templates/solr/conf/admin-extra.html +31 -0
  282. data/lib/generators/enju_leaf/setup/templates/solr/conf/elevate.xml +36 -0
  283. data/lib/generators/enju_leaf/setup/templates/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  284. data/lib/generators/enju_leaf/setup/templates/solr/conf/protwords.txt +21 -0
  285. data/lib/generators/enju_leaf/setup/templates/solr/conf/schema.xml +255 -0
  286. data/lib/generators/enju_leaf/setup/templates/solr/conf/scripts.conf +24 -0
  287. data/lib/generators/enju_leaf/setup/templates/solr/conf/solrconfig.xml +934 -0
  288. data/lib/generators/enju_leaf/setup/templates/solr/conf/spellings.txt +2 -0
  289. data/lib/generators/enju_leaf/setup/templates/solr/conf/stopwords.txt +58 -0
  290. data/lib/generators/enju_leaf/setup/templates/solr/conf/synonyms.txt +31 -0
  291. data/lib/plugins.rb +2 -0
  292. data/lib/plugins/ext.rb +1 -0
  293. data/lib/plugins/ext/sunspot.rb +3 -0
  294. data/lib/plugins/ext/sunspot/abstract_search.rb +12 -0
  295. data/lib/plugins/ext/sunspot/dismax.rb +41 -0
  296. data/lib/plugins/ext/sunspot/start_record.rb +55 -0
  297. data/lib/tasks/enju_leaf_tasks.rake +14 -0
  298. data/spec/acceptance/acceptance_helper.rb +4 -0
  299. data/spec/acceptance/support/helpers.rb +6 -0
  300. data/spec/acceptance/support/paths.rb +9 -0
  301. data/spec/controllers/my_accounts_controller_spec.rb +199 -0
  302. data/spec/controllers/page_controller_spec.rb +94 -0
  303. data/spec/controllers/roles_controller_spec.rb +136 -0
  304. data/spec/controllers/user_groups_controller_spec.rb +443 -0
  305. data/spec/controllers/users_controller_spec.rb +549 -0
  306. data/spec/dummy/README.rdoc +261 -0
  307. data/spec/dummy/Rakefile +7 -0
  308. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  309. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  310. data/spec/dummy/app/controllers/application_controller.rb +12 -0
  311. data/spec/dummy/app/helpers/application_helper.rb +3 -0
  312. data/spec/dummy/app/models/user.rb +8 -0
  313. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  314. data/spec/dummy/config.ru +4 -0
  315. data/spec/dummy/config/application.rb +59 -0
  316. data/spec/dummy/config/application.yml +47 -0
  317. data/spec/dummy/config/boot.rb +10 -0
  318. data/spec/dummy/config/database.yml +25 -0
  319. data/spec/dummy/config/environment.rb +5 -0
  320. data/spec/dummy/config/environments/development.rb +37 -0
  321. data/spec/dummy/config/environments/production.rb +67 -0
  322. data/spec/dummy/config/environments/test.rb +37 -0
  323. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  324. data/spec/dummy/config/initializers/devise.rb +205 -0
  325. data/spec/dummy/config/initializers/inflections.rb +15 -0
  326. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  327. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  328. data/spec/dummy/config/initializers/session_store.rb +8 -0
  329. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  330. data/spec/dummy/config/locales/en.yml +5 -0
  331. data/spec/dummy/config/routes.rb +59 -0
  332. data/spec/dummy/db/development.sqlite3 +0 -0
  333. data/spec/dummy/db/fixtures/bookstores.yml +9 -0
  334. data/spec/dummy/db/fixtures/carrier_types.yml +29 -0
  335. data/spec/dummy/db/fixtures/content_types.yml +22 -0
  336. data/spec/dummy/db/fixtures/countries.yml +2044 -0
  337. data/spec/dummy/db/fixtures/create_types.yml +47 -0
  338. data/spec/dummy/db/fixtures/form_of_works.yml +7 -0
  339. data/spec/dummy/db/fixtures/frequencies.yml +55 -0
  340. data/spec/dummy/db/fixtures/languages.yml +1885 -0
  341. data/spec/dummy/db/fixtures/libraries.yml +25 -0
  342. data/spec/dummy/db/fixtures/library_groups.yml +10 -0
  343. data/spec/dummy/db/fixtures/licenses.yml +15 -0
  344. data/spec/dummy/db/fixtures/manifestation_relationship_types.yml +14 -0
  345. data/spec/dummy/db/fixtures/patron_relationship_types.yml +20 -0
  346. data/spec/dummy/db/fixtures/patron_types.yml +16 -0
  347. data/spec/dummy/db/fixtures/patrons.yml +19 -0
  348. data/spec/dummy/db/fixtures/produce_types.yml +32 -0
  349. data/spec/dummy/db/fixtures/realize_types.yml +40 -0
  350. data/spec/dummy/db/fixtures/request_status_types.yml +37 -0
  351. data/spec/dummy/db/fixtures/request_types.yml +29 -0
  352. data/spec/dummy/db/fixtures/roles.yml +29 -0
  353. data/spec/dummy/db/fixtures/shelves.yml +15 -0
  354. data/spec/dummy/db/fixtures/user_groups.yml +7 -0
  355. data/spec/dummy/db/migrate/001_create_patrons.rb +53 -0
  356. data/spec/dummy/db/migrate/002_devise_create_users.rb +46 -0
  357. data/spec/dummy/db/migrate/005_create_manifestations.rb +56 -0
  358. data/spec/dummy/db/migrate/006_create_items.rb +28 -0
  359. data/spec/dummy/db/migrate/012_create_owns.rb +12 -0
  360. data/spec/dummy/db/migrate/015_create_creates.rb +12 -0
  361. data/spec/dummy/db/migrate/047_create_produces.rb +12 -0
  362. data/spec/dummy/db/migrate/059_create_libraries.rb +28 -0
  363. data/spec/dummy/db/migrate/069_create_shelves.rb +15 -0
  364. data/spec/dummy/db/migrate/073_create_carrier_types.rb +11 -0
  365. data/spec/dummy/db/migrate/080_create_library_groups.rb +19 -0
  366. data/spec/dummy/db/migrate/112_create_frequencies.rb +12 -0
  367. data/spec/dummy/db/migrate/117_create_form_of_works.rb +12 -0
  368. data/spec/dummy/db/migrate/120_create_baskets.rb +12 -0
  369. data/spec/dummy/db/migrate/124_create_bookstores.rb +17 -0
  370. data/spec/dummy/db/migrate/125_create_donates.rb +12 -0
  371. data/spec/dummy/db/migrate/130_create_request_status_types.rb +12 -0
  372. data/spec/dummy/db/migrate/131_create_request_types.rb +12 -0
  373. data/spec/dummy/db/migrate/20080830154109_create_realizes.rb +13 -0
  374. data/spec/dummy/db/migrate/20080830172106_create_exemplifies.rb +13 -0
  375. data/spec/dummy/db/migrate/20080905191442_create_patron_types.rb +12 -0
  376. data/spec/dummy/db/migrate/20081006090811_create_subscriptions.rb +17 -0
  377. data/spec/dummy/db/migrate/20081006093246_create_subscribes.rb +14 -0
  378. data/spec/dummy/db/migrate/20081023092436_create_search_engines.rb +17 -0
  379. data/spec/dummy/db/migrate/20081025083323_create_countries.rb +28 -0
  380. data/spec/dummy/db/migrate/20081025083905_create_languages.rb +23 -0
  381. data/spec/dummy/db/migrate/20081027150907_create_picture_files.rb +15 -0
  382. data/spec/dummy/db/migrate/20081028083142_create_patron_import_files.rb +22 -0
  383. data/spec/dummy/db/migrate/20081028083208_create_resource_import_files.rb +22 -0
  384. data/spec/dummy/db/migrate/20090705133942_add_attachments_picture_to_picture_file.rb +15 -0
  385. data/spec/dummy/db/migrate/20090705212043_add_attachments_attachment_to_manifestation.rb +15 -0
  386. data/spec/dummy/db/migrate/20090719201843_create_extents.rb +12 -0
  387. data/spec/dummy/db/migrate/20090720091106_create_medium_of_performances.rb +12 -0
  388. data/spec/dummy/db/migrate/20090720091429_create_content_types.rb +12 -0
  389. data/spec/dummy/db/migrate/20090812151902_create_patron_relationship_types.rb +12 -0
  390. data/spec/dummy/db/migrate/20091012101112_add_dcndl_schema.rb +27 -0
  391. data/spec/dummy/db/migrate/20091025080447_create_licenses.rb +12 -0
  392. data/spec/dummy/db/migrate/20091214131723_create_series_statements.rb +13 -0
  393. data/spec/dummy/db/migrate/20100129142347_create_import_requests.rb +15 -0
  394. data/spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb +9 -0
  395. data/spec/dummy/db/migrate/20100223121519_rename_series_statement_title_to_original_title.rb +13 -0
  396. data/spec/dummy/db/migrate/20100321235924_add_series_statement_identifier_to_series_statement.rb +10 -0
  397. data/spec/dummy/db/migrate/20100525124311_create_manifestation_relationships.rb +13 -0
  398. data/spec/dummy/db/migrate/20100606073747_create_patron_relationships.rb +13 -0
  399. data/spec/dummy/db/migrate/20100607044753_create_manifestation_relationship_types.rb +12 -0
  400. data/spec/dummy/db/migrate/20100814091104_add_position_to_patron_relationship.rb +11 -0
  401. data/spec/dummy/db/migrate/20100925043847_create_resource_import_results.rb +15 -0
  402. data/spec/dummy/db/migrate/20100925074559_create_patron_import_results.rb +12 -0
  403. data/spec/dummy/db/migrate/20101212070145_add_acquired_at_to_item.rb +9 -0
  404. data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +9 -0
  405. data/spec/dummy/db/migrate/20110301035123_add_pub_date_to_manifestation.rb +9 -0
  406. data/spec/dummy/db/migrate/20110301121550_add_birth_date_and_death_date_to_patron.rb +11 -0
  407. data/spec/dummy/db/migrate/20110425133109_add_issn_to_series_statement.rb +9 -0
  408. data/spec/dummy/db/migrate/20110603184217_add_edit_mode_to_resource_import_file.rb +9 -0
  409. data/spec/dummy/db/migrate/20110618091240_add_periodical_to_series_statement.rb +9 -0
  410. data/spec/dummy/db/migrate/20110619064807_add_edition_string_to_manifestation.rb +9 -0
  411. data/spec/dummy/db/migrate/20110620173525_add_bookstore_id_to_item.rb +11 -0
  412. data/spec/dummy/db/migrate/20110627034940_create_series_statement_merge_lists.rb +9 -0
  413. data/spec/dummy/db/migrate/20110627035057_create_series_statement_merges.rb +12 -0
  414. data/spec/dummy/db/migrate/20110627122938_add_number_of_day_to_notify_overdue_to_user_group.rb +13 -0
  415. data/spec/dummy/db/migrate/20110820131417_create_series_has_manifestations.rb +13 -0
  416. data/spec/dummy/db/migrate/20110916053430_rename_manifestation_number_list_to_number_string.rb +13 -0
  417. data/spec/dummy/db/migrate/20110916091020_add_volume_number_to_manifestation.rb +13 -0
  418. data/spec/dummy/db/migrate/20110916103953_add_manifestaiton_id_to_series_statement.rb +10 -0
  419. data/spec/dummy/db/migrate/20110918161853_rename_series_statement_manifestation_id_to_root_manifestation_id.rb +13 -0
  420. data/spec/dummy/db/migrate/20110918162329_add_note_to_series_statement.rb +9 -0
  421. data/spec/dummy/db/migrate/20111009183423_add_ndc_to_manifestation.rb +9 -0
  422. data/spec/dummy/db/migrate/20111124110059_create_create_types.rb +12 -0
  423. data/spec/dummy/db/migrate/20111124110319_create_realize_types.rb +12 -0
  424. data/spec/dummy/db/migrate/20111124110355_create_produce_types.rb +12 -0
  425. data/spec/dummy/db/migrate/20111124112131_add_create_type_to_create.rb +7 -0
  426. data/spec/dummy/db/migrate/20120105074911_add_isil_to_library.rb +5 -0
  427. data/spec/dummy/db/migrate/20120125152919_add_title_subseries_transcription_to_series_statement.rb +6 -0
  428. data/spec/dummy/db/migrate/20120129014038_create_budget_types.rb +12 -0
  429. data/spec/dummy/db/migrate/20120129020544_add_budget_type_id_to_item.rb +6 -0
  430. data/spec/dummy/db/migrate/20120319120638_add_content_type_id_to_manifestation.rb +6 -0
  431. data/spec/dummy/db/migrate/20120319173203_create_accepts.rb +14 -0
  432. data/spec/dummy/db/migrate/20120410104851_add_year_of_publication_to_manifestation.rb +5 -0
  433. data/spec/dummy/db/migrate/20120413072700_add_picture_meta_to_picture_file.rb +5 -0
  434. data/spec/dummy/db/migrate/20120413100352_add_fingerprint_to_picture_file.rb +5 -0
  435. data/spec/dummy/db/migrate/20120413161340_add_fingerprint_to_resource_import_file.rb +5 -0
  436. data/spec/dummy/db/migrate/20120413161403_add_fingerprint_to_patron_import_file.rb +5 -0
  437. data/spec/dummy/db/migrate/20120413170705_add_error_message_to_resource_import_file.rb +5 -0
  438. data/spec/dummy/db/migrate/20120413170720_add_error_message_to_patron_import_file.rb +5 -0
  439. data/spec/dummy/db/migrate/20120415060308_rename_resource_import_file_imported_at_to_executed_at.rb +9 -0
  440. data/spec/dummy/db/migrate/20120415060323_rename_patron_import_file_imported_at_to_executed_at.rb +9 -0
  441. data/spec/dummy/db/migrate/20120415164821_add_attachment_meta_to_manifestation.rb +5 -0
  442. data/spec/dummy/db/migrate/20120418081407_add_month_of_publication_to_manifestation.rb +5 -0
  443. data/spec/dummy/db/migrate/20120510140958_add_closed_to_shelf.rb +5 -0
  444. data/spec/dummy/db/migrate/20120511072422_add_patron_identifier_to_patron.rb +6 -0
  445. data/spec/dummy/db/migrate/20120602141129_add_edit_mode_to_patron_import_file.rb +5 -0
  446. data/spec/dummy/db/migrate/20120728204337_create_series_statement_relationships.rb +11 -0
  447. data/spec/dummy/db/migrate/20121116031206_add_fulltext_content_to_manifestation.rb +5 -0
  448. data/spec/dummy/db/migrate/20121116033446_add_doi_to_manifestation.rb +6 -0
  449. data/spec/dummy/db/migrate/20121119153944_add_manifestation_id_to_item.rb +5 -0
  450. data/spec/dummy/db/schema.rb +822 -0
  451. data/spec/dummy/db/test.sqlite3 +0 -0
  452. data/spec/dummy/public/404.html +26 -0
  453. data/spec/dummy/public/422.html +26 -0
  454. data/spec/dummy/public/500.html +25 -0
  455. data/spec/dummy/public/favicon.ico +0 -0
  456. data/spec/dummy/script/rails +6 -0
  457. data/spec/dummy/solr/conf/admin-extra.html +31 -0
  458. data/spec/dummy/solr/conf/elevate.xml +36 -0
  459. data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  460. data/spec/dummy/solr/conf/protwords.txt +21 -0
  461. data/spec/dummy/solr/conf/schema.xml +238 -0
  462. data/spec/dummy/solr/conf/scripts.conf +24 -0
  463. data/spec/dummy/solr/conf/solrconfig.xml +934 -0
  464. data/spec/dummy/solr/conf/spellings.txt +2 -0
  465. data/spec/dummy/solr/conf/stopwords.txt +58 -0
  466. data/spec/dummy/solr/conf/synonyms.txt +31 -0
  467. data/spec/dummy/solr/data/test/index/_3b.fdt +0 -0
  468. data/spec/dummy/solr/data/test/index/_3b.fdx +0 -0
  469. data/spec/dummy/solr/data/test/index/_3b.fnm +4 -0
  470. data/spec/dummy/solr/data/test/index/_3b.frq +1 -0
  471. data/spec/dummy/solr/data/test/index/_3b.nrm +1 -0
  472. data/spec/dummy/solr/data/test/index/_3b.prx +0 -0
  473. data/spec/dummy/solr/data/test/index/_3b.tii +0 -0
  474. data/spec/dummy/solr/data/test/index/_3b.tis +0 -0
  475. data/spec/dummy/solr/data/test/index/segments.gen +0 -0
  476. data/spec/dummy/solr/data/test/index/segments_6p +0 -0
  477. data/spec/dummy/solr/data/test/spellchecker/segments.gen +0 -0
  478. data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
  479. data/spec/dummy/tmp/cache/4F7/F90/default_role +0 -0
  480. data/spec/dummy/tmp/cache/ACB/B20/manifestation_search_total +0 -0
  481. data/spec/factories/basket.rb +5 -0
  482. data/spec/factories/bookstore.rb +5 -0
  483. data/spec/factories/carrier_type.rb +5 -0
  484. data/spec/factories/content_type.rb +5 -0
  485. data/spec/factories/country.rb +8 -0
  486. data/spec/factories/create.rb +6 -0
  487. data/spec/factories/create_types.rb +9 -0
  488. data/spec/factories/donate.rb +6 -0
  489. data/spec/factories/exemplify.rb +6 -0
  490. data/spec/factories/extent.rb +5 -0
  491. data/spec/factories/import_request.rb +5 -0
  492. data/spec/factories/item.rb +7 -0
  493. data/spec/factories/language.rb +8 -0
  494. data/spec/factories/library.rb +13 -0
  495. data/spec/factories/license.rb +5 -0
  496. data/spec/factories/manifestation.rb +6 -0
  497. data/spec/factories/manifestation_relationship.rb +6 -0
  498. data/spec/factories/manifestation_relationship_type.rb +5 -0
  499. data/spec/factories/medium_of_performance.rb +5 -0
  500. data/spec/factories/own.rb +6 -0
  501. data/spec/factories/patron.rb +13 -0
  502. data/spec/factories/patron_relationship.rb +6 -0
  503. data/spec/factories/patron_relationship_type.rb +5 -0
  504. data/spec/factories/patron_type.rb +5 -0
  505. data/spec/factories/produce.rb +6 -0
  506. data/spec/factories/produce_types.rb +9 -0
  507. data/spec/factories/realize.rb +6 -0
  508. data/spec/factories/realize_types.rb +9 -0
  509. data/spec/factories/series_has_manifestation.rb +6 -0
  510. data/spec/factories/series_statement.rb +5 -0
  511. data/spec/factories/shelf.rb +6 -0
  512. data/spec/factories/subscribe.rb +8 -0
  513. data/spec/factories/subscription.rb +6 -0
  514. data/spec/factories/user.rb +59 -0
  515. data/spec/factories/user_checkout_stat.rb +6 -0
  516. data/spec/factories/user_group.rb +5 -0
  517. data/spec/fixtures/baskets.yml +80 -0
  518. data/spec/fixtures/carrier_types.yml +51 -0
  519. data/spec/fixtures/content_types.yml +36 -0
  520. data/spec/fixtures/countries.yml +2059 -0
  521. data/spec/fixtures/create_types.yml +47 -0
  522. data/spec/fixtures/creates.yml +66 -0
  523. data/spec/fixtures/donates.yml +31 -0
  524. data/spec/fixtures/exemplifies.yml +156 -0
  525. data/spec/fixtures/extents.yml +29 -0
  526. data/spec/fixtures/import_requests.yml +27 -0
  527. data/spec/fixtures/items.yml +262 -0
  528. data/spec/fixtures/languages.yml +1901 -0
  529. data/spec/fixtures/libraries.yml +102 -0
  530. data/spec/fixtures/library_groups.yml +34 -0
  531. data/spec/fixtures/licenses.yml +29 -0
  532. data/spec/fixtures/manifestation_relationship_types.yml +29 -0
  533. data/spec/fixtures/manifestation_relationships.yml +30 -0
  534. data/spec/fixtures/manifestations.yml +2021 -0
  535. data/spec/fixtures/medium_of_performances.yml +29 -0
  536. data/spec/fixtures/owns.yml +27 -0
  537. data/spec/fixtures/patron_import_files.yml +47 -0
  538. data/spec/fixtures/patron_import_results.yml +29 -0
  539. data/spec/fixtures/patron_relationship_types.yml +34 -0
  540. data/spec/fixtures/patron_relationships.yml +25 -0
  541. data/spec/fixtures/patron_types.yml +35 -0
  542. data/spec/fixtures/patrons.yml +338 -0
  543. data/spec/fixtures/picture_files.yml +64 -0
  544. data/spec/fixtures/produce_types.yml +31 -0
  545. data/spec/fixtures/produces.yml +150 -0
  546. data/spec/fixtures/realize_types.yml +39 -0
  547. data/spec/fixtures/realizes.yml +87 -0
  548. data/spec/fixtures/resource_import_files.yml +47 -0
  549. data/spec/fixtures/resource_import_results.yml +29 -0
  550. data/spec/fixtures/roles.yml +39 -0
  551. data/spec/fixtures/series_has_manifestations.yml +35 -0
  552. data/spec/fixtures/series_statements.yml +45 -0
  553. data/spec/fixtures/shelves.yml +47 -0
  554. data/spec/fixtures/subscribes.yml +45 -0
  555. data/spec/fixtures/subscriptions.yml +27 -0
  556. data/spec/fixtures/user_groups.yml +50 -0
  557. data/spec/fixtures/user_has_roles.yml +40 -0
  558. data/spec/fixtures/users.yml +151 -0
  559. data/spec/fixtures_old/inventory_files.yml +40 -0
  560. data/spec/models/basket_spec.rb +23 -0
  561. data/spec/models/role_spec.rb +40 -0
  562. data/spec/models/user_group_spec.rb +26 -0
  563. data/spec/models/user_has_role_spec.rb +18 -0
  564. data/spec/models/user_spec.rb +218 -0
  565. data/spec/requests/users_spec.rb +9 -0
  566. data/spec/routing/accounts_spec.rb +14 -0
  567. data/spec/routing/roles_routing_spec.rb +35 -0
  568. data/spec/routing/users_routing_spec.rb +35 -0
  569. data/spec/spec_helper.rb +51 -0
  570. data/spec/support/controller_macros.rb +46 -0
  571. data/spec/support/devise.rb +4 -0
  572. data/spec/views/users/edit.html.erb_spec.rb +25 -0
  573. data/spec/views/users/index.html.erb_spec.rb +16 -0
  574. data/spec/views/users/new.html.erb_spec.rb +25 -0
  575. data/spec/views/users/show.html.erb_spec.rb +15 -0
  576. data/vendor/assets/javascripts/event_calendar.js +37 -0
  577. data/vendor/assets/javascripts/jquery.colorbox.js +1025 -0
  578. data/vendor/assets/javascripts/jquery.cookie.js +94 -0
  579. data/vendor/assets/javascripts/jquery.highlight.js +108 -0
  580. data/vendor/assets/javascripts/jquery.mobile-1.3.0.js +11092 -0
  581. data/vendor/assets/javascripts/jquery.powertip.js +796 -0
  582. data/vendor/assets/javascripts/jquery.shortcut.js +241 -0
  583. data/vendor/assets/javascripts/jquery.ui.menubar.js +327 -0
  584. data/vendor/assets/stylesheets/acts_as_taggable_stylesheet.css +7 -0
  585. data/vendor/assets/stylesheets/colorbox.css +93 -0
  586. data/vendor/assets/stylesheets/event_calendar.css +237 -0
  587. data/vendor/assets/stylesheets/html5-doctor-reset-stylesheet.min.css +14 -0
  588. data/vendor/assets/stylesheets/images/ajax-loader.gif +0 -0
  589. data/vendor/assets/stylesheets/images/border.png +0 -0
  590. data/vendor/assets/stylesheets/images/controls.png +0 -0
  591. data/vendor/assets/stylesheets/images/icons-18-black.png +0 -0
  592. data/vendor/assets/stylesheets/images/icons-18-white.png +0 -0
  593. data/vendor/assets/stylesheets/images/icons-36-black.png +0 -0
  594. data/vendor/assets/stylesheets/images/icons-36-white.png +0 -0
  595. data/vendor/assets/stylesheets/images/ie6/borderBottomCenter.png +0 -0
  596. data/vendor/assets/stylesheets/images/ie6/borderBottomLeft.png +0 -0
  597. data/vendor/assets/stylesheets/images/ie6/borderBottomRight.png +0 -0
  598. data/vendor/assets/stylesheets/images/ie6/borderMiddleLeft.png +0 -0
  599. data/vendor/assets/stylesheets/images/ie6/borderMiddleRight.png +0 -0
  600. data/vendor/assets/stylesheets/images/ie6/borderTopCenter.png +0 -0
  601. data/vendor/assets/stylesheets/images/ie6/borderTopLeft.png +0 -0
  602. data/vendor/assets/stylesheets/images/ie6/borderTopRight.png +0 -0
  603. data/vendor/assets/stylesheets/images/loading.gif +0 -0
  604. data/vendor/assets/stylesheets/images/loading_background.png +0 -0
  605. data/vendor/assets/stylesheets/images/overlay.png +0 -0
  606. data/vendor/assets/stylesheets/images/spinner_bar.gif +0 -0
  607. data/vendor/assets/stylesheets/jquery.mobile-1.3.0.css +3357 -0
  608. data/vendor/assets/stylesheets/jquery.powertip.css +64 -0
  609. data/vendor/assets/stylesheets/jquery.ui.menubar.css +15 -0
  610. metadata +1153 -0
@@ -0,0 +1,51 @@
1
+ require 'simplecov'
2
+ SimpleCov.start 'rails'
3
+
4
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
5
+ ENV["RAILS_ENV"] ||= 'test'
6
+ require File.expand_path("../dummy/config/environment", __FILE__)
7
+ require 'rspec/rails'
8
+ require 'vcr'
9
+ require 'factory_girl'
10
+ require 'sunspot-rails-tester'
11
+
12
+ # Requires supporting ruby files with custom matchers and macros, etc,
13
+ # in spec/support/ and its subdirectories.
14
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
15
+
16
+ $original_sunspot_session = Sunspot.session
17
+
18
+ RSpec.configure do |config|
19
+ # == Mock Framework
20
+ #
21
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
22
+ #
23
+ # config.mock_with :mocha
24
+ # config.mock_with :flexmock
25
+ # config.mock_with :rr
26
+ config.mock_with :rspec
27
+
28
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
29
+ config.fixture_path = "#{::Rails.root}/../../spec/fixtures"
30
+
31
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
32
+ # examples within a transaction, remove the following line or assign false
33
+ # instead of true.
34
+ config.use_transactional_fixtures = true
35
+ config.extend ControllerMacros, :type => :controller
36
+
37
+ $original_sunspot_session = Sunspot.session
38
+
39
+ config.before do
40
+ Sunspot.session = Sunspot::Rails::StubSessionProxy.new($original_sunspot_session)
41
+ end
42
+
43
+ config.before :each, :solr => true do
44
+ Sunspot::Rails::Tester.start_original_sunspot_session
45
+ Sunspot.session = $original_sunspot_session
46
+ Sunspot.remove_all!
47
+ end
48
+ end
49
+
50
+ FactoryGirl.definition_file_paths << "#{::Rails.root}/../../spec/factories"
51
+ FactoryGirl.find_definitions
@@ -0,0 +1,46 @@
1
+ module ControllerMacros
2
+ def login_admin
3
+ before(:each) do
4
+ @request.env["devise.mapping"] = Devise.mappings[:admin]
5
+ sign_in FactoryGirl.create(:admin)
6
+ end
7
+ end
8
+
9
+ def login_librarian
10
+ before(:each) do
11
+ @request.env["devise.mapping"] = Devise.mappings[:librarian]
12
+ sign_in FactoryGirl.create(:librarian)
13
+ end
14
+ end
15
+
16
+ def login_user
17
+ before(:each) do
18
+ @request.env["devise.mapping"] = Devise.mappings[:user]
19
+ sign_in FactoryGirl.create(:user)
20
+ end
21
+ end
22
+
23
+ def login_fixture_admin
24
+ before(:each) do
25
+ @request.env["devise.mapping"] = Devise.mappings[:admin]
26
+ @user = users(:admin)
27
+ sign_in @user
28
+ end
29
+ end
30
+
31
+ def login_fixture_librarian
32
+ before(:each) do
33
+ @request.env["devise.mapping"] = Devise.mappings[:librarian]
34
+ @user = users(:librarian1)
35
+ sign_in @user
36
+ end
37
+ end
38
+
39
+ def login_fixture_user
40
+ before(:each) do
41
+ @request.env["devise.mapping"] = Devise.mappings[:user]
42
+ @user = users(:user1)
43
+ sign_in @user
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,4 @@
1
+ RSpec.configure do |config|
2
+ config.include Devise::TestHelpers, :type => :controller
3
+ config.include Devise::TestHelpers, :type => :view
4
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe "users/edit" do
4
+ fixtures :user_groups
5
+
6
+ before(:each) do
7
+ @user = assign(:user, stub_model(User,
8
+ :username => "MyString"
9
+ ))
10
+ assign(:user_groups, UserGroup.all)
11
+ assign(:libraries, Library.all)
12
+ assign(:roles, Role.all)
13
+ assign(:available_languages, Language.available_languages)
14
+ view.stub(:current_user).and_return(User.find('admin'))
15
+ end
16
+
17
+ it "renders the edit user form" do
18
+ render
19
+
20
+ # Run the generator again with the --webrat flag if you want to use webrat matchers
21
+ assert_select "form", :action => users_path(@user), :method => "post" do
22
+ assert_select "input#user_email", :name => "user[email]"
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe "users/index" do
4
+ fixtures :all
5
+
6
+ before(:each) do
7
+ assign(:users, User.page(1))
8
+ view.stub(:current_user).and_return(User.find('admin'))
9
+ end
10
+
11
+ it "renders a list of users" do
12
+ render
13
+ # Run the generator again with the --webrat flag if you want to use webrat matchers
14
+ assert_select "tr>td", :text => 'admin'
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe "users/new" do
4
+ fixtures :user_groups
5
+
6
+ before(:each) do
7
+ assign(:user, stub_model(User,
8
+ :username => "MyString"
9
+ ).as_new_record)
10
+ assign(:user_groups, UserGroup.all)
11
+ assign(:libraries, Library.all)
12
+ assign(:roles, Role.all)
13
+ assign(:available_languages, Language.available_languages)
14
+ view.stub(:current_user).and_return(User.find('admin'))
15
+ end
16
+
17
+ it "renders new user form" do
18
+ render
19
+
20
+ # Run the generator again with the --webrat flag if you want to use webrat matchers
21
+ assert_select "form", :action => users_path, :method => "post" do
22
+ assert_select "input#user_username", :name => "user[username]"
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe "users/show" do
4
+ before(:each) do
5
+ @user = assign(:user, stub_model(User,
6
+ :username => "Username"
7
+ ))
8
+ end
9
+
10
+ it "renders attributes in <p>" do
11
+ render
12
+ # Run the generator again with the --webrat flag if you want to use webrat matchers
13
+ rendered.should match(/Username/)
14
+ end
15
+ end
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Smart event highlighting
3
+ * Handles when events span rows, or don't have a background color
4
+ */
5
+ jQuery(document).ready(function($) {
6
+ var highlight_color = "#2EAC6A";
7
+
8
+ // highlight events that have a background color
9
+ $(".ec-event-bg").on("mouseover", function() {
10
+ event_id = $(this).attr("data-event-id");
11
+ event_class_name = $(this).attr("data-event-class");
12
+ $(".ec-"+event_class_name+"-"+event_id).css("background-color", highlight_color);
13
+ });
14
+ $(".ec-event-bg").on("mouseout", function() {
15
+ event_id = $(this).attr("data-event-id");
16
+ event_class_name = $(this).attr("data-event-class");
17
+ event_color = $(this).attr("data-color");
18
+ $(".ec-"+event_class_name+"-"+event_id).css("background-color", event_color);
19
+ });
20
+
21
+ // highlight events that don't have a background color
22
+ $(".ec-event-no-bg").on("mouseover", function() {
23
+ ele = $(this);
24
+ ele.css("color", "white");
25
+ ele.find("a").css("color", "white");
26
+ ele.find(".ec-bullet").css("background-color", "white");
27
+ ele.css("background-color", highlight_color);
28
+ });
29
+ $(".ec-event-no-bg").on("mouseout", function() {
30
+ ele = $(this);
31
+ event_color = $(this).attr("data-color");
32
+ ele.css("color", event_color);
33
+ ele.find("a").css("color", event_color);
34
+ ele.find(".ec-bullet").css("background-color", event_color);
35
+ ele.css("background-color", "transparent");
36
+ });
37
+ });
@@ -0,0 +1,1025 @@
1
+ /*!
2
+ jQuery ColorBox v1.4.3 - 2013-02-18
3
+ (c) 2013 Jack Moore - jacklmoore.com/colorbox
4
+ license: http://www.opensource.org/licenses/mit-license.php
5
+ */
6
+ (function ($, document, window) {
7
+ var
8
+ // Default settings object.
9
+ // See http://jacklmoore.com/colorbox for details.
10
+ defaults = {
11
+ transition: "elastic",
12
+ speed: 300,
13
+ width: false,
14
+ initialWidth: "600",
15
+ innerWidth: false,
16
+ maxWidth: false,
17
+ height: false,
18
+ initialHeight: "450",
19
+ innerHeight: false,
20
+ maxHeight: false,
21
+ scalePhotos: true,
22
+ scrolling: true,
23
+ inline: false,
24
+ html: false,
25
+ iframe: false,
26
+ fastIframe: true,
27
+ photo: false,
28
+ href: false,
29
+ title: false,
30
+ rel: false,
31
+ opacity: 0.9,
32
+ preloading: true,
33
+ className: false,
34
+
35
+ // alternate image paths for high-res displays
36
+ retinaImage: false,
37
+ retinaUrl: false,
38
+ retinaSuffix: '@2x.$1',
39
+
40
+ // internationalization
41
+ current: "image {current} of {total}",
42
+ previous: "previous",
43
+ next: "next",
44
+ close: "close",
45
+ xhrError: "This content failed to load.",
46
+ imgError: "This image failed to load.",
47
+
48
+ open: false,
49
+ returnFocus: true,
50
+ reposition: true,
51
+ loop: true,
52
+ slideshow: false,
53
+ slideshowAuto: true,
54
+ slideshowSpeed: 2500,
55
+ slideshowStart: "start slideshow",
56
+ slideshowStop: "stop slideshow",
57
+ photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico)((#|\?).*)?$/i,
58
+
59
+ onOpen: false,
60
+ onLoad: false,
61
+ onComplete: false,
62
+ onCleanup: false,
63
+ onClosed: false,
64
+ overlayClose: true,
65
+ escKey: true,
66
+ arrowKey: true,
67
+ top: false,
68
+ bottom: false,
69
+ left: false,
70
+ right: false,
71
+ fixed: false,
72
+ data: undefined
73
+ },
74
+
75
+ // Abstracting the HTML and event identifiers for easy rebranding
76
+ colorbox = 'colorbox',
77
+ prefix = 'cbox',
78
+ boxElement = prefix + 'Element',
79
+
80
+ // Events
81
+ event_open = prefix + '_open',
82
+ event_load = prefix + '_load',
83
+ event_complete = prefix + '_complete',
84
+ event_cleanup = prefix + '_cleanup',
85
+ event_closed = prefix + '_closed',
86
+ event_purge = prefix + '_purge',
87
+
88
+ // Special Handling for IE
89
+ isIE = !$.support.leadingWhitespace, // IE6 to IE8
90
+ isIE6 = isIE && !window.XMLHttpRequest, // IE6
91
+ event_ie6 = prefix + '_IE6',
92
+
93
+ // Cached jQuery Object Variables
94
+ $overlay,
95
+ $box,
96
+ $wrap,
97
+ $content,
98
+ $topBorder,
99
+ $leftBorder,
100
+ $rightBorder,
101
+ $bottomBorder,
102
+ $related,
103
+ $window,
104
+ $loaded,
105
+ $loadingBay,
106
+ $loadingOverlay,
107
+ $title,
108
+ $current,
109
+ $slideshow,
110
+ $next,
111
+ $prev,
112
+ $close,
113
+ $groupControls,
114
+ $events = $({}),
115
+
116
+ // Variables for cached values or use across multiple functions
117
+ settings,
118
+ interfaceHeight,
119
+ interfaceWidth,
120
+ loadedHeight,
121
+ loadedWidth,
122
+ element,
123
+ index,
124
+ photo,
125
+ open,
126
+ active,
127
+ closing,
128
+ loadingTimer,
129
+ publicMethod,
130
+ div = "div",
131
+ className,
132
+ init;
133
+
134
+ // ****************
135
+ // HELPER FUNCTIONS
136
+ // ****************
137
+
138
+ // Convience function for creating new jQuery objects
139
+ function $tag(tag, id, css) {
140
+ var element = document.createElement(tag);
141
+
142
+ if (id) {
143
+ element.id = prefix + id;
144
+ }
145
+
146
+ if (css) {
147
+ element.style.cssText = css;
148
+ }
149
+
150
+ return $(element);
151
+ }
152
+
153
+ // Determine the next and previous members in a group.
154
+ function getIndex(increment) {
155
+ var
156
+ max = $related.length,
157
+ newIndex = (index + increment) % max;
158
+
159
+ return (newIndex < 0) ? max + newIndex : newIndex;
160
+ }
161
+
162
+ // Convert '%' and 'px' values to integers
163
+ function setSize(size, dimension) {
164
+ return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : $window.height()) / 100) : 1) * parseInt(size, 10));
165
+ }
166
+
167
+ // Checks an href to see if it is a photo.
168
+ // There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.
169
+ function isImage(settings, url) {
170
+ return settings.photo || settings.photoRegex.test(url);
171
+ }
172
+
173
+ function retinaUrl(settings, url) {
174
+ return settings.retinaUrl && window.devicePixelRatio > 1 ? url.replace(settings.photoRegex, settings.retinaSuffix) : url;
175
+ }
176
+
177
+ function trapFocus(e) {
178
+ if ('contains' in $box[0] && !$box[0].contains(e.target)) {
179
+ e.stopPropagation();
180
+ $box.focus();
181
+ }
182
+ }
183
+
184
+ // Assigns function results to their respective properties
185
+ function makeSettings() {
186
+ var i,
187
+ data = $.data(element, colorbox);
188
+
189
+ if (data == null) {
190
+ settings = $.extend({}, defaults);
191
+ if (console && console.log) {
192
+ console.log('Error: cboxElement missing settings object');
193
+ }
194
+ } else {
195
+ settings = $.extend({}, data);
196
+ }
197
+
198
+ for (i in settings) {
199
+ if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
200
+ settings[i] = settings[i].call(element);
201
+ }
202
+ }
203
+
204
+ settings.rel = settings.rel || element.rel || $(element).data('rel') || 'nofollow';
205
+ settings.href = settings.href || $(element).attr('href');
206
+ settings.title = settings.title || element.title;
207
+
208
+ if (typeof settings.href === "string") {
209
+ settings.href = $.trim(settings.href);
210
+ }
211
+ }
212
+
213
+ function trigger(event, callback) {
214
+ // for external use
215
+ $(document).trigger(event);
216
+
217
+ // for internal use
218
+ $events.trigger(event);
219
+
220
+ if ($.isFunction(callback)) {
221
+ callback.call(element);
222
+ }
223
+ }
224
+
225
+ // Slideshow functionality
226
+ function slideshow() {
227
+ var
228
+ timeOut,
229
+ className = prefix + "Slideshow_",
230
+ click = "click." + prefix,
231
+ clear,
232
+ set,
233
+ start,
234
+ stop;
235
+
236
+ if (settings.slideshow && $related[1]) {
237
+ clear = function () {
238
+ clearTimeout(timeOut);
239
+ };
240
+
241
+ set = function () {
242
+ if (settings.loop || $related[index + 1]) {
243
+ timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
244
+ }
245
+ };
246
+
247
+ start = function () {
248
+ $slideshow
249
+ .html(settings.slideshowStop)
250
+ .unbind(click)
251
+ .one(click, stop);
252
+
253
+ $events
254
+ .bind(event_complete, set)
255
+ .bind(event_load, clear)
256
+ .bind(event_cleanup, stop);
257
+
258
+ $box.removeClass(className + "off").addClass(className + "on");
259
+ };
260
+
261
+ stop = function () {
262
+ clear();
263
+
264
+ $events
265
+ .unbind(event_complete, set)
266
+ .unbind(event_load, clear)
267
+ .unbind(event_cleanup, stop);
268
+
269
+ $slideshow
270
+ .html(settings.slideshowStart)
271
+ .unbind(click)
272
+ .one(click, function () {
273
+ publicMethod.next();
274
+ start();
275
+ });
276
+
277
+ $box.removeClass(className + "on").addClass(className + "off");
278
+ };
279
+
280
+ if (settings.slideshowAuto) {
281
+ start();
282
+ } else {
283
+ stop();
284
+ }
285
+ } else {
286
+ $box.removeClass(className + "off " + className + "on");
287
+ }
288
+ }
289
+
290
+ function launch(target) {
291
+ if (!closing) {
292
+
293
+ element = target;
294
+
295
+ makeSettings();
296
+
297
+ $related = $(element);
298
+
299
+ index = 0;
300
+
301
+ if (settings.rel !== 'nofollow') {
302
+ $related = $('.' + boxElement).filter(function () {
303
+ var data = $.data(this, colorbox),
304
+ relRelated;
305
+
306
+ if (data) {
307
+ relRelated = $(this).data('rel') || data.rel || this.rel;
308
+ }
309
+
310
+ return (relRelated === settings.rel);
311
+ });
312
+ index = $related.index(element);
313
+
314
+ // Check direct calls to ColorBox.
315
+ if (index === -1) {
316
+ $related = $related.add(element);
317
+ index = $related.length - 1;
318
+ }
319
+ }
320
+
321
+ $overlay.css({
322
+ opacity: parseFloat(settings.opacity),
323
+ cursor: settings.overlayClose ? "pointer" : "auto",
324
+ visibility: 'visible'
325
+ }).show();
326
+
327
+ if (!open) {
328
+ open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
329
+
330
+ // Show colorbox so the sizes can be calculated in older versions of jQuery
331
+ $box.css({visibility:'hidden', display:'block'});
332
+
333
+ $loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden').appendTo($content);
334
+
335
+ // Cache values needed for size calculations
336
+ interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6
337
+ interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
338
+ loadedHeight = $loaded.outerHeight(true);
339
+ loadedWidth = $loaded.outerWidth(true);
340
+
341
+
342
+ // Opens inital empty ColorBox prior to content being loaded.
343
+ settings.w = setSize(settings.initialWidth, 'x');
344
+ settings.h = setSize(settings.initialHeight, 'y');
345
+ publicMethod.position();
346
+
347
+ if (isIE6) {
348
+ $window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {
349
+ $overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
350
+ }).trigger('resize.' + event_ie6);
351
+ }
352
+
353
+ slideshow();
354
+
355
+ trigger(event_open, settings.onOpen);
356
+
357
+ $groupControls.add($title).hide();
358
+
359
+ $close.html(settings.close).show();
360
+
361
+ $box.focus();
362
+
363
+ // Confine focus to the modal
364
+ // Uses event capturing that is not supported in IE8-
365
+ if (document.addEventListener) {
366
+
367
+ document.addEventListener('focus', trapFocus, true);
368
+
369
+ $events.one(event_closed, function () {
370
+ document.removeEventListener('focus', trapFocus, true);
371
+ });
372
+ }
373
+
374
+ // Return focus on closing
375
+ if (settings.returnFocus) {
376
+ $events.one(event_closed, function () {
377
+ $(element).focus();
378
+ });
379
+ }
380
+ }
381
+
382
+ publicMethod.load(true);
383
+ }
384
+ }
385
+
386
+ // ColorBox's markup needs to be added to the DOM prior to being called
387
+ // so that the browser will go ahead and load the CSS background images.
388
+ function appendHTML() {
389
+ if (!$box && document.body) {
390
+ init = false;
391
+
392
+ $window = $(window);
393
+ $box = $tag(div).attr({
394
+ id: colorbox,
395
+ 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : '',
396
+ role: 'dialog',
397
+ tabindex: '-1'
398
+ }).hide();
399
+ $overlay = $tag(div, "Overlay", isIE6 ? 'position:absolute' : '').hide();
400
+ $loadingOverlay = $tag(div, "LoadingOverlay").add($tag(div, "LoadingGraphic"));
401
+ $wrap = $tag(div, "Wrapper");
402
+ $content = $tag(div, "Content").append(
403
+ $title = $tag(div, "Title"),
404
+ $current = $tag(div, "Current"),
405
+ $prev = $tag('button', "Previous"),
406
+ $next = $tag('button', "Next"),
407
+ $slideshow = $tag('button', "Slideshow"),
408
+ $loadingOverlay,
409
+ $close = $tag('button', "Close")
410
+ );
411
+
412
+ $wrap.append( // The 3x3 Grid that makes up ColorBox
413
+ $tag(div).append(
414
+ $tag(div, "TopLeft"),
415
+ $topBorder = $tag(div, "TopCenter"),
416
+ $tag(div, "TopRight")
417
+ ),
418
+ $tag(div, false, 'clear:left').append(
419
+ $leftBorder = $tag(div, "MiddleLeft"),
420
+ $content,
421
+ $rightBorder = $tag(div, "MiddleRight")
422
+ ),
423
+ $tag(div, false, 'clear:left').append(
424
+ $tag(div, "BottomLeft"),
425
+ $bottomBorder = $tag(div, "BottomCenter"),
426
+ $tag(div, "BottomRight")
427
+ )
428
+ ).find('div div').css({'float': 'left'});
429
+
430
+ $loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');
431
+
432
+ $groupControls = $next.add($prev).add($current).add($slideshow);
433
+
434
+ $(document.body).append($overlay, $box.append($wrap, $loadingBay));
435
+ }
436
+ }
437
+
438
+ // Add ColorBox's event bindings
439
+ function addBindings() {
440
+ function clickHandler(e) {
441
+ // ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
442
+ // See: http://jacklmoore.com/notes/click-events/
443
+ if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey)) {
444
+ e.preventDefault();
445
+ launch(this);
446
+ }
447
+ }
448
+
449
+ if ($box) {
450
+ if (!init) {
451
+ init = true;
452
+
453
+ // Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
454
+ $next.click(function () {
455
+ publicMethod.next();
456
+ });
457
+ $prev.click(function () {
458
+ publicMethod.prev();
459
+ });
460
+ $close.click(function () {
461
+ publicMethod.close();
462
+ });
463
+ $overlay.click(function () {
464
+ if (settings.overlayClose) {
465
+ publicMethod.close();
466
+ }
467
+ });
468
+
469
+ // Key Bindings
470
+ $(document).bind('keydown.' + prefix, function (e) {
471
+ var key = e.keyCode;
472
+ if (open && settings.escKey && key === 27) {
473
+ e.preventDefault();
474
+ publicMethod.close();
475
+ }
476
+ if (open && settings.arrowKey && $related[1] && !e.altKey) {
477
+ if (key === 37) {
478
+ e.preventDefault();
479
+ $prev.click();
480
+ } else if (key === 39) {
481
+ e.preventDefault();
482
+ $next.click();
483
+ }
484
+ }
485
+ });
486
+
487
+ if ($.isFunction($.fn.on)) {
488
+ // For jQuery 1.7+
489
+ $(document).on('click.'+prefix, '.'+boxElement, clickHandler);
490
+ } else {
491
+ // For jQuery 1.3.x -> 1.6.x
492
+ // This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.
493
+ // This is not here for jQuery 1.9, it's here for legacy users.
494
+ $('.'+boxElement).live('click.'+prefix, clickHandler);
495
+ }
496
+ }
497
+ return true;
498
+ }
499
+ return false;
500
+ }
501
+
502
+ // Don't do anything if ColorBox already exists.
503
+ if ($.colorbox) {
504
+ return;
505
+ }
506
+
507
+ // Append the HTML when the DOM loads
508
+ $(appendHTML);
509
+
510
+
511
+ // ****************
512
+ // PUBLIC FUNCTIONS
513
+ // Usage format: $.fn.colorbox.close();
514
+ // Usage from within an iframe: parent.$.fn.colorbox.close();
515
+ // ****************
516
+
517
+ publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
518
+ var $this = this;
519
+
520
+ options = options || {};
521
+
522
+ appendHTML();
523
+
524
+ if (addBindings()) {
525
+ if ($.isFunction($this)) { // assume a call to $.colorbox
526
+ $this = $('<a/>');
527
+ options.open = true;
528
+ } else if (!$this[0]) { // colorbox being applied to empty collection
529
+ return $this;
530
+ }
531
+
532
+ if (callback) {
533
+ options.onComplete = callback;
534
+ }
535
+
536
+ $this.each(function () {
537
+ $.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
538
+ }).addClass(boxElement);
539
+
540
+ if (($.isFunction(options.open) && options.open.call($this)) || options.open) {
541
+ launch($this[0]);
542
+ }
543
+ }
544
+
545
+ return $this;
546
+ };
547
+
548
+ publicMethod.position = function (speed, loadedCallback) {
549
+ var
550
+ css,
551
+ top = 0,
552
+ left = 0,
553
+ offset = $box.offset(),
554
+ scrollTop,
555
+ scrollLeft;
556
+
557
+ $window.unbind('resize.' + prefix);
558
+
559
+ // remove the modal so that it doesn't influence the document width/height
560
+ $box.css({top: -9e4, left: -9e4});
561
+
562
+ scrollTop = $window.scrollTop();
563
+ scrollLeft = $window.scrollLeft();
564
+
565
+ if (settings.fixed && !isIE6) {
566
+ offset.top -= scrollTop;
567
+ offset.left -= scrollLeft;
568
+ $box.css({position: 'fixed'});
569
+ } else {
570
+ top = scrollTop;
571
+ left = scrollLeft;
572
+ $box.css({position: 'absolute'});
573
+ }
574
+
575
+ // keeps the top and left positions within the browser's viewport.
576
+ if (settings.right !== false) {
577
+ left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);
578
+ } else if (settings.left !== false) {
579
+ left += setSize(settings.left, 'x');
580
+ } else {
581
+ left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
582
+ }
583
+
584
+ if (settings.bottom !== false) {
585
+ top += Math.max($window.height() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);
586
+ } else if (settings.top !== false) {
587
+ top += setSize(settings.top, 'y');
588
+ } else {
589
+ top += Math.round(Math.max($window.height() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
590
+ }
591
+
592
+ $box.css({top: offset.top, left: offset.left, visibility:'visible'});
593
+
594
+ // setting the speed to 0 to reduce the delay between same-sized content.
595
+ speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed || 0;
596
+
597
+ // this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
598
+ // but it has to be shrank down around the size of div#colorbox when it's done. If not,
599
+ // it can invoke an obscure IE bug when using iframes.
600
+ $wrap[0].style.width = $wrap[0].style.height = "9999px";
601
+
602
+ function modalDimensions(that) {
603
+ $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt(that.style.width,10) - interfaceWidth)+'px';
604
+ $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt(that.style.height,10) - interfaceHeight)+'px';
605
+ }
606
+
607
+ css = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left};
608
+
609
+ if(speed===0){ // temporary workaround to side-step jQuery-UI 1.8 bug (http://bugs.jquery.com/ticket/12273)
610
+ $box.css(css);
611
+ }
612
+ $box.dequeue().animate(css, {
613
+ duration: speed,
614
+ complete: function () {
615
+ modalDimensions(this);
616
+
617
+ active = false;
618
+
619
+ // shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
620
+ $wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
621
+ $wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
622
+
623
+ if (settings.reposition) {
624
+ setTimeout(function () { // small delay before binding onresize due to an IE8 bug.
625
+ $window.bind('resize.' + prefix, publicMethod.position);
626
+ }, 1);
627
+ }
628
+
629
+ if (loadedCallback) {
630
+ loadedCallback();
631
+ }
632
+ },
633
+ step: function () {
634
+ modalDimensions(this);
635
+ }
636
+ });
637
+ };
638
+
639
+ publicMethod.resize = function (options) {
640
+ if (open) {
641
+ options = options || {};
642
+
643
+ if (options.width) {
644
+ settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
645
+ }
646
+ if (options.innerWidth) {
647
+ settings.w = setSize(options.innerWidth, 'x');
648
+ }
649
+ $loaded.css({width: settings.w});
650
+
651
+ if (options.height) {
652
+ settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
653
+ }
654
+ if (options.innerHeight) {
655
+ settings.h = setSize(options.innerHeight, 'y');
656
+ }
657
+ if (!options.innerHeight && !options.height) {
658
+ $loaded.css({height: "auto"});
659
+ settings.h = $loaded.height();
660
+ }
661
+ $loaded.css({height: settings.h});
662
+
663
+ publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
664
+ }
665
+ };
666
+
667
+ publicMethod.prep = function (object) {
668
+ if (!open) {
669
+ return;
670
+ }
671
+
672
+ var callback, speed = settings.transition === "none" ? 0 : settings.speed;
673
+
674
+ $loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
675
+
676
+ $loaded = $tag(div, 'LoadedContent').append(object);
677
+
678
+ function getWidth() {
679
+ settings.w = settings.w || $loaded.width();
680
+ settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
681
+ return settings.w;
682
+ }
683
+ function getHeight() {
684
+ settings.h = settings.h || $loaded.height();
685
+ settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
686
+ return settings.h;
687
+ }
688
+
689
+ $loaded.hide()
690
+ .appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
691
+ .css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
692
+ .css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
693
+ .prependTo($content);
694
+
695
+ $loadingBay.hide();
696
+
697
+ // floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
698
+
699
+ $(photo).css({'float': 'none'});
700
+
701
+ callback = function () {
702
+ var total = $related.length,
703
+ iframe,
704
+ frameBorder = 'frameBorder',
705
+ allowTransparency = 'allowTransparency',
706
+ complete;
707
+
708
+ if (!open) {
709
+ return;
710
+ }
711
+
712
+ function removeFilter() {
713
+ if (isIE) {
714
+ $box[0].style.removeAttribute('filter');
715
+ }
716
+ }
717
+
718
+ complete = function () {
719
+ clearTimeout(loadingTimer);
720
+ $loadingOverlay.hide();
721
+ trigger(event_complete, settings.onComplete);
722
+ };
723
+
724
+ if (isIE) {
725
+ //This fadeIn helps the bicubic resampling to kick-in.
726
+ if (photo) {
727
+ $loaded.fadeIn(100);
728
+ }
729
+ }
730
+
731
+ $title.html(settings.title).add($loaded).show();
732
+
733
+ if (total > 1) { // handle grouping
734
+ if (typeof settings.current === "string") {
735
+ $current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();
736
+ }
737
+
738
+ $next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
739
+ $prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
740
+
741
+ if (settings.slideshow) {
742
+ $slideshow.show();
743
+ }
744
+
745
+ // Preloads images within a rel group
746
+ if (settings.preloading) {
747
+ $.each([getIndex(-1), getIndex(1)], function(){
748
+ var src,
749
+ img,
750
+ i = $related[this],
751
+ data = $.data(i, colorbox);
752
+
753
+ if (data && data.href) {
754
+ src = data.href;
755
+ if ($.isFunction(src)) {
756
+ src = src.call(i);
757
+ }
758
+ } else {
759
+ src = $(i).attr('href');
760
+ }
761
+
762
+ if (src && isImage(data, src)) {
763
+ src = retinaUrl(data, src);
764
+ img = new Image();
765
+ img.src = src;
766
+ }
767
+ });
768
+ }
769
+ } else {
770
+ $groupControls.hide();
771
+ }
772
+
773
+ if (settings.iframe) {
774
+ iframe = $tag('iframe')[0];
775
+
776
+ if (frameBorder in iframe) {
777
+ iframe[frameBorder] = 0;
778
+ }
779
+
780
+ if (allowTransparency in iframe) {
781
+ iframe[allowTransparency] = "true";
782
+ }
783
+
784
+ if (!settings.scrolling) {
785
+ iframe.scrolling = "no";
786
+ }
787
+
788
+ $(iframe)
789
+ .attr({
790
+ src: settings.href,
791
+ name: (new Date()).getTime(), // give the iframe a unique name to prevent caching
792
+ 'class': prefix + 'Iframe',
793
+ allowFullScreen : true, // allow HTML5 video to go fullscreen
794
+ webkitAllowFullScreen : true,
795
+ mozallowfullscreen : true
796
+ })
797
+ .one('load', complete)
798
+ .appendTo($loaded);
799
+
800
+ $events.one(event_purge, function () {
801
+ iframe.src = "//about:blank";
802
+ });
803
+
804
+ if (settings.fastIframe) {
805
+ $(iframe).trigger('load');
806
+ }
807
+ } else {
808
+ complete();
809
+ }
810
+
811
+ if (settings.transition === 'fade') {
812
+ $box.fadeTo(speed, 1, removeFilter);
813
+ } else {
814
+ removeFilter();
815
+ }
816
+ };
817
+
818
+ if (settings.transition === 'fade') {
819
+ $box.fadeTo(speed, 0, function () {
820
+ publicMethod.position(0, callback);
821
+ });
822
+ } else {
823
+ publicMethod.position(speed, callback);
824
+ }
825
+ };
826
+
827
+ publicMethod.load = function (launched) {
828
+ var href, setResize, prep = publicMethod.prep, $inline;
829
+
830
+ active = true;
831
+
832
+ photo = false;
833
+
834
+ element = $related[index];
835
+
836
+ if (!launched) {
837
+ makeSettings();
838
+ }
839
+
840
+ if (className) {
841
+ $box.add($overlay).removeClass(className);
842
+ }
843
+ if (settings.className) {
844
+ $box.add($overlay).addClass(settings.className);
845
+ }
846
+ className = settings.className;
847
+
848
+ trigger(event_purge);
849
+
850
+ trigger(event_load, settings.onLoad);
851
+
852
+ settings.h = settings.height ?
853
+ setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
854
+ settings.innerHeight && setSize(settings.innerHeight, 'y');
855
+
856
+ settings.w = settings.width ?
857
+ setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
858
+ settings.innerWidth && setSize(settings.innerWidth, 'x');
859
+
860
+ // Sets the minimum dimensions for use in image scaling
861
+ settings.mw = settings.w;
862
+ settings.mh = settings.h;
863
+
864
+ // Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
865
+ // If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
866
+ if (settings.maxWidth) {
867
+ settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
868
+ settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
869
+ }
870
+ if (settings.maxHeight) {
871
+ settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
872
+ settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
873
+ }
874
+
875
+ href = settings.href;
876
+
877
+ loadingTimer = setTimeout(function () {
878
+ $loadingOverlay.show();
879
+ }, 100);
880
+
881
+ if (settings.inline) {
882
+ // Inserts an empty placeholder where inline content is being pulled from.
883
+ // An event is bound to put inline content back when ColorBox closes or loads new content.
884
+ $inline = $tag(div).hide().insertBefore($(href)[0]);
885
+
886
+ $events.one(event_purge, function () {
887
+ $inline.replaceWith($loaded.children());
888
+ });
889
+
890
+ prep($(href));
891
+ } else if (settings.iframe) {
892
+ // IFrame element won't be added to the DOM until it is ready to be displayed,
893
+ // to avoid problems with DOM-ready JS that might be trying to run in that iframe.
894
+ prep(" ");
895
+ } else if (settings.html) {
896
+ prep(settings.html);
897
+ } else if (isImage(settings, href)) {
898
+
899
+ href = retinaUrl(settings, href);
900
+
901
+ $(photo = new Image())
902
+ .addClass(prefix + 'Photo')
903
+ .bind('error',function () {
904
+ settings.title = false;
905
+ prep($tag(div, 'Error').html(settings.imgError));
906
+ })
907
+ .one('load', function () {
908
+ var percent;
909
+
910
+ if (settings.retinaImage && window.devicePixelRatio > 1) {
911
+ photo.height = photo.height / window.devicePixelRatio;
912
+ photo.width = photo.width / window.devicePixelRatio;
913
+ }
914
+
915
+ if (settings.scalePhotos) {
916
+ setResize = function () {
917
+ photo.height -= photo.height * percent;
918
+ photo.width -= photo.width * percent;
919
+ };
920
+ if (settings.mw && photo.width > settings.mw) {
921
+ percent = (photo.width - settings.mw) / photo.width;
922
+ setResize();
923
+ }
924
+ if (settings.mh && photo.height > settings.mh) {
925
+ percent = (photo.height - settings.mh) / photo.height;
926
+ setResize();
927
+ }
928
+ }
929
+
930
+ if (settings.h) {
931
+ photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
932
+ }
933
+
934
+ if ($related[1] && (settings.loop || $related[index + 1])) {
935
+ photo.style.cursor = 'pointer';
936
+ photo.onclick = function () {
937
+ publicMethod.next();
938
+ };
939
+ }
940
+
941
+ if (isIE) {
942
+ photo.style.msInterpolationMode = 'bicubic';
943
+ }
944
+
945
+ setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
946
+ prep(photo);
947
+ }, 1);
948
+ });
949
+
950
+ setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
951
+ photo.src = href;
952
+ }, 1);
953
+ } else if (href) {
954
+ $loadingBay.load(href, settings.data, function (data, status) {
955
+ prep(status === 'error' ? $tag(div, 'Error').html(settings.xhrError) : $(this).contents());
956
+ });
957
+ }
958
+ };
959
+
960
+ // Navigates to the next page/image in a set.
961
+ publicMethod.next = function () {
962
+ if (!active && $related[1] && (settings.loop || $related[index + 1])) {
963
+ index = getIndex(1);
964
+ publicMethod.load();
965
+ }
966
+ };
967
+
968
+ publicMethod.prev = function () {
969
+ if (!active && $related[1] && (settings.loop || index)) {
970
+ index = getIndex(-1);
971
+ publicMethod.load();
972
+ }
973
+ };
974
+
975
+ // Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
976
+ publicMethod.close = function () {
977
+ if (open && !closing) {
978
+
979
+ closing = true;
980
+
981
+ open = false;
982
+
983
+ trigger(event_cleanup, settings.onCleanup);
984
+
985
+ $window.unbind('.' + prefix + ' .' + event_ie6);
986
+
987
+ $overlay.fadeTo(200, 0);
988
+
989
+ $box.stop().fadeTo(300, 0, function () {
990
+
991
+ $box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
992
+
993
+ trigger(event_purge);
994
+
995
+ $loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
996
+
997
+ setTimeout(function () {
998
+ closing = false;
999
+ trigger(event_closed, settings.onClosed);
1000
+ }, 1);
1001
+ });
1002
+ }
1003
+ };
1004
+
1005
+ // Removes changes ColorBox made to the document, but does not remove the plugin
1006
+ // from jQuery.
1007
+ publicMethod.remove = function () {
1008
+ $([]).add($box).add($overlay).remove();
1009
+ $box = null;
1010
+ $('.' + boxElement)
1011
+ .removeData(colorbox)
1012
+ .removeClass(boxElement);
1013
+
1014
+ $(document).unbind('click.'+prefix);
1015
+ };
1016
+
1017
+ // A method for fetching the current element ColorBox is referencing.
1018
+ // returns a jQuery object.
1019
+ publicMethod.element = function () {
1020
+ return $(element);
1021
+ };
1022
+
1023
+ publicMethod.settings = defaults;
1024
+
1025
+ }(jQuery, document, window));