sufia 6.0.0 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (290) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -5
  3. data/CONTRIBUTING.md +4 -4
  4. data/Gemfile +2 -1
  5. data/History.md +69 -0
  6. data/README.md +84 -4
  7. data/SUFIA_VERSION +1 -1
  8. data/app/assets/images/zotero.png +0 -0
  9. data/app/assets/javascripts/sufia/featured_works.js +20 -3
  10. data/app/assets/stylesheets/generic_files.css.erb +2 -2
  11. data/app/assets/stylesheets/sufia.css.scss +2 -2
  12. data/app/assets/stylesheets/sufia/_buttons.scss +2 -2
  13. data/app/assets/stylesheets/sufia/_collections.scss +4 -4
  14. data/app/assets/stylesheets/sufia/_dashboard.scss +1 -1
  15. data/app/assets/stylesheets/sufia/_file-listing.scss +3 -0
  16. data/app/assets/stylesheets/sufia/_modal.scss +4 -0
  17. data/app/assets/stylesheets/sufia/_settings.scss +4 -3
  18. data/app/assets/stylesheets/sufia/_styles.scss +4 -0
  19. data/app/controllers/admin/stats_controller.rb +68 -0
  20. data/app/controllers/api/items_controller.rb +78 -0
  21. data/app/controllers/api/zotero_controller.rb +70 -0
  22. data/app/controllers/authorities_controller.rb +6 -5
  23. data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +2 -1
  24. data/app/controllers/concerns/sufia/breadcrumbs.rb +1 -1
  25. data/app/controllers/concerns/sufia/depositors_controller_behavior.rb +11 -0
  26. data/app/controllers/concerns/sufia/files_controller/browse_everything.rb +1 -1
  27. data/app/controllers/concerns/sufia/files_controller/local_ingest_behavior.rb +1 -1
  28. data/app/controllers/concerns/sufia/files_controller_behavior.rb +23 -11
  29. data/app/controllers/concerns/sufia/my_controller_behavior.rb +1 -7
  30. data/app/controllers/concerns/sufia/users_controller_behavior.rb +1 -2
  31. data/app/controllers/my/collections_controller.rb +1 -0
  32. data/app/controllers/my/files_controller.rb +1 -1
  33. data/app/helpers/sufia/sufia_helper_behavior.rb +28 -16
  34. data/app/models/my_search_builder.rb +4 -0
  35. data/app/search_builders/sufia/my_search_builder_behavior.rb +20 -0
  36. data/app/search_builders/sufia/search_builder.rb +1 -1
  37. data/app/views/admin/stats/index.html.erb +68 -0
  38. data/app/views/collections/_action_menu.html.erb +22 -20
  39. data/app/views/collections/_collection.html.erb +1 -1
  40. data/app/views/collections/_form_for_select_collection.html.erb +5 -3
  41. data/app/views/generic_files/_show_actions.html.erb +4 -2
  42. data/app/views/generic_files/show.html.erb +1 -1
  43. data/app/views/layouts/sufia-dashboard.html.erb +5 -4
  44. data/app/views/layouts/sufia-one-column.html.erb +2 -0
  45. data/app/views/layouts/sufia-two-column.html.erb +6 -4
  46. data/app/views/my/_facet_layout.html.erb +2 -2
  47. data/app/views/my/_facets.html.erb +4 -6
  48. data/app/views/my/index.html.erb +4 -3
  49. data/app/views/users/_edit_primary.html.erb +18 -17
  50. data/app/views/users/_follower_modal.html.erb +5 -1
  51. data/app/views/users/_following_modal.html.erb +5 -1
  52. data/app/views/users/_user_info.html.erb +6 -1
  53. data/app/views/users/_zotero.html.erb +12 -0
  54. data/config/locales/sufia.en.yml +10 -1
  55. data/config/routes.rb +23 -1
  56. data/lib/generators/sufia/admin_stat_generator.rb +17 -0
  57. data/lib/generators/sufia/install_generator.rb +8 -3
  58. data/{sufia-models/lib/generators/sufia/models/templates/config/resque_admin.rb → lib/generators/sufia/templates/sufia/stats_admin.rb} +3 -3
  59. data/lib/generators/sufia/upgrade400_generator.rb +2 -2
  60. data/lib/sufia.rb +3 -0
  61. data/lib/sufia/arkivo.rb +11 -0
  62. data/lib/sufia/arkivo/actor.rb +95 -0
  63. data/lib/sufia/arkivo/config.rb +11 -0
  64. data/lib/sufia/arkivo/create_subscription_job.rb +67 -0
  65. data/lib/sufia/arkivo/metadata_munger.rb +51 -0
  66. data/lib/sufia/arkivo/schema_validator.rb +55 -0
  67. data/lib/sufia/form_builder.rb +1 -1
  68. data/lib/sufia/inflections.rb +3 -0
  69. data/lib/sufia/version.rb +1 -1
  70. data/lib/sufia/zotero.rb +6 -0
  71. data/lib/sufia/zotero/config.rb +15 -0
  72. data/solr_conf/conf/solrconfig.xml +11 -0
  73. data/spec/controllers/admin_stats_controller_spec.rb +73 -0
  74. data/spec/controllers/api/items_controller_spec.rb +476 -0
  75. data/spec/controllers/api/zotero_controller_spec.rb +178 -0
  76. data/spec/controllers/batch_edits_controller_spec.rb +7 -0
  77. data/spec/controllers/collections_controller_spec.rb +1 -1
  78. data/spec/controllers/dashboard_controller_spec.rb +1 -1
  79. data/spec/controllers/depositors_controller_spec.rb +9 -5
  80. data/spec/controllers/generic_files_controller_spec.rb +5 -4
  81. data/spec/controllers/mailbox_controller_spec.rb +2 -2
  82. data/spec/controllers/my/collections_controller_spec.rb +1 -2
  83. data/spec/controllers/my/files_controller_spec.rb +5 -5
  84. data/spec/controllers/my/shares_controller_spec.rb +15 -3
  85. data/spec/controllers/pages_controller_spec.rb +1 -1
  86. data/spec/controllers/users_controller_spec.rb +10 -9
  87. data/spec/factories/api_items.rb +91 -0
  88. data/spec/factories/generic_files.rb +4 -0
  89. data/spec/factories/users.rb +4 -4
  90. data/spec/features/featured_item_spec.rb +26 -0
  91. data/spec/features/ingest_upload_files_spec.rb +2 -3
  92. data/spec/features/proxy_spec.rb +0 -1
  93. data/spec/helpers/permissions_helper_spec.rb +2 -2
  94. data/spec/helpers/sufia_helper_spec.rb +11 -5
  95. data/spec/inputs/select_with_help_input_spec.rb +2 -2
  96. data/spec/javascripts/helpers/.gitkeep +0 -0
  97. data/spec/javascripts/helpers/jasmine-jquery.js +832 -0
  98. data/spec/javascripts/jasmine_spec.rb +31 -0
  99. data/spec/javascripts/notify_update_link_spec.js +8 -0
  100. data/spec/javascripts/single_use_link_spec.js.coffee +23 -0
  101. data/spec/javascripts/support/jasmine.yml +124 -0
  102. data/spec/javascripts/support/jasmine_helper.rb +15 -0
  103. data/spec/javascripts/terms_of_service_spec.js.coffee +32 -0
  104. data/spec/javascripts/toggle_icon_spec.js +11 -0
  105. data/spec/jobs/active_fedora_id_based_job_spec.rb +3 -3
  106. data/spec/jobs/import_url_job_spec.rb +0 -2
  107. data/spec/lib/sufia/arkivo/actor_spec.rb +139 -0
  108. data/spec/lib/sufia/arkivo/create_subscription_job_spec.rb +54 -0
  109. data/spec/lib/sufia/arkivo/metadata_munger_spec.rb +48 -0
  110. data/spec/lib/sufia/arkivo/schema_validator_spec.rb +65 -0
  111. data/spec/lib/sufia/upload_complete_behavior_spec.rb +1 -1
  112. data/spec/lib/sufia/user_stat_importer_spec.rb +60 -0
  113. data/spec/lib/sufia/zotero/config_spec.rb +30 -0
  114. data/spec/models/collection_spec.rb +36 -7
  115. data/spec/models/file_download_stat_spec.rb +5 -5
  116. data/spec/models/file_usage_spec.rb +23 -0
  117. data/spec/models/file_view_stat_spec.rb +6 -6
  118. data/spec/models/fits_datastream_spec.rb +0 -5
  119. data/spec/models/generic_file_spec.rb +49 -14
  120. data/spec/models/local_authority_spec.rb +1 -1
  121. data/spec/models/proxy_deposit_request_spec.rb +1 -1
  122. data/spec/models/trophy_spec.rb +8 -8
  123. data/spec/models/user_spec.rb +33 -0
  124. data/spec/presenters/sufia/collection_presenter_spec.rb +1 -1
  125. data/spec/routing/api_route_spec.rb +91 -0
  126. data/spec/routing/route_spec.rb +1 -1
  127. data/spec/services/generic_file_audit_service_spec.rb +44 -8
  128. data/spec/spec_helper.rb +18 -3
  129. data/spec/support/features.rb +0 -2
  130. data/spec/support/locations.rb +0 -21
  131. data/spec/support/rake.rb +41 -0
  132. data/spec/support/selectors.rb +0 -50
  133. data/spec/tasks/rake_spec.rb +33 -12
  134. data/spec/test_app_templates/lib/generators/test_app_generator.rb +12 -0
  135. data/spec/views/admin/stats/index.html.erb_spec.rb +45 -0
  136. data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +0 -1
  137. data/spec/views/dashboard/index_spec.rb +1 -1
  138. data/spec/views/generic_file/edit.html.erb_spec.rb +1 -1
  139. data/spec/views/generic_file/show.html.erb_spec.rb +1 -3
  140. data/spec/views/users/_follower_modal.html.erb_spec.rb +44 -7
  141. data/spec/views/users/_following_modal.html.erb_spec.rb +49 -7
  142. data/spec/views/users/edit.html.erb_spec.rb +72 -0
  143. data/spec/views/users/show.html.erb_spec.rb +1 -1
  144. data/sufia.gemspec +6 -2
  145. data/tasks/sufia-user.rake +14 -0
  146. metadata +130 -156
  147. data/spec/lib/sufia/id_service_spec.rb +0 -32
  148. data/spec/services/noid_spec.rb +0 -9
  149. data/spec/support/poltergeist.rb +0 -11
  150. data/spec/support/rake_output.rb +0 -20
  151. data/sufia-models/.gitignore +0 -17
  152. data/sufia-models/Gemfile +0 -4
  153. data/sufia-models/LICENSE.md +0 -177
  154. data/sufia-models/README.md +0 -39
  155. data/sufia-models/Rakefile +0 -1
  156. data/sufia-models/app/actors/sufia/generic_file/actor.rb +0 -137
  157. data/sufia-models/app/jobs/active_fedora_id_based_job.rb +0 -22
  158. data/sufia-models/app/jobs/active_fedora_pid_based_job.rb +0 -7
  159. data/sufia-models/app/jobs/audit_job.rb +0 -62
  160. data/sufia-models/app/jobs/batch_update_job.rb +0 -72
  161. data/sufia-models/app/jobs/characterize_job.rb +0 -10
  162. data/sufia-models/app/jobs/create_derivatives_job.rb +0 -14
  163. data/sufia-models/app/jobs/import_url_job.rb +0 -52
  164. data/sufia-models/app/jobs/ingest_local_file_job.rb +0 -46
  165. data/sufia-models/app/jobs/resolrize_job.rb +0 -9
  166. data/sufia-models/app/models/batch.rb +0 -36
  167. data/sufia-models/app/models/checksum_audit_log.rb +0 -21
  168. data/sufia-models/app/models/concerns/sufia/ability.rb +0 -61
  169. data/sufia-models/app/models/concerns/sufia/collection_behavior.rb +0 -24
  170. data/sufia-models/app/models/concerns/sufia/file_stat_utils.rb +0 -35
  171. data/sufia-models/app/models/concerns/sufia/generic_file.rb +0 -25
  172. data/sufia-models/app/models/concerns/sufia/generic_file/batches.rb +0 -28
  173. data/sufia-models/app/models/concerns/sufia/generic_file/characterization.rb +0 -89
  174. data/sufia-models/app/models/concerns/sufia/generic_file/content.rb +0 -13
  175. data/sufia-models/app/models/concerns/sufia/generic_file/derivatives.rb +0 -26
  176. data/sufia-models/app/models/concerns/sufia/generic_file/export.rb +0 -343
  177. data/sufia-models/app/models/concerns/sufia/generic_file/featured.rb +0 -11
  178. data/sufia-models/app/models/concerns/sufia/generic_file/full_text_indexing.rb +0 -43
  179. data/sufia-models/app/models/concerns/sufia/generic_file/indexing.rb +0 -14
  180. data/sufia-models/app/models/concerns/sufia/generic_file/metadata.rb +0 -98
  181. data/sufia-models/app/models/concerns/sufia/generic_file/mime_types.rb +0 -69
  182. data/sufia-models/app/models/concerns/sufia/generic_file/permissions.rb +0 -11
  183. data/sufia-models/app/models/concerns/sufia/generic_file/proxy_deposit.rb +0 -31
  184. data/sufia-models/app/models/concerns/sufia/generic_file/trophies.rb +0 -14
  185. data/sufia-models/app/models/concerns/sufia/generic_file/versions.rb +0 -16
  186. data/sufia-models/app/models/concerns/sufia/generic_file/virus_check.rb +0 -37
  187. data/sufia-models/app/models/concerns/sufia/model_methods.rb +0 -20
  188. data/sufia-models/app/models/concerns/sufia/user.rb +0 -137
  189. data/sufia-models/app/models/concerns/sufia/user_usage_stats.rb +0 -15
  190. data/sufia-models/app/models/datastreams/file_content_datastream.rb +0 -4
  191. data/sufia-models/app/models/datastreams/fits_datastream.rb +0 -152
  192. data/sufia-models/app/models/domain_term.rb +0 -5
  193. data/sufia-models/app/models/featured_work.rb +0 -22
  194. data/sufia-models/app/models/file_download_stat.rb +0 -18
  195. data/sufia-models/app/models/file_usage.rb +0 -34
  196. data/sufia-models/app/models/file_view_stat.rb +0 -18
  197. data/sufia-models/app/models/follow.rb +0 -12
  198. data/sufia-models/app/models/generic_file.rb +0 -3
  199. data/sufia-models/app/models/geo_names_resource.rb +0 -18
  200. data/sufia-models/app/models/group.rb +0 -8
  201. data/sufia-models/app/models/local_authority.rb +0 -86
  202. data/sufia-models/app/models/local_authority_entry.rb +0 -3
  203. data/sufia-models/app/models/proxy_deposit_request.rb +0 -85
  204. data/sufia-models/app/models/proxy_deposit_rights.rb +0 -4
  205. data/sufia-models/app/models/single_use_link.rb +0 -42
  206. data/sufia-models/app/models/subject_local_authority_entry.rb +0 -2
  207. data/sufia-models/app/models/sufia/avatar_uploader.rb +0 -20
  208. data/sufia-models/app/models/sufia/avatar_validator.rb +0 -8
  209. data/sufia-models/app/models/sufia/collection.rb +0 -5
  210. data/sufia-models/app/models/sufia/download.rb +0 -9
  211. data/sufia-models/app/models/sufia/orcid_validator.rb +0 -12
  212. data/sufia-models/app/models/sufia/pageview.rb +0 -9
  213. data/sufia-models/app/models/trophy.rb +0 -10
  214. data/sufia-models/app/models/user_stat.rb +0 -2
  215. data/sufia-models/app/models/version_committer.rb +0 -2
  216. data/sufia-models/app/services/sufia/analytics.rb +0 -50
  217. data/sufia-models/app/services/sufia/generic_file_audit_service.rb +0 -83
  218. data/sufia-models/app/services/sufia/generic_file_indexing_service.rb +0 -12
  219. data/sufia-models/app/services/sufia/id_service.rb +0 -45
  220. data/sufia-models/app/services/sufia/noid.rb +0 -22
  221. data/sufia-models/app/services/sufia/repository_audit_service.rb +0 -9
  222. data/sufia-models/config/locales/sufia.en.yml +0 -6
  223. data/sufia-models/lib/generators/sufia/models/abstract_migration_generator.rb +0 -30
  224. data/sufia-models/lib/generators/sufia/models/cached_stats_generator.rb +0 -24
  225. data/sufia-models/lib/generators/sufia/models/fulltext_generator.rb +0 -27
  226. data/sufia-models/lib/generators/sufia/models/install_generator.rb +0 -106
  227. data/sufia-models/lib/generators/sufia/models/orcid_field_generator.rb +0 -19
  228. data/sufia-models/lib/generators/sufia/models/proxies_generator.rb +0 -24
  229. data/sufia-models/lib/generators/sufia/models/templates/app/models/collection.rb +0 -2
  230. data/sufia-models/lib/generators/sufia/models/templates/config/analytics.yml +0 -9
  231. data/sufia-models/lib/generators/sufia/models/templates/config/clamav.rb +0 -1
  232. data/sufia-models/lib/generators/sufia/models/templates/config/mailboxer.rb +0 -17
  233. data/sufia-models/lib/generators/sufia/models/templates/config/mime_types.rb +0 -6
  234. data/sufia-models/lib/generators/sufia/models/templates/config/redis.yml +0 -9
  235. data/sufia-models/lib/generators/sufia/models/templates/config/redis_config.rb +0 -32
  236. data/sufia-models/lib/generators/sufia/models/templates/config/resque-pool.yml +0 -1
  237. data/sufia-models/lib/generators/sufia/models/templates/config/resque_config.rb +0 -5
  238. data/sufia-models/lib/generators/sufia/models/templates/config/setup_mail.rb +0 -3
  239. data/sufia-models/lib/generators/sufia/models/templates/config/solrconfig.xml +0 -223
  240. data/sufia-models/lib/generators/sufia/models/templates/config/sufia.rb +0 -144
  241. data/sufia-models/lib/generators/sufia/models/templates/migrations/acts_as_follower_migration.rb +0 -17
  242. data/sufia-models/lib/generators/sufia/models/templates/migrations/add_avatars_to_users.rb +0 -15
  243. data/sufia-models/lib/generators/sufia/models/templates/migrations/add_external_key_to_content_blocks.rb +0 -6
  244. data/sufia-models/lib/generators/sufia/models/templates/migrations/add_groups_to_users.rb +0 -11
  245. data/sufia-models/lib/generators/sufia/models/templates/migrations/add_ldap_attrs_to_user.rb +0 -27
  246. data/sufia-models/lib/generators/sufia/models/templates/migrations/add_linkedin_to_users.rb +0 -5
  247. data/sufia-models/lib/generators/sufia/models/templates/migrations/add_orcid_to_users.rb +0 -5
  248. data/sufia-models/lib/generators/sufia/models/templates/migrations/add_social_to_users.rb +0 -13
  249. data/sufia-models/lib/generators/sufia/models/templates/migrations/change_audit_log_pid_to_generic_file_id.rb +0 -5
  250. data/sufia-models/lib/generators/sufia/models/templates/migrations/change_proxy_deposit_request_pid_to_generic_file_id.rb +0 -5
  251. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_checksum_audit_logs.rb +0 -19
  252. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_content_blocks.rb +0 -10
  253. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_featured_works.rb +0 -12
  254. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_file_download_stats.rb +0 -12
  255. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_file_view_stats.rb +0 -12
  256. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_local_authorities.rb +0 -50
  257. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_proxy_deposit_requests.rb +0 -16
  258. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_proxy_deposit_rights.rb +0 -11
  259. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_single_use_links.rb +0 -12
  260. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_tinymce_assets.rb +0 -8
  261. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_trophies.rb +0 -10
  262. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_user_stats.rb +0 -19
  263. data/sufia-models/lib/generators/sufia/models/templates/migrations/create_version_committers.rb +0 -15
  264. data/sufia-models/lib/generators/sufia/models/update_content_blocks_generator.rb +0 -18
  265. data/sufia-models/lib/generators/sufia/models/upgrade400_generator.rb +0 -54
  266. data/sufia-models/lib/generators/sufia/models/upgrade600_generator.rb +0 -21
  267. data/sufia-models/lib/generators/sufia/models/usagestats_generator.rb +0 -19
  268. data/sufia-models/lib/generators/sufia/models/user_stats_generator.rb +0 -31
  269. data/sufia-models/lib/sufia/messages.rb +0 -66
  270. data/sufia-models/lib/sufia/models.rb +0 -34
  271. data/sufia-models/lib/sufia/models/active_fedora/redis.rb +0 -43
  272. data/sufia-models/lib/sufia/models/active_record/redis.rb +0 -56
  273. data/sufia-models/lib/sufia/models/engine.rb +0 -79
  274. data/sufia-models/lib/sufia/models/file_content.rb +0 -6
  275. data/sufia-models/lib/sufia/models/file_content/versions.rb +0 -21
  276. data/sufia-models/lib/sufia/models/resque.rb +0 -36
  277. data/sufia-models/lib/sufia/models/stats/user_stat_importer.rb +0 -108
  278. data/sufia-models/lib/sufia/models/user_local_directory_behavior.rb +0 -29
  279. data/sufia-models/lib/sufia/models/utils.rb +0 -22
  280. data/sufia-models/lib/sufia/models/version.rb +0 -5
  281. data/sufia-models/lib/sufia/models/virus_found_error.rb +0 -4
  282. data/sufia-models/lib/sufia/permissions.rb +0 -9
  283. data/sufia-models/lib/sufia/permissions/readable.rb +0 -20
  284. data/sufia-models/lib/sufia/permissions/writable.rb +0 -74
  285. data/sufia-models/lib/tasks/batch_cleanup.rake +0 -19
  286. data/sufia-models/lib/tasks/migrate.rake +0 -21
  287. data/sufia-models/lib/tasks/resque.rake +0 -13
  288. data/sufia-models/lib/tasks/stats_tasks.rake +0 -12
  289. data/sufia-models/lib/tasks/sufia-models_tasks.rake +0 -80
  290. data/sufia-models/sufia-models.gemspec +0 -52
