iqvoc 4.13.0 → 4.14.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -1
  3. data/Gemfile +13 -16
  4. data/Gemfile.lock +415 -326
  5. data/README.md +7 -6
  6. data/app/aides/inline_data_helper.rb +3 -3
  7. data/app/aides/skos_exporter.rb +1 -1
  8. data/app/assets/javascripts/framework.js +3 -3
  9. data/app/assets/javascripts/iqvoc/hover_menues.js +14 -0
  10. data/app/assets/javascripts/iqvoc/iqvoc.js +46 -61
  11. data/app/assets/javascripts/iqvoc/manifest.js +2 -1
  12. data/app/assets/javascripts/iqvoc/treeview.js +2 -1
  13. data/app/assets/stylesheets/iqvoc/_manifest.scss +1 -0
  14. data/app/assets/stylesheets/iqvoc/_search_results.scss +14 -0
  15. data/app/assets/stylesheets/iqvoc/components/_entity_select.scss +5 -8
  16. data/app/assets/stylesheets/iqvoc/components/_simplete.scss +2 -1
  17. data/app/assets/stylesheets/iqvoc/components/_treeview.scss +1 -0
  18. data/app/assets/stylesheets/iqvoc/hacks/_hacks.scss +1 -1
  19. data/app/controllers/collections/versions_controller.rb +13 -48
  20. data/app/controllers/collections_controller.rb +16 -9
  21. data/app/controllers/concepts/alphabetical_controller.rb +2 -2
  22. data/app/controllers/concepts/hierarchical_controller.rb +9 -13
  23. data/app/controllers/concepts/scheme_controller.rb +2 -1
  24. data/app/controllers/concepts/versions_controller.rb +14 -49
  25. data/app/controllers/concepts_controller.rb +28 -18
  26. data/app/controllers/concepts_movement_controller.rb +1 -1
  27. data/app/controllers/dashboard_controller.rb +5 -5
  28. data/app/controllers/hierarchy_controller.rb +1 -1
  29. data/app/controllers/imports_controller.rb +9 -6
  30. data/app/controllers/reverse_matches_controller.rb +2 -4
  31. data/app/controllers/search_results_controller.rb +16 -19
  32. data/app/controllers/triplestore_sync_controller.rb +2 -2
  33. data/app/controllers/users_controller.rb +1 -1
  34. data/app/helpers/application_helper.rb +6 -11
  35. data/app/helpers/concepts_helper.rb +3 -3
  36. data/app/helpers/link_helper.rb +10 -6
  37. data/app/helpers/navigation_helper.rb +24 -13
  38. data/app/helpers/rdf_helper.rb +9 -5
  39. data/app/jobs/reverse_match_job.rb +8 -4
  40. data/app/models/ability.rb +7 -7
  41. data/app/models/abstract_user.rb +1 -1
  42. data/app/models/collection/base.rb +17 -8
  43. data/app/models/concept/base.rb +25 -6
  44. data/app/models/concept/relation/base.rb +1 -1
  45. data/app/models/concept/relation/reverse_relation_extension.rb +9 -5
  46. data/app/models/concept/skos/base.rb +0 -10
  47. data/app/models/concept/validations.rb +6 -4
  48. data/app/models/concerns/search_extension.rb +0 -17
  49. data/app/models/concerns/versioning.rb +2 -32
  50. data/app/models/dataset/adaptors/iqvoc/alphabetical_search_adaptor.rb +2 -2
  51. data/app/models/dataset/adaptors/iqvoc/http_adaptor.rb +3 -3
  52. data/app/models/dataset/adaptors/iqvoc/label_adaptor.rb +1 -1
  53. data/app/models/dataset/adaptors/iqvoc/search_adaptor.rb +3 -3
  54. data/app/models/export.rb +1 -1
  55. data/app/models/label/base.rb +5 -5
  56. data/app/models/labeling/skos/base.rb +14 -10
  57. data/app/models/note/base.rb +1 -1
  58. data/app/models/user.rb +2 -0
  59. data/app/models/user_session.rb +0 -3
  60. data/app/services/rdf_sync_service.rb +3 -3
  61. data/app/uploaders/rdf_uploader.rb +1 -1
  62. data/app/views/collections/_data.html.erb +2 -2
  63. data/app/views/collections/show_unpublished.html.erb +3 -11
  64. data/app/views/concepts/alphabetical/_search_result.html.erb +3 -1
  65. data/app/views/concepts/hierarchical/_treeview.html.erb +4 -1
  66. data/app/views/concepts/notifications/_referenced_concepts.html.erb +0 -1
  67. data/app/views/concepts/scheme/show.html.erb +1 -3
  68. data/app/views/concepts/show_published.html.erb +2 -0
  69. data/app/views/concepts/show_unpublished.html.erb +5 -11
  70. data/app/views/dashboard/_table.html.erb +0 -8
  71. data/app/views/errors/server_error.html.erb +1 -2
  72. data/app/views/pages/version.html.erb +1 -1
  73. data/app/views/partials/collection/_member.html.erb +1 -1
  74. data/app/views/partials/concept/_edit_link_base.html.erb +2 -2
  75. data/app/views/partials/concept/relation/_base.html.erb +4 -4
  76. data/app/views/partials/concept/relation/_edit_base.html.erb +13 -10
  77. data/app/views/partials/concept/relation/skos/_narrower.html.erb +1 -1
  78. data/app/views/partials/concept/relation/skos/broader/_mono.html.erb +2 -2
  79. data/app/views/partials/concept/relation/skos/broader/_poly.html.erb +2 -2
  80. data/app/views/partials/labeling/skos/_base.html.erb +1 -1
  81. data/app/views/partials/labeling/skos/_edit_base.html.erb +2 -1
  82. data/app/views/partials/labeling/skos/_search_result.html.erb +3 -0
  83. data/app/views/partials/match/_panel.html.erb +2 -2
  84. data/app/views/partials/notation/_base.html.erb +1 -1
  85. data/app/views/search_results/_detailed_search.html.erb +27 -0
  86. data/app/views/search_results/_form.html.erb +21 -9
  87. data/app/views/search_results/index.html.erb +4 -4
  88. data/app/views/search_results/sections/_change_note.html.erb +28 -25
  89. data/app/views/search_results/sections/_collection.html.erb +5 -5
  90. data/app/views/search_results/sections/_datasets.html.erb +8 -20
  91. data/app/views/search_results/sections/_klass.html.erb +7 -9
  92. data/app/views/search_results/sections/_languages.html.erb +4 -14
  93. data/app/views/search_results/sections/_mode.html.erb +8 -10
  94. data/app/views/search_results/sections/_options.html.erb +8 -0
  95. data/app/views/search_results/sections/_terms.html.erb +13 -10
  96. data/app/views/search_results/sections/_type.html.erb +13 -13
  97. data/config/application.rb +15 -10
  98. data/config/boot.rb +3 -3
  99. data/config/cable.yml +1 -1
  100. data/config/database.yml +17 -16
  101. data/config/database.yml.postgresql +1 -1
  102. data/config/engine.rb +1 -1
  103. data/config/environment.rb +1 -1
  104. data/config/initializers/active_record.rb +2 -0
  105. data/config/initializers/backtrace_silencers.rb +4 -3
  106. data/config/initializers/content_security_policy.rb +21 -21
  107. data/config/initializers/filter_parameter_logging.rb +6 -2
  108. data/config/initializers/inflections.rb +4 -4
  109. data/config/initializers/iqvoc.rb +1 -0
  110. data/config/initializers/permissions_policy.rb +11 -0
  111. data/config/initializers/wrap_parameters.rb +3 -3
  112. data/config/initializers/zeitwerk.rb +6 -0
  113. data/config/locales/activerecord.de.yml +2 -2
  114. data/config/locales/de.yml +18 -19
  115. data/config/locales/en.yml +16 -17
  116. data/config/locales/pt.yml +0 -7
  117. data/config/puma.rb +10 -4
  118. data/config/routes.rb +0 -4
  119. data/db/migrate/20220107114201_add_fk_constraint_to_active_storage_attachments_for_blob_id.active_storage.rb +10 -0
  120. data/db/migrate/20231012135837_remove_locked_by.rb +6 -0
  121. data/db/schema.rb +36 -39
  122. data/iqvoc.gemspec +14 -13
  123. data/lib/iqvoc/configuration/concept.rb +2 -0
  124. data/lib/iqvoc/configuration/core.rb +13 -2
  125. data/lib/iqvoc/configuration/instance_configuration.rb +3 -3
  126. data/lib/iqvoc/environments/development.rb +23 -9
  127. data/lib/iqvoc/environments/production.rb +21 -19
  128. data/lib/iqvoc/environments/test.rb +15 -8
  129. data/lib/iqvoc/version.rb +1 -1
  130. data/lib/tasks/sync.rake +1 -1
  131. data/test/authentication.rb +1 -1
  132. data/test/controllers/concepts_movement_controller_test.rb +0 -2
  133. data/test/controllers/hierarchy_test.rb +4 -4
  134. data/test/controllers/reverse_match_test.rb +1 -1
  135. data/test/integration/client_edit_concept_test.rb +1 -1
  136. data/test/integration/collection_browsing_test.rb +45 -0
  137. data/test/integration/collection_circularity_test.rb +3 -3
  138. data/test/integration/concept_collection_assignment_test.rb +7 -7
  139. data/test/integration/create_concept_test.rb +15 -0
  140. data/test/integration/reverse_match_job_test.rb +39 -7
  141. data/test/integration/search_test.rb +12 -12
  142. data/test/integration/version_page_test.rb +26 -0
  143. data/test/integration_test_helper.rb +2 -2
  144. data/test/models/concept_test.rb +37 -0
  145. data/test/models/deep_cloning_test.rb +9 -7
  146. data/test/models/rdf_sync_test.rb +3 -3
  147. data/test/models/zeitwerk_compliance_test.rb +7 -0
  148. data/test/test_helper.rb +3 -0
  149. metadata +69 -222
  150. data/app/views/search_results/sections/_note.html.erb +0 -6
  151. data/config/initializers/new_framework_defaults_5_1.rb +0 -14
  152. data/config/initializers/sqlite3_booleans.rb +0 -1
  153. data/public/422.html +0 -58
  154. data/public/assets/fonts/FiraMono-Regular-0b6138c5b386dc9125473fd851926f29.ttf +0 -0
  155. data/public/assets/fonts/FiraMono-Regular-690950e8d89c92cba41eeeb13f1de93e.woff +0 -0
  156. data/public/assets/fonts/FiraMono-Regular-98f97ed2dbf9d94d4fa5df048434b88d.eot +0 -0
  157. data/public/assets/fonts/FiraMono-Regular.eot +0 -0
  158. data/public/assets/fonts/FiraMono-Regular.ttf +0 -0
  159. data/public/assets/fonts/FiraMono-Regular.woff +0 -0
  160. data/public/assets/fonts/FiraSans-Bold-0de5f536bd0dc370449c0c67a49a6fe7.eot +0 -0
  161. data/public/assets/fonts/FiraSans-Bold-25037ef8d155e38b5df0c242a4c6cf2d.ttf +0 -0
  162. data/public/assets/fonts/FiraSans-Bold-494219a9639084eb9528ff47f79fcda1.woff +0 -0
  163. data/public/assets/fonts/FiraSans-Bold.eot +0 -0
  164. data/public/assets/fonts/FiraSans-Bold.ttf +0 -0
  165. data/public/assets/fonts/FiraSans-Bold.woff +0 -0
  166. data/public/assets/fonts/FiraSans-BoldItalic-5b3b812df9e1cb2b1f34baad65a2bdfb.ttf +0 -0
  167. data/public/assets/fonts/FiraSans-BoldItalic-90b8087c48feff2e828f658c49de5399.eot +0 -0
  168. data/public/assets/fonts/FiraSans-BoldItalic-b10e46158d50bf9b78968112acf87310.woff +0 -0
  169. data/public/assets/fonts/FiraSans-BoldItalic.eot +0 -0
  170. data/public/assets/fonts/FiraSans-BoldItalic.ttf +0 -0
  171. data/public/assets/fonts/FiraSans-BoldItalic.woff +0 -0
  172. data/public/assets/fonts/FiraSans-Book-659d252627051e785260ba445da8930f.woff +0 -0
  173. data/public/assets/fonts/FiraSans-Book-abc65ceb7bfaed729bff7a9d1367b7d4.eot +0 -0
  174. data/public/assets/fonts/FiraSans-Book-f0410501d5ecc5fe66bcdbc02b482c81.ttf +0 -0
  175. data/public/assets/fonts/FiraSans-Book.eot +0 -0
  176. data/public/assets/fonts/FiraSans-Book.ttf +0 -0
  177. data/public/assets/fonts/FiraSans-Book.woff +0 -0
  178. data/public/assets/fonts/FiraSans-ExtraLight-140f15ee97cb2099ff01c2b57dcd1a24.woff +0 -0
  179. data/public/assets/fonts/FiraSans-ExtraLight-28e5c2679df66406ebd117fbdded6753.eot +0 -0
  180. data/public/assets/fonts/FiraSans-ExtraLight-c15de70ebceffce178cbd2e82aa2c373.ttf +0 -0
  181. data/public/assets/fonts/FiraSans-ExtraLight.eot +0 -0
  182. data/public/assets/fonts/FiraSans-ExtraLight.ttf +0 -0
  183. data/public/assets/fonts/FiraSans-ExtraLight.woff +0 -0
  184. data/public/assets/fonts/FiraSans-Italic-ac4cb18fe14a7c90f29cdd2ce499ba59.woff +0 -0
  185. data/public/assets/fonts/FiraSans-Italic-bdea00fee0da5ca9176061e00c26a0da.eot +0 -0
  186. data/public/assets/fonts/FiraSans-Italic-e7e76a0ee170fd29b5d8100753eff569.ttf +0 -0
  187. data/public/assets/fonts/FiraSans-Italic.eot +0 -0
  188. data/public/assets/fonts/FiraSans-Italic.ttf +0 -0
  189. data/public/assets/fonts/FiraSans-Italic.woff +0 -0
  190. data/public/assets/fonts/FiraSans-Light-20adaf630b690c3e3184daaeae585f22.woff +0 -0
  191. data/public/assets/fonts/FiraSans-Light-3689e18b38d335ec0c43823adb6a2984.eot +0 -0
  192. data/public/assets/fonts/FiraSans-Light-55b04531e7a9ecdf58090d70b94b68e2.ttf +0 -0
  193. data/public/assets/fonts/FiraSans-Light-SC-098407a72b7ad46f7c2480d7ac11baf2.eot +0 -0
  194. data/public/assets/fonts/FiraSans-Light-SC-82763fe2ce9e6b897556c6f3c2aceb29.woff2 +0 -0
  195. data/public/assets/fonts/FiraSans-Light-SC-c73985985f0501c1845a5185b180fe6b.woff +0 -0
  196. data/public/assets/fonts/FiraSans-Light-SC-c9563f48d9cccd91f07e46801c27130f.ttf +0 -0
  197. data/public/assets/fonts/FiraSans-Light-SC.eot +0 -0
  198. data/public/assets/fonts/FiraSans-Light-SC.ttf +0 -0
  199. data/public/assets/fonts/FiraSans-Light-SC.woff +0 -0
  200. data/public/assets/fonts/FiraSans-Light-SC.woff2 +0 -0
  201. data/public/assets/fonts/FiraSans-Light.eot +0 -0
  202. data/public/assets/fonts/FiraSans-Light.ttf +0 -0
  203. data/public/assets/fonts/FiraSans-Light.woff +0 -0
  204. data/public/assets/fonts/FiraSans-Medium-082fab59048189168006bf2e914ba8b7.woff +0 -0
  205. data/public/assets/fonts/FiraSans-Medium-11706edfe8651c355b413bd24b4b5e10.eot +0 -0
  206. data/public/assets/fonts/FiraSans-Medium-3a0dacdeaba1b4c054f2d6cb5061965d.ttf +0 -0
  207. data/public/assets/fonts/FiraSans-Medium.eot +0 -0
  208. data/public/assets/fonts/FiraSans-Medium.ttf +0 -0
  209. data/public/assets/fonts/FiraSans-Medium.woff +0 -0
  210. data/public/assets/fonts/FiraSans-MediumItalic-6c8a2646d72641226527d574a8485b66.woff +0 -0
  211. data/public/assets/fonts/FiraSans-MediumItalic-b81e92794a6878b6c578d97b3ad5e6d7.ttf +0 -0
  212. data/public/assets/fonts/FiraSans-MediumItalic-eae7f4a3c4db9fe83025909ebfae5ad9.eot +0 -0
  213. data/public/assets/fonts/FiraSans-MediumItalic.eot +0 -0
  214. data/public/assets/fonts/FiraSans-MediumItalic.ttf +0 -0
  215. data/public/assets/fonts/FiraSans-MediumItalic.woff +0 -0
  216. data/public/assets/fonts/FiraSans-Regular-537188a19aeebdd74a92e114af7a02cb.ttf +0 -0
  217. data/public/assets/fonts/FiraSans-Regular-5d6a923de9be80ff5c2995cc03d93127.woff +0 -0
  218. data/public/assets/fonts/FiraSans-Regular-db689e5fea21ed4b7890811151968dc6.eot +0 -0
  219. data/public/assets/fonts/FiraSans-Regular.eot +0 -0
  220. data/public/assets/fonts/FiraSans-Regular.ttf +0 -0
  221. data/public/assets/fonts/FiraSans-Regular.woff +0 -0
  222. data/public/assets/fonts/FiraSans-UltraLight-3baefce4c224a0f0b26cdafe37dfa55d.eot +0 -0
  223. data/public/assets/fonts/FiraSans-UltraLight-e3909a352b87f853bb464836adfd602a.ttf +0 -0
  224. data/public/assets/fonts/FiraSans-UltraLight-f7289beeaa2353caf487553ee8b8ef03.woff +0 -0
  225. data/public/assets/fonts/FiraSans-UltraLight.eot +0 -0
  226. data/public/assets/fonts/FiraSans-UltraLight.ttf +0 -0
  227. data/public/assets/fonts/FiraSans-UltraLight.woff +0 -0
  228. data/public/assets/fonts/FontAwesome.otf +0 -0
  229. data/public/assets/fonts/fontawesome-webfont.eot +0 -0
  230. data/public/assets/fonts/fontawesome-webfont.svg +0 -2671
  231. data/public/assets/fonts/fontawesome-webfont.ttf +0 -0
  232. data/public/assets/fonts/fontawesome-webfont.woff +0 -0
  233. data/public/assets/fonts/fontawesome-webfont.woff2 +0 -0
  234. data/public/assets/images/ajax-loader-30d8e72bfdae694b1938658e1b087df0.gif +0 -0
  235. data/public/assets/images/ajax-loader.gif +0 -0
  236. data/public/assets/images/iqvoc_logo-165f17a46cf0a1bf9464db9d136fb843.svg +0 -41
  237. data/public/assets/images/iqvoc_logo.svg +0 -41
  238. data/public/assets/images/treeview-default-line-5e3c0e0c48f48c23c45aef7b72c739c0.gif +0 -0
  239. data/public/assets/images/treeview-default-line.gif +0 -0
  240. data/public/assets/javascripts/bootstrap.bundle.min-68b3c2f1c1f636f947fff1229d3ffbf5.js +0 -7
  241. data/public/assets/javascripts/bootstrap.bundle.min.js +0 -42
  242. data/public/assets/javascripts/jquery-17e41799d7fba03a313ca6b67d8a0954.js +0 -26
  243. data/public/assets/javascripts/jquery-d52dc3a9171f1fc89dd0f8e35e42c9d2.js +0 -26
  244. data/public/assets/javascripts/jquery.js +0 -10875
  245. data/public/assets/javascripts/manifest-7708201f7c24d5186cd075c3317f9b70.js +0 -7311
  246. data/public/assets/javascripts/manifest-89894d9f630fa57378a0c28e2a3d9ea9.js +0 -7325
  247. data/public/assets/javascripts/manifest.js +0 -5660
  248. data/public/assets/manifest.json +0 -1
  249. data/public/assets/stylesheets/manifest-893c7de3dee9ed1295bc1b5b4c1f0c34.css +0 -13
  250. data/public/assets/stylesheets/manifest-94b7be92a9b1cfeafea4ea71af910324.css +0 -13
  251. data/public/assets/stylesheets/manifest-e576edf92efaaad86b15b565fa473d0b.css +0 -7
  252. data/public/assets/stylesheets/manifest.css +0 -14314
  253. data/public/export/12750.nt +0 -28
  254. data/public/export/17385303752427181100115432751692126521.nt +0 -28
  255. data/public/export/181196830007276319343907883650755121680.nt +0 -28
  256. data/public/export/194669028845730209313058462140064732442.nt +0 -28
  257. data/public/export/21988.nt +0 -28
  258. data/public/export/230655012044692637365356891394989635995.nt +0 -28
  259. data/public/export/233590502327750705645106563554497694497.nt +0 -28
  260. data/public/export/245884359537367641918690456207690070316.nt +0 -28
  261. data/public/export/250386066048669747259363837063223215204.nt +0 -28
  262. data/public/export/256041066575224861739818511470898486442.nt +0 -28
  263. data/public/export/287138383024694264939471429022965897163.nt +0 -28
  264. data/public/export/31892.nt +0 -28
  265. data/public/export/333774437366008328346740356666975078086.nt +0 -28
  266. data/public/export/34639390376251419382098415225771775708.nt +0 -28
  267. data/public/export/4098.nt +0 -28
  268. data/public/export/47070.nt +0 -28
  269. data/public/export/49947.nt +0 -28
  270. data/public/export/5793.nt +0 -28
  271. data/public/export/64089124325772410079516909502763866955.nt +0 -28
  272. data/public/export/64718.nt +0 -28
  273. data/public/export/71200590939430584664474292378126383577.nt +0 -28
  274. data/public/export/81965533953024918329855744567916239964.nt +0 -28
  275. data/public/favicon.ico +0 -0
  276. data/public/robots.txt +0 -5
  277. data/public/uploads/import/213b73161661ebbad4e5ee3f543ae617.nt +0 -259
  278. data/public/uploads/import/22ad4d7419b7914c7319c46a66839f77.nt +0 -259
  279. data/public/uploads/import/22b78e01b9b5876851578cf9a8373c07.nt +0 -259
  280. data/public/uploads/import/2ab75781f8141010699dd272f681b245.nt +0 -259
  281. data/public/uploads/import/4c7fe47a2c21a681fd8f0eb3af0ebf19.nt +0 -259
  282. data/public/uploads/import/5265d7cb194f017c592a68914ecf8d9f.nt +0 -259
  283. data/public/uploads/import/5cb5414a66e4ae5dbe05eb763c367bd1.nt +0 -259
  284. data/public/uploads/import/6b042e00c2e2abf9241d2ece3e67ed27.nt +0 -259
  285. data/public/uploads/import/749edd3918db157202b00f89418b87d1.nt +0 -259
  286. data/public/uploads/import/7aeb9d76b78ba67674caa53a96e1caa0.nt +0 -259
  287. data/public/uploads/import/7b7fc425b8926e586ca10d0f1385aa4e.nt +0 -259
  288. data/public/uploads/import/8319d34702375718b20e72a6af71c503.nt +0 -259
  289. data/public/uploads/import/9ec48f5aaece8d2a8770439e34199b19.nt +0 -259
  290. data/public/uploads/import/a22750632c35587057285920142c2db8.nt +0 -259
  291. data/public/uploads/import/a6d9eeb5e76ce0032614c8142a33c90b.nt +0 -259
  292. data/public/uploads/import/a7ec826e32e80d1fc61f5e89f7442199.nt +0 -259
  293. data/public/uploads/import/af2ac8cb84a194da9871ea701f915a25.nt +0 -259
  294. data/public/uploads/import/b50c67ef8cb51fa12812ac2601faaa75.nt +0 -259
  295. data/public/uploads/import/b66560ac9cc4aecd50f82d4fcec8bde4.nt +0 -259
  296. data/public/uploads/import/c1a12245a41d9105585fb48a0b5244ab.nt +0 -259
  297. data/public/uploads/import/c4b23750b9f72a7f93bcd979a9afded3.nt +0 -259
  298. data/public/uploads/import/d1edac76626a35a6e72a592c98e97b1a.nt +0 -259
  299. data/public/uploads/import/eca92dbeff4aec30e3072103bb5f565f.nt +0 -259
  300. data/public/uploads/import/f7996f8826062cd8dcfc8fac70e830b9.nt +0 -259
  301. data/public/uploads/tmp/1609926599-187261935008931-0002-5418/hobbies.nt +0 -259
  302. data/public/uploads/tmp/1610450700-516890595554445-0002-2685/hobbies.nt +0 -259
  303. data/public/uploads/tmp/1610450844-597126333235543-0001-0714/hobbies.nt +0 -259
  304. data/public/uploads/tmp/1611054155-443031323634581-0001-9192/hobbies.nt +0 -259
  305. data/public/uploads/tmp/1611225485-767301590714814-0002-6904/hobbies.nt +0 -259
  306. data/public/uploads/tmp/1611225661-919900076415463-0002-0657/hobbies.nt +0 -259
  307. data/public/uploads/tmp/1611227389-36557097935032-0002-4613/hobbies.nt +0 -259
  308. data/public/uploads/tmp/1611585376-822293462114758-0001-9752/hobbies.nt +0 -259
  309. data/public/uploads/tmp/1611585431-703460698560673-0002-7522/hobbies.nt +0 -259
  310. data/public/uploads/tmp/1611586554-483369300394995-0002-0872/hobbies.nt +0 -259
  311. data/public/uploads/tmp/1619777137-609890333749067-0002-0264/hobbies.nt +0 -259
  312. data/public/uploads/tmp/1627291050-163284787457980-0001-2701/hobbies.nt +0 -259
  313. data/public/uploads/tmp/1627291589-952446089963663-0002-3171/hobbies.nt +0 -259
  314. data/public/uploads/tmp/1627291819-788250283200541-0002-2503/hobbies.nt +0 -259
  315. data/public/uploads/tmp/1627292534-103362378955855-0001-7089/hobbies.nt +0 -259
  316. data/public/uploads/tmp/1627293799-506613299368066-0002-1247/hobbies.nt +0 -259
  317. data/public/uploads/tmp/1627293863-868842521367397-0001-4656/hobbies.nt +0 -259
  318. data/public/uploads/tmp/1636993960-338364327912413-0002-8049/hobbies.nt +0 -259
  319. data/public/uploads/tmp/1641550181-434480636271400-0002-7928/hobbies.nt +0 -259
  320. data/public/uploads/tmp/1641550416-6444469569098-0002-2156/hobbies.nt +0 -259
  321. data/public/uploads/tmp/1641550691-848542458162760-0002-6815/hobbies.nt +0 -259
  322. data/public/uploads/tmp/1641550716-647719127292471-0002-9954/hobbies.nt +0 -259
  323. data/public/uploads/tmp/1641551058-78248622355227-0002-3663/hobbies.nt +0 -259
  324. data/public/uploads/tmp/1641551220-744894908610606-0001-3879/hobbies.nt +0 -259
@@ -2,7 +2,6 @@
2
2
  <thead>
3
3
  <tr>
4
4
  <th><%= t("txt.views.dashboard.value") %><%= sorting_controls_for(:value) %></th>
5
- <th><%= t("txt.views.dashboard.locking_user") %><%= sorting_controls_for(:locking_user) %></th>
6
5
  <% unless @items.first.class == Iqvoc::Collection.base_class %>
7
6
  <th><%= t("txt.views.dashboard.follow_up") %><%= sorting_controls_for(:follow_up) %></th>
8
7
  <% end %>
@@ -22,13 +21,6 @@
22
21
  <%= render item.class.edit_link_partial_name, :item => item %>
23
22
  <a href="<%= dashboard_glance_path(type: item.class, origin: item.origin, published: item.published? ? 1 : 0) %>" class="dashboard-glance-link"><i class="fa fa-search-plus"></i></a>
24
23
  </td>
25
- <td>
26
- <% if item.locking_user.present? %>
27
- <span class="badge badge-info" data-toggle="tooltip" data-placement="top" title="<%= item.locking_user.name %>">
28
- <%= item.locking_user.initials %>
29
- </span>
30
- <% end %>
31
- </td>
32
24
  <% unless item.class == Iqvoc::Collection.base_class %>
33
25
  <td class="<%= 'dashboard-activated-follow-up-column' if item.follow_up.present? %>">