@@ -0,0 +1,4 @@
1
+ # Added to allow for the My controller to show only things I have edit access to
2
+ class MySearchBuilder < Blacklight::SearchBuilder
3
+ include Sufia::MySearchBuilderBehavior
4
+ end
@@ -0,0 +1,20 @@
1
+ # Behavior for the my controller search builder to allow the my controller to only get access to
2
+ # items I have edit access to.
3
+ #
4
+ # Separating as a behavior allows for easier overriding of the gem behavior.
5
+ module Sufia::MySearchBuilderBehavior
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ include Blacklight::Solr::SearchBuilderBehavior
10
+ end
11
+
12
+ include Hydra::AccessControlsEnforcement
13
+ include Sufia::SearchBuilder
14
+
15
+ # show only files with edit permissions in lib/hydra/access_controls_enforcement.rb apply_gated_discovery
16
+ def discovery_permissions
17
+ ["edit"]
18
+ end
19
+
20
+ end
@@ -10,7 +10,7 @@ module Sufia::SearchBuilder
10
10
  ]
11
11
  end
12
12
 
13
- def show_only_files_deposited_by_current_user(solr_parameters)
13
+ def show_only_resources_deposited_by_current_user(solr_parameters)
14
14
  solr_parameters[:fq] ||= []
15
15
  solr_parameters[:fq] += [
16
16
  ActiveFedora::SolrQueryBuilder.construct_query_for_rel(depositor: scope.current_user.user_key)
@@ -0,0 +1,68 @@
1
+ <div class="stats">
2
+ <h1>Statistics for <%= application_name %>
3
+ <%= Sufia::VERSION %></h1>
4
+ <br/>
5
+
6
+ <h2>Total Files: <%= @files_count[:total] %> </h2>
7
+ <br/>
8
+ <h3>Totals by Visibility</h3>
9
+ <ul>
10
+ <li>Open Access <span class="count">(<%= @files_count[:public] %>)</span></li>
11
+ <li><%= t("sufia.admin.stats.registered") %> <span class="count">(<%= @files_count[:registered] %>)</span></li>
12
+ <li>Private <span class="count">(<%= @files_count[:private] %>)</span></li>
13
+ </ul>
14
+
15
+ <h3>Top File Formats</h3>
16
+ <ul>
17
+ <% @top_formats.each do |k, v| %>
18
+ <li><%= k %> <span class="count">(<%= v %>)</span></li>
19
+ <% end %>
20
+ </ul>
21
+
22
+ <br/>
23
+
24
+ <h2>Total <%= application_name %> Users:&nbsp; <%= @users_count %> </h2>
25
+ <br/>
26
+
27
+ <h3>Newest Users</h3>
28
+ <%= form_for "users_stats", url: sufia.admin_stats_path, method: "GET" do |f| %>
29
+ <%= f.label "Display users registered since" %>
30
+ <input type="date" name="users_stats[start_date]" value="<%= @users_stats[:start_date] %>"></input>
31
+ <%= f.submit "Load Stats" %>
32
+ <%- end %>
33
+
34
+ <%- if @users_stats[:start_date] %>
35
+ <div>Total: <%= @recent_users.count %></div>
36
+ <%- else %>
37
+ Five most recent users:
38
+ <%- end %>
39
+
40
+ <ul>
41
+ <% @recent_users.each do |usr| %>
42
+ <li>
43
+ <a href="<%= sufia.profile_path(usr.user_key) %>" title="View user's profile"><%= usr.name %></a>
44
+ <%- if usr.department %>
45
+ of <%= usr.department %>
46
+ <%- end %>
47
+ registered
48
+ <span class="date">
49
+ <%= usr.created_at.to_time.strftime("%m/%d/%Y") %>
50
+ </span>
51
+ </li>
52
+ <% end %>
53
+ </ul>
54
+
55
+
56
+ <br/>
57
+ <h3>Most Active Users (top <%= @active_users.count %>)</h3>
58
+ <ul>
59
+ <% @active_users.each do |k, v| %>
60
+ <li>
61
+ <%= link_to_profile(k) %> <span class="count">(<%= v %>)</span>
62
+ </li>
63
+ <% end %>
64
+ <% if !params[:dep_count] %>
65
+ <p><%= link_to "View top 20", sufia.admin_stats_path, controller: "stats", dep_count: "20" %> </p>
66
+ <% end %>
67
+ </ul>
68
+ </div>
@@ -1,23 +1,25 @@
1
1
  <div class="btn-group">
2
- <button class="btn btn-sm" href="#"><i class="glyphicon glyphicon-wrench"></i> Select an action</button>
3
- <button class="btn btn-sm dropdown-toggle" data-toggle="dropdown" href="#"><span class="glyphicon glyphicon-chevron-down"></span></button>
4
- <ul class="dropdown-menu">
5
- <li>
6
- <%= button_for_remove_from_collection(gf, 'Remove from Collection') %>
7
- </li>
8
- <li>
9
- <%= link_to raw('<i class="glyphicon glyphicon-link over"></i> Single-Use Link to File'), '#', class: "copypaste itemicon itemcode", title: "Single-Use Link to File", id: "copy_link_#{id}" %>
10
- </li>
11
- <li>
12
- <%= link_to raw('<i class="glyphicon glyphicon-pencil"></i> Edit File'), sufia.edit_generic_file_path(id), class: 'itemicon itemedit', title: 'Edit File' %>
13
- </li>
14
- <li>
15
- <%= link_to raw('<i class="glyphicon glyphicon-download-alt"></i> Download File'), sufia.download_path(id), class: 'itemicon itemdownload', title: 'Download File', target: '_new' %>
16
- </li>
17
- <li>
18
- <%= display_trophy_link(@user, id) do |text| %>
19
- <i class='glyphicon glyphicon-star'></i> <%= text %>
20
- <% end %>
21
- </li>
2
+ <button class="btn btn-sm dropdown-toggle" data-toggle="dropdown">Select an action <span class="caret"></span></button>
3
+ <ul class="dropdown-menu dropdown-menu-right">
4
+ <li>
5
+ <%= button_for_remove_from_collection(gf, 'Remove from Collection') %>
6
+ </li>
7
+ <li>
8
+ <%= link_to raw('<i class="glyphicon glyphicon-link over"></i> Single-Use Link to File'), '#',
9
+ class: "copypaste itemicon itemcode", title: "Single-Use Link to File", id: "copy_link_#{id}" %>
10
+ </li>
11
+ <li>
12
+ <%= link_to raw('<i class="glyphicon glyphicon-pencil"></i> Edit File'), sufia.edit_generic_file_path(id),
13
+ class: 'itemicon itemedit', title: 'Edit File' %>
14
+ </li>
15
+ <li>
16
+ <%= link_to raw('<i class="glyphicon glyphicon-download-alt"></i> Download File'), sufia.download_path(id),
17
+ class: 'itemicon itemdownload', title: 'Download File', target: '_new' %>
18
+ </li>
19
+ <li>
20
+ <%= display_trophy_link(@user, id) do |text| %>
21
+ <i class='glyphicon glyphicon-star'></i> <%= text %>
22
+ <% end %>
23
+ </li>
22
24
  </ul>
23
25
  </div>
@@ -5,7 +5,7 @@
5
5
  <div class="row">
6
6
  <div class="col-sm-3">
7
7
  <%= link_to [collections, collection] do %>
8
- <span class="glyphicon glyphicon-th collection-icon-search">
8
+ <%= image_tag "site_images/collection-icon.svg", class: "collection-icon-search" %>
9
9
  <% end %>
10
10
  </div>
11
11
  <div class="col-sm-9">
@@ -3,23 +3,25 @@
3
3
  <div class="modal-content">
4
4
  <div class="modal-header">
5
5
  <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
6
- <h4 class="modal-title" id="col_add_title"><%= t("sufia.collection.select_form.title") %></h4>
6
+ <span class="modal-title" id="col_add_title"><%= t("sufia.collection.select_form.title") %></span>
7
7
  </div>
8
8
  <div class="modal-body">
9
9
  <% if user_collections.blank? %>
10
10
  <em> <%= t("sufia.collection.select_form.no_collections") %></em><br><br><br><br>
11
11
  <% else %>
12
- <%= t("sufia.collection.select_form.select_heading") %>
13
12
  <div class="collection-list">
13
+ <fieldset>
14
+ <legend><%= t("sufia.collection.select_form.select_heading") %></legend>
14
15
  <ul>
15
16
  <% user_collections.sort! { |c1,c2| c1['date_modified_dtsi'] <=> c2['date_modified_dtsi'] } %>
16
17
  <% user_collections.each do |collection| %>
17
- <li> <label for="<%= collection.id %>" class="sr-only">Add to <%=collection.title%></label>
18
+ <li> <label for="id_<%= collection.id %>" class="sr-only">Add to <%=collection.title%></label>
18
19
  <%= radio_button_tag(:id, collection.id, true, class: "collection-selector") %>
19
20
  <%= label_tag(:collection, collection.title, "aria-hidden" =>true) %>
20
21
  </li>
21
22
  <% end %>
22
23
  </ul>
24
+ </fieldset>
23
25
  </div><!-- collection-list -->
24
26
  <% end %> <!-- else -->
25
27
  </div>
@@ -1,4 +1,5 @@
1
- <h2 class="non lower">Actions</h2>
1
+ <div id="show_actions">
2
+ <h2 class="non lower">Actions</h2>
2
3
  <p>
3
4
  <%= render_download_link %>
4
5
  <% if Sufia.config.analytics %>
@@ -19,7 +20,7 @@
19
20
  <%= link_to "Feature", sufia.featured_work_path(@generic_file, format: :json), data: {behavior: 'feature'} %>
20
21
  <% elsif @generic_file.featured? %>
21
22
  &nbsp;|&nbsp;
22
- Featured
23
+ <%= link_to "Unfeature", sufia.featured_work_path(@generic_file, format: :json), data: {behavior: 'unfeature-page'} %>
23
24
  <% end %>
24
25
  <% end %>
25
26
  </p>
@@ -43,3 +44,4 @@
43
44
 
44
45
  <!-- COinS hook for Zotero -->
45
46
  <span class="Z3988" title="<%= @generic_file.export_as_openurl_ctx_kev %>"></span>
47
+ </div>
@@ -34,7 +34,7 @@
34
34
  <%= javascript_include_tag 'https://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4ff1d986721ebb24' %>
35
35
 
36
36
  <%= javascript_tag do %>
37
- var addthis_config = {"data_track_addressbar":true};
37
+ var addthis_config = {"data_track_addressbar":false};
38
38
  initialize_audio();
39
39
  <% end %>
40
40
 
@@ -5,19 +5,20 @@
5
5
  <div id="wrapper">
6
6
  <div class="container-fluid">
7
7
  <div id="page-positioner">
8
-
8
+ <a href="#skip_to_content" class="sr-only">Skip to Content</a>
9
9
  <%= render partial: '/masthead' %>
10
10
  <%= render partial: '/controls' %>
11
11
  <%= render partial: '/flash_msg' %>
12
12
 
13
- <div id="content-wrapper" class="dashboard">
13
+ <div id="content-wrapper" class="dashboard" role="main">
14
+ <a name="skip_to_content"></a>
14
15
  <div class="container-fluid">
15
16
  <div id="content-header" class="row"><%= yield :heading %></div>
16
17
  </div>
17
18
  <div class="container-fluid">
18
19
  <div id="content" class="row">
19
- <div id="sidebar" class="col-xs-12 col-sm-3"><%= yield :sidebar %></div>
20
- <div class="col-xs-12 col-sm-9"><%= yield %></div>
20
+ <div class="col-xs-12 col-sm-9 col-sm-push-3"><%= yield %></div>
21
+ <div id="sidebar" class="col-xs-12 col-sm-3 col-sm-pull-9"><%= yield :sidebar %></div>
21
22
  </div>
22
23
  </div>
23
24
  </div>
@@ -8,10 +8,12 @@
8
8
  <div id="wrapper">
9
9
  <div class="container-fluid">
10
10
  <div id="page-positioner">
11
+ <a href="#skip_to_content" class="sr-only">Skip to Content</a>
11
12
  <%= render partial: '/masthead' %>
12
13
  <%= render partial: '/controls' %>
13
14
  <%= render partial: '/flash_msg' %>
14
15
  <div id="content-wrapper" class="container-fluid">
16
+ <a name="skip_to_content"></a>
15
17
  <div id="content" class="row">
16
18
  <div class="col-xs-12">
17
19
  <%= yield %>
@@ -8,17 +8,19 @@
8
8
  <div id="wrapper">
9
9
  <div class="container-fluid">
10
10
  <div id="page-positioner">
11
+ <a href="#skip_to_content" class="sr-only">Skip to Content</a>
11
12
  <%= render partial: '/masthead' %>
12
13
  <%= render partial: '/controls' %>
13
14
  <%= render partial: '/flash_msg' %>
14
15
  <div id="content-wrapper" class="container-fluid">
16
+ <a name="skip_to_content"></a>
15
17
  <div class="row">
16
- <div id="sidebar" class="col-xs-12 col-sm-3">
17
- <%= yield :sidebar %>
18
- </div>
19
- <div id="content" class="col-xs-12 col-sm-9">
18
+ <div id="content" class="col-xs-12 col-sm-9 col-sm-push-3">
20
19
  <%= yield %>
21
20
  </div>
21
+ <div id="sidebar" class="col-xs-12 col-sm-3 col-sm-push-9">
22
+ <%= yield :sidebar %>
23
+ </div>
22
24
  </div><!-- /#content -->
23
25
  </div><!-- /#content-wrapper -->
24
26
  <%= render partial: '/footer' %>
@@ -1,8 +1,8 @@
1
1
  <div class="panel panel-default facet_limit blacklight-<%= facet_field.field.parameterize %> <%= 'facet_limit-active' if facet_field_in_params?(facet_field.field) %>">
2
2
  <div class="<%= "collapsed" if should_collapse_facet?(facet_field) %> collapse-toggle panel-heading" data-toggle="collapse" data-target="#<%= facet_field_id(facet_field) %>">
3
- <h5 class="panel-title">
3
+ <h4 class="panel-title">
4
4
  <%= link_to facet_field_label(facet_field.field), "#", :"data-no-turbolink" => true %>
5
- </h5>
5
+ </h4>
6
6
  </div>
7
7
  <div id="<%= facet_field_id(facet_field) %>" class="panel-collapse facet-content <%= should_collapse_facet?(facet_field) ? 'collapse' : 'in' %>">
8
8
  <div class="panel-body">
@@ -8,13 +8,11 @@
8
8
  <span class="fa fa-bars"></span>
9
9
  </button>
10
10
 
11
- <h4>
12
- <%= t("sufia.dashboard.my.facet_label.#{current_tab}") %>
13
- </h4>
14
- </div>
11
+ <h3><%= t("sufia.dashboard.my.facet_label.#{current_tab}") %></h3>
12
+ </div>
15
13
 
16
14
  <div id="facet-panel-collapse" class="collapse panel-group">
17
- <%= render_facet_partials %>
18
- </div>
15
+ <%= render_facet_partials %>
16
+ </div>
19
17
  </div>
20
18
  <% end %>
@@ -10,8 +10,8 @@
10
10
 
11
11
  <% @page_title = "#{current_tab.capitalize} listing" %>
12
12
 
13
- <ul class="nav nav-tabs" id="my_nav">
14
- <h1 class="sr-only">Listing Navigation Bar</h1>
13
+ <h1 class="sr-only">My Files, Collections, Highlights, and Files Shared with Me</h1>
14
+ <ul class="nav nav-tabs" id="my_nav" role="navigation">
15
15
  <span class="sr-only">You are currently listing your <%= current_tab.pluralize %> . You have <%= @response.docs.count %> <%= current_tab.pluralize(@response.docs.count)%> </span>
16
16
  <li class="<%= "active" if @selected_tab == :files %>">
17
17
  <%= link_to t('sufia.dashboard.my.files'), sufia.dashboard_files_path %>
@@ -29,10 +29,11 @@
29
29
 
30
30
  <%= render 'search_header' %>
31
31
 
32
- <h1 class="sr-only"><%=@page_title %></h1>
32
+ <h2 class="sr-only"><%=@page_title %></h2>
33
33
  <%= render partial: 'document_list' %>
34
34
 
35
35
  <% content_for :sidebar do %>
36
+ <span class="sr-only">Upload Files or Create Collection</span>
36
37
  <%= link_to t('sufia.dashboard.upload_html'), sufia.new_generic_file_path, class: "btn btn-primary" %>
37
38
  <%= link_to t('sufia.dashboard.create_collection_html'), collections.new_collection_path, id: "hydra-collection-add", class: "btn btn-primary" %>
38
39
  <%= render partial: 'facets', locals: {current_tab: current_tab} %>
@@ -7,25 +7,27 @@
7
7
  <%= f.file_field :avatar %>
8
8
  <%= f.hidden_field :avatar_cache %>
9
9
  <span class="help-block">JPG, GIF, or PNG (less than 2MB)</span>
10
+
11
+ <div class="checkbox">
12
+ <%= f.label :remove_avatar do %>
13
+ <%= f.check_box :remove_avatar %>
14
+ Delete picture
15
+ <a href="#" id="delete_picture_help" rel="popover" data-content="If you would like to remove your picture entirely, check the box and save your profile." data-original-title="Delete Picture"><i class="glyphicon glyphicon-question-sign"></i></a>
16
+ <% end %>
17
+ </div>
18
+ <div class="checkbox">
19
+ <%= f.label :update_directory do %>
20
+ <%= f.check_box :update_directory %>
21
+ Refresh directory info
22
+ <a href="#" id="refresh_directory_help" rel="popover" data-content="The information displayed in your profile comes from <%=t('sufia.institution_name') %>'s central directory (LDAP) and is cached by <%=t('sufia.product_name') %>. If you have updated that information and don't see those changes in your <%=t('sufia.product_name') %> profile, check the box and save your profile." data-original-title="Refresh Directory Info"><i class="glyphicon glyphicon-question-sign"></i></a>
23
+ <% end %>
24
+ </div>
10
25
  </div>
11
26
  </div><!-- .form-group -->
12
27
 
13
- <div class="col-xs-offset-4 col-xs-8">
14
- <div class="checkbox">
15
- <%= f.label :remove_avatar do %>
16
- <%= f.check_box :remove_avatar %>
17
- Delete picture
18
- <a href="#" id="delete_picture_help" rel="popover" data-content="If you would like to remove your picture entirely, check the box and save your profile." data-original-title="Delete Picture"><i class="glyphicon glyphicon-question-sign"></i></a>
19
- <% end %>
20
- </div>
21
- <div class="checkbox">
22
- <%= f.label :update_directory do %>
23
- <%= f.check_box :update_directory %>
24
- Refresh directory info
25
- <a href="#" id="refresh_directory_help" rel="popover" data-content="The information displayed in your profile comes from <%=t('sufia.institution_name') %>'s central directory (LDAP) and is cached by <%=t('sufia.product_name') %>. If you have updated that information and don't see those changes in your <%=t('sufia.product_name') %> profile, check the box and save your profile." data-original-title="Refresh Directory Info"><i class="glyphicon glyphicon-question-sign"></i></a>
26
- <% end %>
27
- </div>
28
- </div>
28
+ <% if Sufia.config.arkivo_api %>
29
+ <%= render partial: 'zotero', locals: { f: f, user: @user } %>
30
+ <% end %>
29
31
 
30
32
  <div class="form-group">
31
33
  <%= f.label :orcid, class: 'col-xs-4 control-label' do %>
@@ -65,4 +67,3 @@
65
67
  <div class="well">
66
68
  <%= render 'dashboard/_index_partials/proxy_rights' %>
67
69
  </div>
68
-
@@ -18,7 +18,11 @@
18
18
  <% end %>
19
19
  </ul>
20
20
  <% else %>
21
- <h3> <%= t("sufia.user_profile.no_followers") %></h3>
21
+ <% if current_user and @user.id == current_user.id %>
22
+ <h3> <%= t("sufia.user_profile.no_followers") %></h3>
23
+ <% else %>
24
+ <h3> <%= t("sufia.user_profile.no_followers_other") %></h3>
25
+ <% end %>
22
26
  <% end %>
23
27
  </div>
24
28
  <div class="modal-footer">
@@ -18,7 +18,11 @@
18
18
  <% end %>
19
19
  </ul>
20
20
  <% else %>
21
- <h3><%= t("sufia.user_profile.no_following") %></h3>
21
+ <% if current_user and @user.id == current_user.id %>
22
+ <h3> <%= t("sufia.user_profile.no_following") %></h3>
23
+ <% else %>
24
+ <h3> <%= t("sufia.user_profile.no_following_other") %></h3>
25
+ <% end %>
22
26
  <% end %>
23
27
  </div>
24
28
  <div class="modal-footer">
@@ -1,10 +1,15 @@
1
1
  <dl id="user_info" class="row">
2
2
 
3
3
  <% if user.orcid.present? %>
4
- <dt class="col-xs-5"><%= orcid_label('orcid') %></dt>
4
+ <dt class="col-xs-5"><%= orcid_label('profile') %></dt>
5
5
  <dd class="col-xs-7"><%= link_to user.orcid, user.orcid, { target: '_blank' } %></dd>
6
6
  <% end %>
7
7
 
8
+ <% if user.zotero_userid.present? %>
9
+ <dt class="col-xs-5"><%= zotero_label(html_class: 'profile') %></dt>
10
+ <dd class="col-xs-7"><%= link_to zotero_profile_url(user.zotero_userid), zotero_profile_url(user.zotero_userid), { target: '_blank' } %></dd>
11
+ <% end %>
12
+
8
13
  <% if user.facebook_handle.present? %>
9
14
  <dt class="col-xs-5"><i class="fa fa-facebook"></i> Facebook Handle</dt>
10
15
  <dd class="col-xs-7"><%= link_to user.facebook_handle, "http://facebook.com/#{user.facebook_handle}", {target:'_blank'} %></dd>
@@ -0,0 +1,12 @@
1
+ <div class="form-group">
2
+ <%= f.label :zotero, class: 'col-xs-4 control-label' do %>
3
+ <%= zotero_label %>
4
+ <% end %>
5
+ <div class="col-xs-8">
6
+ <% if user.zotero_userid.present? %>
7
+ <%= link_to t('sufia.user_profile.zotero.connected'), zotero_profile_url(user.zotero_userid), class: "form-control" %>
8
+ <% else %>
9
+ <%= link_to t('sufia.user_profile.zotero.unlinked'), sufia.api_zotero_initiate_path, id: "zotero", class: "btn btn-mini btn-primary" %>
10
+ <% end %>
11
+ </div>
12
+ </div><!-- .form-group -->