34
26
  <%= l(item.follow_up) if item.follow_up.present? %>
@@ -18,8 +18,7 @@
18
18
 
19
19
  </div>
20
20
 
21
- <% if can? :see, :exception %>
22
- <%# only show error details for known, persisted users %>
21
+ <% if can?(:see, :exception) || Rails.env.development? %>
23
22
  <div class="card">
24
23
  <h5 class="card-header">
25
24
  <%= t("txt.views.errors.common.error_message") %>
@@ -6,7 +6,7 @@
6
6
  <dd class="col-md-10"><%= "#{Iqvoc.host_namespace} #{Iqvoc.host_version}" %></dd>
7
7
  <% end %>
8
8
 
9
- <% if File.exists?(Rails.root.join('headrev.txt')) %>
9
+ <% if File.exist?(Rails.root.join('headrev.txt')) %>
10
10
  <dt class="col-md-2">Revision</dt>
11
11
  <dd class="col-md-10"><%= File.read(Rails.root.join('headrev.txt')) %></dd>
12
12
  <% end %>
@@ -1,4 +1,4 @@
1
- <div class="relation panel" id="assigned_collections">
1
+ <div class="relation panel" id="<%= klass.name.to_relation_name %>">
2
2
  <h2><%= klass.model_name.human(:count => 2) %></h2>
3
3
  <div class="relation-body">
4
4
  <%- if concept.collections.any? -%>
@@ -1,5 +1,5 @@
1
- <% label = item.pref_label.to_s.presence || ":#{item.origin} [#{t("txt.common.translation_missing_for")} #{[I18n.locale.to_s, Iqvoc::Concept.pref_labeling_languages.first.to_s].uniq.join(", ")}]" %>
1
+ <% label = item.pref_label.to_s.presence || ":#{item.origin}" %>
2
2
  <%= link_to truncate(label, :length => 45), (item.published? ? concept_path(:id => item.origin) : concept_path(:published => 0, :id => item.origin)) %>
3
- <%- if (item.additional_info) -%>
3
+ <%- if item.additional_info -%>
4
4
  (<%= item.additional_info %>)
5
5
  <%- end -%>
@@ -1,12 +1,12 @@
1
1
  <div class="relation panel" id="<%= klass.model_name.to_s.to_relation_name %>">
2
2
  <h2><%= klass.model_name.human(:count => 2) %></h2>
3
3
  <div class="relation-body">
4
- <%-
4
+ <%
5
5
  items = concept.related_concepts_for_relation_class(klass, params[:published] != "0")
6
6
  items = items.select { |item| can?(:read, item) }
7
7
  -%>
8
- <%= item_listing(items) do |c|
9
- link_to(c.pref_label, concept_path(:id => c))
10
- end %>
8
+ <%= item_listing(items) do |concept| %>
9
+ <%= render(concept.class.inline_partial_name, concept: concept) %>
10
+ <% end %>
11
11
  </div>
12
12
  </div>
@@ -1,13 +1,16 @@
1
1
  <%- fieldname = "concept[concept_relations_by_id][#{klass.name.to_relation_name}]" -%>
2
- <%= f.form_group nil, :label => { :text => klass.model_name.human(:count => klass.singular? ? 1 : 2) } do %>
2
+ <%= f.form_group nil, label: { text: klass.model_name.human(count: klass.singular? ? 1 : 2) } do %>
3
3
  <%= text_field_tag fieldname, widget_values(concept, klass),
4
- :id => klass.name.to_relation_name,
5
- :class => "entity_select",
6
- :"data-query-url" => concepts_path(:format => :json,
7
- :exclude_top_terms => klass != Iqvoc::Concept.broader_relation_class || nil),
8
- :"data-entity-uri" => concept_path("{id}"),
9
- :"data-singular" => klass.singular? || nil,
10
- :"data-entities" => widget_entities(concept, klass),
11
- :'data-no-results-msg' => t('txt.views.search_results.no_results')
12
- %>
4
+ id: klass.name.to_relation_name,
5
+ class: "entity_select",
6
+ "data-query-url": concepts_path(
7
+ format: :json,
8
+ exclude_top_terms: klass != Iqvoc::Concept.broader_relation_class || nil,
9
+ language: params[:lang]
10
+ ),
11
+ "data-entity-uri": concept_path("{id}"),
12
+ "data-singular": klass.singular? || nil,
13
+ "data-entities": widget_entities(concept, klass),
14
+ 'data-no-results-msg': t('txt.views.search_results.no_results')
15
+ %>
13
16
  <% end %>
@@ -1,4 +1,4 @@
1
- <div class="relation panel">
1
+ <div class="relation panel" id="<%= Iqvoc::Concept.broader_relation_class.narrower_class.name.to_relation_name %>">
2
2
  <h2><%= Iqvoc::Concept.broader_relation_class.narrower_class.model_name.human(:count => 2) %></h2>
3
3
  <div class="relation-body">
4
4
  <% if concept.narrower_relations.any? %>
@@ -1,8 +1,8 @@
1
- <div class="relation <%= Iqvoc::Concept.broader_relation_class.name.to_relation_name %> panel">
1
+ <div class="relation panel" id="<%= Iqvoc::Concept.broader_relation_class.name.to_relation_name %>">
2
2
  <h2><%= Iqvoc::Concept.broader_relation_class.model_name.human(:count => 2) %></h2>
3
3
  <div class="relation-body">
4
4
  <% if concept.top_term? %>
5
- <strong><%= concept.class.human_attribute_name("top_term") %></strong>
5
+ <%= concept.class.human_attribute_name("top_term") %>
6
6
  <% end %>
7
7
 
8
8
  <%-
@@ -1,8 +1,8 @@
1
- <div class="relation panel">
1
+ <div class="relation panel" id="<%= Iqvoc::Concept.broader_relation_class.name.to_relation_name %>">
2
2
  <h2><%= Iqvoc::Concept.broader_relation_class.model_name.human(:count => 2) %></h2>
3
3
  <div class="relation-body block">
4
4
  <% if concept.top_term? %>
5
- <strong><%= concept.class.human_attribute_name("top_term") %></strong>
5
+ <%= concept.class.human_attribute_name("top_term") %>
6
6
  <% end %>
7
7
 
8
8
  <% if concept.related_concepts_for_relation_class(
@@ -1,4 +1,4 @@
1
- <%= content_tag :div, :class => "relation translation panel" do %>
1
+ <%= content_tag :div, class: "relation translation panel", id: klass.name.to_relation_name do %>
2
2
  <% if defined?(concept) %>
3
3
  <h2><%= klass.model_name.human(:count => 2) %></h2>
4
4
  <div class="relation-body">
@@ -4,7 +4,8 @@
4
4
  <div class="input-group-prepend">
5
5
  <span class="input-group-text"><%= language %></span>
6
6
  </div>
7
- <%= text_field_tag "concept[labelings_by_text][#{klass.name.to_relation_name}][#{language}]", concept.labelings_by_text(klass.name.to_relation_name, language), :class => 'form-control' %>
7
+ <%= text_field_tag "concept[labelings_by_text][#{klass.name.to_relation_name}][#{language}]", concept.labelings_by_text(klass.name.to_relation_name, language),
8
+ class: 'form-control', autocomplete: 'off' %>
8
9
  </div>
9
10
  <% end %>
10
11
  <% end %>
@@ -4,6 +4,9 @@
4
4
  <% if owner.additional_info.present? %>
5
5
  <span class="additional_info">(<%= owner.additional_info %>)</span>
6
6
  <% end %>
7
+ <% if owner.expired? %>
8
+ <span class="badge badge-info"><%= t('txt.views.concepts.expired_at', date: l(owner.expired_at, format: :long)) %></span>
9
+ <% end %>
7
10
  <dl class="search-result-meta">
8
11
  <dt class="search-result-key"><%= t('txt.views.search_results.type') %></dt>
9
12
  <dd class="search-result-value" data-key="<%= t('txt.views.search_results.type') %>"><%= result.model_name.human %></dd>
@@ -1,5 +1,5 @@
1
- <div class="relation panel">
2
- <h2 class=""><%= t('txt.views.layouts.sections.matches') %></h2>
1
+ <div class="relation panel" id="<%= klass.model_name.to_s.to_relation_name %>">
2
+ <h2><%= klass.model_name.human(:count => 2) %></h2>
3
3
  <div class="panel-body match">
4
4
  <%= body.html_safe %>
5
5
  </div>
@@ -1,4 +1,4 @@
1
- <div class="relation panel">
1
+ <div class="relation panel" id="<%= klass.model_name.to_s.to_relation_name %>">
2
2
  <h2><%= klass.model_name.human(:count => 2) %></h2>
3
3
  <div class="relation-body">
4
4
  <%= item_listing(concept.notations_for_class(klass)) do |notation|
@@ -0,0 +1,27 @@
1
+ <div class="row">
2
+ <div class="col-md-6">
3
+ <%= render "search_results/sections/mode" %>
4
+ </div>
5
+ <div class="col-md-6">
6
+ <%= render "search_results/sections/klass" %>
7
+ </div>
8
+ </div>
9
+ <div class="row">
10
+ <div class="col-md-6">
11
+ <%= render "search_results/sections/type" %>
12
+ </div>
13
+ <div class="col-md-6">
14
+ <%= render "search_results/sections/collection" %>
15
+ </div>
16
+ </div>
17
+ <div class="row">
18
+ <%= render "search_results/sections/change_note" %>
19
+ </div>
20
+ <div class="row">
21
+ <div class="col-md-6">
22
+ <%= render "search_results/sections/datasets" %>
23
+ </div>
24
+ <div class="col-md-6">
25
+ <%= render "search_results/sections/options" %>
26
+ </div>
27
+ </div>
@@ -1,10 +1,22 @@
1
- <%= form_tag(search_path, method: :get, id:'search', role: 'form', class: 'mb-4') do |f| %>
2
- <% Iqvoc.search_sections.each do |section| %>
3
- <%= render "search_results/sections/#{section}" %>
4
- <% end %>
5
-
6
- <hr />
7
-
8
- <%= submit_tag t('txt.views.search_results.submit'), :class => 'btn btn-primary' %>
9
-
1
+ <%= form_tag(search_path, method: :get, id: 'search', role: 'form', class: 'mt-3 mb-4') do |f| %>
2
+ <div class="row">
3
+ <div class="col">
4
+ <%= render "search_results/sections/terms" %>
5
+ </div>
6
+ </div>
7
+ <div class="row justify-content-between">
8
+ <div class="col">
9
+ <%= render "search_results/sections/languages" %>
10
+ </div>
11
+ <div class="col-auto">
12
+ <button class="btn btn-outline-secondary collapse-toggle" data-toggle="collapse" data-target="#detailedSearch" type="button" aria-expanded="false" aria-controls="detailedSearch">
13
+ <span class="mr-2"><%= t('txt.views.search_results.detailed_search') %></span>
14
+ <i class="hide-if-expanded fa fa-chevron-down"></i>
15
+ <i class="hide-if-collapsed fa fa-chevron-up"></i>
16
+ </button>
17
+ </div>
18
+ </div>
19
+ <div id="detailedSearch" class="collapse <%= current_user ? 'show' : ''%>">
20
+ <%= render 'detailed_search' %>
21
+ </div>
10
22
  <% end %>
@@ -4,9 +4,9 @@
4
4
  <%= render 'form' %>
5
5
 
6
6
  <% if @results %>
7
- <div class="panel">
8
- <%= results_header @results %>
7
+ <div class="panel">
8
+ <%= results_header @results %>
9
9
  <%= render 'result_list' %>
10
- <%= paginate @results %>
11
- </div>
10
+ <%= paginate @results %>
11
+ </div>
12
12
  <% end %>
@@ -1,28 +1,31 @@
1
- <div class="form-group row">
2
- <label class="col-sm-2 col-form-label">
3
- <%= t('txt.views.search_results.change_note.date') %>
4
- </label>
5
-
6
- <div class="col-sm-10">
7
- <div class="form-inline">
8
- <label for="change_note_type" class="sr-only"><%= t('txt.views.search_results.change_note.type') %></label>
9
- <%= select_tag :change_note_type, options_for_select([[t('txt.views.search_results.change_note.created'), :created], [t('txt.views.search_results.change_note.modified'), :modified]], params[:change_note_type]), :prompt => t('txt.views.search_results.all'), class: 'form-control col-sm-3' %>
10
-
11
- <div class="input-group date datepicker">
12
- <label for="change_note_date_from" class="sr-only"><%= t('txt.views.search_results.change_note.date_from') %></label>
13
- <%= text_field_tag :change_note_date_from, params[:change_note_date_from], placeholder: 'z.B.: 2010-05-14', class: 'form-control', style: 'border-radius: 4px 0px 0px 4px;' %>
14
- <div class="input-group-append">
15
- <span class="input-group-text"><i class="fa fa-calendar" aria-hidden="true"></i></span>
16
- </div>
17
- </div>
18
-
19
- <div class="input-group date datepicker">
20
- <label for="change_note_date_to" class="sr-only"><%= t('txt.views.search_results.change_note.date_to') %></label>
21
- <%= text_field_tag :change_note_date_to, params[:change_note_date_to], placeholder: 'z.B.: 2010-05-14', class: 'form-control', style: 'border-radius: 4px 0px 0px 4px;' %>
22
- <div class="input-group-append">
23
- <span class="input-group-text"><i class="fa fa-calendar" aria-hidden="true"></i></span>
24
- </div>
25
- </div>
1
+ <div class="form-group col-md-6">
2
+ <%= label_tag :change_note_type, t('txt.views.search_results.change_note.date') %>
3
+ <%= select_tag :change_note_type,
4
+ options_for_select([[t('txt.views.search_results.change_note.created'), :created], [t('txt.views.search_results.change_note.modified'), :modified]], params[:change_note_type]),
5
+ :prompt => t('txt.views.search_results.change_note.all'),
6
+ class: 'form-control' %>
7
+ </div>
8
+ <div class="col-md-3">
9
+ <%= label_tag :change_note_date_from, t('txt.views.search_results.change_note.date_from') %>
10
+ <div class="input-group date datepicker">
11
+ <%= text_field_tag :change_note_date_from, params[:change_note_date_from],
12
+ placeholder: 'z.B.: 2010-05-14',
13
+ class: 'form-control',
14
+ style: 'border-radius: 4px 0px 0px 4px;' %>
15
+ <div class="input-group-append">
16
+ <span class="input-group-text"><i class="fa fa-calendar" aria-hidden="true"></i></span>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ <div class="col-md-3">
21
+ <%= label_tag :change_note_date_to, t('txt.views.search_results.change_note.date_to') %>
22
+ <div class="input-group date datepicker">
23
+ <%= text_field_tag :change_note_date_to, params[:change_note_date_to],
24
+ placeholder: 'z.B.: 2010-05-14',
25
+ class: 'form-control',
26
+ style: 'border-radius: 4px 0px 0px 4px;' %>
27
+ <div class="input-group-append">
28
+ <span class="input-group-text"><i class="fa fa-calendar" aria-hidden="true"></i></span>
26
29
  </div>
27
30
  </div>
28
31
  </div>
@@ -1,6 +1,6 @@
1
- <div class="form-group row result_type_filter">
2
- <%= label_tag 'c', Iqvoc::Collection.base_class.model_name.human, :class => 'col-sm-2 col-form-label' %>
3
- <div class="col-sm-4">
4
- <%= select_tag 'c', options_from_collection_for_select(@collections, 'origin', 'status', params[:c]), :class => 'form-control', :prompt => t('txt.views.search_results.all') %>
5
- </div>
1
+ <div class="form-group result_type_filter">
2
+ <%= label_tag 'c', Iqvoc::Collection.base_class.model_name.human %>
3
+ <%= select_tag 'c', options_from_collection_for_select(@collections, 'origin', 'status', params[:c]),
4
+ :class => 'form-control',
5
+ :prompt => t('txt.views.search_results.all') %>
6
6
  </div>
@@ -1,23 +1,11 @@
1
1
  <% if @datasets.any? %>
2
- <div class="form-group row">
3
- <%= label_tag 'ds', t('txt.views.search_results.datasets'), :class => 'col-sm-2 col-form-label' %>
4
- <div class="checkbox-controls col-sm-6">
5
- <% @datasets.each do |dataset| %>
6
- <div class="form-check form-check-inline">
7
- <label class="checkbox-inline">
8
- <%= check_box_tag "ds[]", dataset.name, search_dataset_selected?(dataset.name), class: 'form-check-input' %>
9
- <%= dataset.name %>
10
- </label>
2
+ <div class="form-group">
3
+ <%= label_tag 'ds', t('txt.views.search_results.datasets') %>
4
+ <% @datasets.each_with_index do |dataset, idx| %>
5
+ <div class="form-check">
6
+ <%= check_box_tag "ds[]", dataset.name, search_dataset_selected?(dataset.name), class: 'form-check-input', id: "datasets_#{idx}" %>
7
+ <%= label_tag "datasets_#{idx}", dataset.name, class: 'form-check-label' %>
11
8
  </div>
12
- <% end %>
13
- <div class="btn-group btn-group-sm">
14
- <button type="button" class="btn btn-outline-secondary checkbox-select-all">
15
- <%= t('txt.views.search_results.all') %>
16
- </button>
17
- <button type="button" class="btn btn-outline-secondary checkbox-select-none">
18
- <%= t('txt.views.search_results.none') %>
19
- </button>
20
- </div>
21
- </div>
9
+ <% end %>
22
10
  </div>
23
- <% end %>
11
+ <% end %>
@@ -1,10 +1,8 @@
1
- <div class="form-group row">
2
- <%= label_tag 't', t('txt.views.search_results.for'), :class => 'col-sm-2 col-form-label' %>
3
- <div class="col-sm-3">
4
- <select name="t" id="t" class="search_type form-control">
5
- <%= options_for_select(Iqvoc.searchable_class_names.map { |klass, identifier|
6
- [klass.constantize.model_name.human(:count => 2), identifier]
7
- }, params[:t]) %>
8
- </select>
9
- </div>
1
+ <div class="form-group">
2
+ <%= label_tag 't', t('txt.views.search_results.for') %>
3
+ <select name="t" id="t" class="form-control">
4
+ <%= options_for_select(Iqvoc.searchable_class_names.map { |klass, identifier|
5
+ [klass.constantize.model_name.human(:count => 2), identifier]
6
+ }, params[:t]) %>
7
+ </select>
10
8
  </div>
@@ -1,21 +1,11 @@
1
1
  <div class="form-group row">
2
- <%= label_tag 'ds', t('txt.views.search_results.language'), :class => 'col-sm-2 col-form-label' %>
3
- <div class="checkbox-controls col-sm-4">
2
+ <%= label_tag 'ds', t('txt.views.search_results.language'), class: 'col-auto' %>
3
+ <div class="checkbox-controls col">
4
4
  <% @available_languages.sort.each do |lang_tag, label| %>
5
5
  <div class="form-check form-check-inline">
6
- <label for="languages_<%= lang_tag %>" class="form-check-label">
7
- <%= check_box_tag "l[]", lang_tag, search_language_selected?(lang_tag), class: 'form-check-input', id: "languages_#{lang_tag}" %>
8
- <%= lang_tag %>
9
- </label>
6
+ <%= check_box_tag "l[]", lang_tag, search_language_selected?(lang_tag), class: 'form-check-input', id: "languages_#{lang_tag}" %>
7
+ <%= label_tag "languages_#{lang_tag}", lang_tag, class: 'form-check-label' %>
10
8
  </div>
11
9
  <% end %>
12
- <div class="btn-group btn-group-sm">
13
- <button type="button" class="btn btn-outline-secondary checkbox-select-all">
14
- <%= t('txt.views.search_results.all') %>
15
- </button>
16
- <button type="button" class="btn btn-outline-secondary checkbox-select-none">
17
- <%= t('txt.views.search_results.none') %>
18
- </button>
19
- </div>
20
10
  </div>
21
11
  </div>
@@ -1,11 +1,9 @@
1
- <div class="form-group row">
2
- <%= label_tag 'qt', t('txt.views.search_results.mode'), :class => 'col-sm-2 col-form-label' %>
3
- <div class="col-sm-3">
4
- <%= select_tag :qt, options_for_select([
5
- [t('txt.views.search_results.contains'), 'contains'],
6
- [t('txt.views.search_results.exact'), 'exact'],
7
- [t('txt.views.search_results.ends_with'), 'ends_with'],
8
- [t('txt.views.search_results.begins_with'), 'begins_with']
9
- ], params[:qt]), :class => 'form-control' %>
10
- </div>
1
+ <div class="form-group">
2
+ <%= label_tag :qt, t('txt.views.search_results.mode') %>
3
+ <%= select_tag :qt, options_for_select([
4
+ [t('txt.views.search_results.contains'), 'contains'],
5
+ [t('txt.views.search_results.exact'), 'exact'],
6
+ [t('txt.views.search_results.ends_with'), 'ends_with'],
7
+ [t('txt.views.search_results.begins_with'), 'begins_with']
8
+ ], params[:qt]), :class => 'form-control' %>
11
9
  </div>
@@ -0,0 +1,8 @@
1
+ <div class="form-group result_type_filter">
2
+ <div class="form-check form-check-inline">
3
+ <label for="include_expired" class="form-check-label">
4
+ <%= check_box_tag :include_expired, true, params[:include_expired] == true, class: 'form-check-input' %>
5
+ <%= t('txt.views.search_results.expired') %>
6
+ </label>
7
+ </div>
8
+ </div>
@@ -1,12 +1,15 @@
1
- <div class="form-group has-feedback row">
2
- <%= label_tag 'q', t('txt.views.search_results.search_term'), :class => 'col-sm-2 col-form-label' %>
3
- <div class="col-sm-6">
4
- <div class="input-group">
5
- <% if Iqvoc.searchable_class_names.key(params[:t]).constantize.supports_multi_query? %>
6
- <%= text_area_tag :q, params[:query], :class => 'form-control', autofocus: true %>
7
- <% else %>
8
- <%= text_field_tag :q, params[:query], :class => 'form-control', autofocus: true %>
9
- <% end %>
10
- </div>
1
+ <div class="form-group row no-gutters align-items-center bg-white search-input">
2
+ <div class="col-auto">
3
+ <i class="fa fa-search fa-lg"></i>
4
+ </div>
5
+ <div class="col">
6
+ <%= search_field_tag :q, params[:query],
7
+ class: 'form-control form-control-lg form-control-borderless border-0',
8
+ placeholder: t('txt.views.search_results.search_term'),
9
+ autofocus: true,
10
+ autocomplete: 'off' %>
11
+ </div>
12
+ <div class="col-auto">
13
+ <%= submit_tag t('txt.views.search_results.submit'), class: 'btn btn-block btn-lg btn-primary p-2' %>
11
14
  </div>
12
15
  </div>
@@ -1,25 +1,25 @@
1
- <div class="form-group result_type_filter row">
2
- <%= label_tag nil, t('txt.views.search_results.for'), :class => 'col-sm-2 col-form-label' %>
3
- <div class="col-sm-4">
4
- <div class="form-check">
1
+ <div class="form-group row">
2
+ <div class="col-12">
3
+ <%= label_tag nil, t('txt.views.search_results.in') %>
4
+ </div>
5
+ <div class="col-12">
6
+ <div class="form-check form-check-inline">
7
+ <%= radio_button_tag 'for', 'all', !%w(concept collection).include?(params[:for]), class: 'form-check-input' %>
8
+ <label for="for_all" class="form-check-label">
9
+ <%= t("txt.views.search_results.all") %>
10
+ </label>
11
+ </div>
12
+ <div class="form-check form-check-inline">
5
13
  <%= radio_button_tag 'for', 'concept', params[:for] == "concept", class: 'form-check-input' %>
6
14
  <label for="for_concept" class="form-check-label">
7
15
  <%= Iqvoc::Concept.base_class.model_name.human(:count => 2) %>
8
16
  </label>
9
17
  </div>
10
-
11
- <div class="form-check">
18
+ <div class="form-check form-check-inline">
12
19
  <%= radio_button_tag 'for', 'collection', params[:for] == "collection", class: 'form-check-input' %>
13
20
  <label for="for_collection" class="form-check-label">
14
21
  <%= Iqvoc::Collection.base_class.model_name.human(:count => 2) %>
15
22
  </label>
16
23
  </div>
17
-
18
- <div class="form-check">
19
- <%= radio_button_tag 'for', 'all', !%w(concept collection).include?(params[:for]), class: 'form-check-input' %>
20
- <label for="for_all" class="form-check-label">
21
- <%= t("txt.views.search_results.all") %>
22
- </label>
23
- </div>
24
24
  </div>
25
25
  </div>
@@ -1,16 +1,18 @@
1
- require_relative 'boot'
1
+ require_relative "boot"
2
2
 
3
3
  # Pick the frameworks you want:
4
+ require "active_model/railtie"
5
+ require "active_job/railtie"
4
6
  require "active_record/railtie"
5
7
  require "active_storage/engine"
6
8
  require "action_controller/railtie"
7
- require "action_view/railtie"
8
9
  require "action_mailer/railtie"
9
- require "active_job/railtie"
10
+ require "action_mailbox/engine"
11
+ require "action_text/engine"
12
+ require "action_view/railtie"
10
13
  require "action_cable/engine"
11
- require "rails/test_unit/railtie"
12
14
  # require "sprockets/railtie" # Disable sprockets in favor of faucet
13
- require "active_model/railtie"
15
+ require "rails/test_unit/railtie"
14
16
 
15
17
  # Require the gems listed in Gemfile, including any gems
16
18
  # you've limited to :test, :development, or :production.
@@ -19,11 +21,14 @@ Bundler.require(*Rails.groups)
19
21
  module Iqvoc
20
22
  class Application < Rails::Application
21
23
  # Initialize configuration defaults for originally generated Rails version.
22
- config.load_defaults 5.2
24
+ config.load_defaults 7.0
23
25
 
24
- # Settings in config/environments/* take precedence over those specified here.
25
- # Application configuration can go into files in config/initializers
26
- # -- all .rb files in that directory are automatically loaded after loading
27
- # the framework and any gems in your application.
26
+ # Configuration for the application, engines, and railties goes here.
27
+ #
28
+ # These settings can be overridden in specific environments using the files
29
+ # in config/environments, which are processed later.
30
+ #
31
+ # config.time_zone = "Central Time (US & Canada)"
32
+ # config.eager_load_paths << Rails.root.join("extras")
28
33
  end
29
34
  end
data/config/boot.rb CHANGED
@@ -1,4 +1,4 @@
1
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
1
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
2
2
 
3
- require 'bundler/setup' # Set up gems listed in the Gemfile.
4
- require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
3
+ require "bundler/setup" # Set up gems listed in the Gemfile.
4
+ require "bootsnap/setup" # Speed up boot time by caching expensive operations.
data/config/cable.yml CHANGED
@@ -2,7 +2,7 @@ development:
2
2
  adapter: async
3
3
 
4
4
  test:
5
- adapter: async
5
+ adapter: test
6
6
 
7
7
  production:
8
8
  adapter: redis