iqvoc 4.13.0 → 4.13.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (272) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -1
  3. data/Gemfile +9 -10
  4. data/Gemfile.lock +206 -167
  5. data/README.md +7 -6
  6. data/app/assets/javascripts/framework.js +3 -3
  7. data/app/assets/javascripts/iqvoc/hover_menues.js +14 -0
  8. data/app/assets/javascripts/iqvoc/iqvoc.js +46 -41
  9. data/app/assets/javascripts/iqvoc/manifest.js +2 -1
  10. data/app/assets/javascripts/iqvoc/treeview.js +2 -1
  11. data/app/assets/stylesheets/iqvoc/components/_entity_select.scss +5 -8
  12. data/app/assets/stylesheets/iqvoc/components/_simplete.scss +2 -1
  13. data/app/assets/stylesheets/iqvoc/components/_treeview.scss +1 -0
  14. data/app/assets/stylesheets/iqvoc/hacks/_hacks.scss +1 -1
  15. data/app/controllers/collections/versions_controller.rb +1 -1
  16. data/app/controllers/collections_controller.rb +1 -1
  17. data/app/controllers/concepts/alphabetical_controller.rb +1 -1
  18. data/app/controllers/concepts/scheme_controller.rb +2 -1
  19. data/app/controllers/concepts/versions_controller.rb +1 -1
  20. data/app/controllers/concepts_controller.rb +9 -3
  21. data/app/controllers/hierarchy_controller.rb +1 -1
  22. data/app/controllers/search_results_controller.rb +3 -0
  23. data/app/controllers/triplestore_sync_controller.rb +2 -2
  24. data/app/controllers/users_controller.rb +1 -1
  25. data/app/helpers/application_helper.rb +6 -3
  26. data/app/helpers/concepts_helper.rb +3 -3
  27. data/app/helpers/link_helper.rb +7 -7
  28. data/app/helpers/navigation_helper.rb +24 -13
  29. data/app/models/abstract_user.rb +1 -1
  30. data/app/models/concept/base.rb +10 -1
  31. data/app/models/concept/skos/base.rb +0 -10
  32. data/app/models/concept/validations.rb +6 -4
  33. data/app/models/concerns/versioning.rb +1 -1
  34. data/app/models/dataset/adaptors/iqvoc/http_adaptor.rb +1 -1
  35. data/app/models/dataset/adaptors/iqvoc/label_adaptor.rb +1 -1
  36. data/app/models/dataset/adaptors/iqvoc/search_adaptor.rb +1 -1
  37. data/app/models/labeling/skos/base.rb +14 -10
  38. data/app/models/user_session.rb +0 -3
  39. data/app/services/rdf_sync_service.rb +3 -3
  40. data/app/views/concepts/alphabetical/_search_result.html.erb +3 -1
  41. data/app/views/concepts/hierarchical/_treeview.html.erb +4 -1
  42. data/app/views/concepts/scheme/show.html.erb +1 -3
  43. data/app/views/errors/server_error.html.erb +1 -2
  44. data/app/views/partials/collection/_member.html.erb +1 -1
  45. data/app/views/partials/concept/relation/_base.html.erb +4 -4
  46. data/app/views/partials/concept/relation/skos/_narrower.html.erb +1 -1
  47. data/app/views/partials/concept/relation/skos/broader/_mono.html.erb +2 -2
  48. data/app/views/partials/concept/relation/skos/broader/_poly.html.erb +2 -2
  49. data/app/views/partials/labeling/skos/_base.html.erb +1 -1
  50. data/app/views/partials/labeling/skos/_edit_base.html.erb +2 -1
  51. data/app/views/partials/labeling/skos/_search_result.html.erb +3 -0
  52. data/app/views/partials/match/_panel.html.erb +2 -2
  53. data/app/views/partials/notation/_base.html.erb +1 -1
  54. data/app/views/search_results/sections/_options.html.erb +10 -0
  55. data/app/views/search_results/sections/_terms.html.erb +1 -1
  56. data/app/views/search_results/sections/_type.html.erb +1 -1
  57. data/bin/bundle +3 -0
  58. data/bin/delayed_job +5 -0
  59. data/bin/rails +4 -0
  60. data/bin/rake +4 -0
  61. data/bin/setup +36 -0
  62. data/bin/update +31 -0
  63. data/bin/yarn +17 -0
  64. data/config/application.rb +15 -10
  65. data/config/boot.rb +2 -2
  66. data/config/cable.yml +1 -1
  67. data/config/database.yml +14 -19
  68. data/config/engine.rb +0 -1
  69. data/config/environment.rb +1 -1
  70. data/config/initializers/backtrace_silencers.rb +4 -3
  71. data/config/initializers/content_security_policy.rb +5 -0
  72. data/config/initializers/filter_parameter_logging.rb +3 -1
  73. data/config/initializers/permissions_policy.rb +11 -0
  74. data/config/initializers/wrap_parameters.rb +3 -3
  75. data/config/initializers/zeitwerk.rb +6 -0
  76. data/config/locales/activerecord.de.yml +2 -2
  77. data/config/locales/de.yml +7 -3
  78. data/config/locales/en.yml +5 -1
  79. data/config/puma.rb +10 -4
  80. data/db/migrate/20220107114201_add_fk_constraint_to_active_storage_attachments_for_blob_id.active_storage.rb +10 -0
  81. data/db/schema.rb +6 -6
  82. data/iqvoc.gemspec +10 -11
  83. data/lib/iqvoc/configuration/core.rb +9 -2
  84. data/lib/iqvoc/configuration/instance_configuration.rb +1 -1
  85. data/lib/iqvoc/environments/development.rb +18 -7
  86. data/lib/iqvoc/environments/production.rb +35 -12
  87. data/lib/iqvoc/environments/test.rb +14 -7
  88. data/lib/iqvoc/version.rb +1 -1
  89. data/lib/tasks/sync.rake +1 -1
  90. data/test/authentication.rb +1 -1
  91. data/test/controllers/hierarchy_test.rb +4 -4
  92. data/test/integration/client_edit_concept_test.rb +1 -1
  93. data/test/integration/concept_collection_assignment_test.rb +6 -6
  94. data/test/integration/search_test.rb +3 -3
  95. data/test/integration_test_helper.rb +2 -2
  96. data/test/models/rdf_sync_test.rb +3 -3
  97. data/test/models/zeitwerk_compliance_test.rb +7 -0
  98. metadata +83 -250
  99. data/config/initializers/new_framework_defaults_5_1.rb +0 -14
  100. data/config/initializers/sqlite3_booleans.rb +0 -1
  101. data/public/422.html +0 -58
  102. data/public/assets/fonts/FiraMono-Regular-0b6138c5b386dc9125473fd851926f29.ttf +0 -0
  103. data/public/assets/fonts/FiraMono-Regular-690950e8d89c92cba41eeeb13f1de93e.woff +0 -0
  104. data/public/assets/fonts/FiraMono-Regular-98f97ed2dbf9d94d4fa5df048434b88d.eot +0 -0
  105. data/public/assets/fonts/FiraMono-Regular.eot +0 -0
  106. data/public/assets/fonts/FiraMono-Regular.ttf +0 -0
  107. data/public/assets/fonts/FiraMono-Regular.woff +0 -0
  108. data/public/assets/fonts/FiraSans-Bold-0de5f536bd0dc370449c0c67a49a6fe7.eot +0 -0
  109. data/public/assets/fonts/FiraSans-Bold-25037ef8d155e38b5df0c242a4c6cf2d.ttf +0 -0
  110. data/public/assets/fonts/FiraSans-Bold-494219a9639084eb9528ff47f79fcda1.woff +0 -0
  111. data/public/assets/fonts/FiraSans-Bold.eot +0 -0
  112. data/public/assets/fonts/FiraSans-Bold.ttf +0 -0
  113. data/public/assets/fonts/FiraSans-Bold.woff +0 -0
  114. data/public/assets/fonts/FiraSans-BoldItalic-5b3b812df9e1cb2b1f34baad65a2bdfb.ttf +0 -0
  115. data/public/assets/fonts/FiraSans-BoldItalic-90b8087c48feff2e828f658c49de5399.eot +0 -0
  116. data/public/assets/fonts/FiraSans-BoldItalic-b10e46158d50bf9b78968112acf87310.woff +0 -0
  117. data/public/assets/fonts/FiraSans-BoldItalic.eot +0 -0
  118. data/public/assets/fonts/FiraSans-BoldItalic.ttf +0 -0
  119. data/public/assets/fonts/FiraSans-BoldItalic.woff +0 -0
  120. data/public/assets/fonts/FiraSans-Book-659d252627051e785260ba445da8930f.woff +0 -0
  121. data/public/assets/fonts/FiraSans-Book-abc65ceb7bfaed729bff7a9d1367b7d4.eot +0 -0
  122. data/public/assets/fonts/FiraSans-Book-f0410501d5ecc5fe66bcdbc02b482c81.ttf +0 -0
  123. data/public/assets/fonts/FiraSans-Book.eot +0 -0
  124. data/public/assets/fonts/FiraSans-Book.ttf +0 -0
  125. data/public/assets/fonts/FiraSans-Book.woff +0 -0
  126. data/public/assets/fonts/FiraSans-ExtraLight-140f15ee97cb2099ff01c2b57dcd1a24.woff +0 -0
  127. data/public/assets/fonts/FiraSans-ExtraLight-28e5c2679df66406ebd117fbdded6753.eot +0 -0
  128. data/public/assets/fonts/FiraSans-ExtraLight-c15de70ebceffce178cbd2e82aa2c373.ttf +0 -0
  129. data/public/assets/fonts/FiraSans-ExtraLight.eot +0 -0
  130. data/public/assets/fonts/FiraSans-ExtraLight.ttf +0 -0
  131. data/public/assets/fonts/FiraSans-ExtraLight.woff +0 -0
  132. data/public/assets/fonts/FiraSans-Italic-ac4cb18fe14a7c90f29cdd2ce499ba59.woff +0 -0
  133. data/public/assets/fonts/FiraSans-Italic-bdea00fee0da5ca9176061e00c26a0da.eot +0 -0
  134. data/public/assets/fonts/FiraSans-Italic-e7e76a0ee170fd29b5d8100753eff569.ttf +0 -0
  135. data/public/assets/fonts/FiraSans-Italic.eot +0 -0
  136. data/public/assets/fonts/FiraSans-Italic.ttf +0 -0
  137. data/public/assets/fonts/FiraSans-Italic.woff +0 -0
  138. data/public/assets/fonts/FiraSans-Light-20adaf630b690c3e3184daaeae585f22.woff +0 -0
  139. data/public/assets/fonts/FiraSans-Light-3689e18b38d335ec0c43823adb6a2984.eot +0 -0
  140. data/public/assets/fonts/FiraSans-Light-55b04531e7a9ecdf58090d70b94b68e2.ttf +0 -0
  141. data/public/assets/fonts/FiraSans-Light-SC-098407a72b7ad46f7c2480d7ac11baf2.eot +0 -0
  142. data/public/assets/fonts/FiraSans-Light-SC-82763fe2ce9e6b897556c6f3c2aceb29.woff2 +0 -0
  143. data/public/assets/fonts/FiraSans-Light-SC-c73985985f0501c1845a5185b180fe6b.woff +0 -0
  144. data/public/assets/fonts/FiraSans-Light-SC-c9563f48d9cccd91f07e46801c27130f.ttf +0 -0
  145. data/public/assets/fonts/FiraSans-Light-SC.eot +0 -0
  146. data/public/assets/fonts/FiraSans-Light-SC.ttf +0 -0
  147. data/public/assets/fonts/FiraSans-Light-SC.woff +0 -0
  148. data/public/assets/fonts/FiraSans-Light-SC.woff2 +0 -0
  149. data/public/assets/fonts/FiraSans-Light.eot +0 -0
  150. data/public/assets/fonts/FiraSans-Light.ttf +0 -0
  151. data/public/assets/fonts/FiraSans-Light.woff +0 -0
  152. data/public/assets/fonts/FiraSans-Medium-082fab59048189168006bf2e914ba8b7.woff +0 -0
  153. data/public/assets/fonts/FiraSans-Medium-11706edfe8651c355b413bd24b4b5e10.eot +0 -0
  154. data/public/assets/fonts/FiraSans-Medium-3a0dacdeaba1b4c054f2d6cb5061965d.ttf +0 -0
  155. data/public/assets/fonts/FiraSans-Medium.eot +0 -0
  156. data/public/assets/fonts/FiraSans-Medium.ttf +0 -0
  157. data/public/assets/fonts/FiraSans-Medium.woff +0 -0
  158. data/public/assets/fonts/FiraSans-MediumItalic-6c8a2646d72641226527d574a8485b66.woff +0 -0
  159. data/public/assets/fonts/FiraSans-MediumItalic-b81e92794a6878b6c578d97b3ad5e6d7.ttf +0 -0
  160. data/public/assets/fonts/FiraSans-MediumItalic-eae7f4a3c4db9fe83025909ebfae5ad9.eot +0 -0
  161. data/public/assets/fonts/FiraSans-MediumItalic.eot +0 -0
  162. data/public/assets/fonts/FiraSans-MediumItalic.ttf +0 -0
  163. data/public/assets/fonts/FiraSans-MediumItalic.woff +0 -0
  164. data/public/assets/fonts/FiraSans-Regular-537188a19aeebdd74a92e114af7a02cb.ttf +0 -0
  165. data/public/assets/fonts/FiraSans-Regular-5d6a923de9be80ff5c2995cc03d93127.woff +0 -0
  166. data/public/assets/fonts/FiraSans-Regular-db689e5fea21ed4b7890811151968dc6.eot +0 -0
  167. data/public/assets/fonts/FiraSans-Regular.eot +0 -0
  168. data/public/assets/fonts/FiraSans-Regular.ttf +0 -0
  169. data/public/assets/fonts/FiraSans-Regular.woff +0 -0
  170. data/public/assets/fonts/FiraSans-UltraLight-3baefce4c224a0f0b26cdafe37dfa55d.eot +0 -0
  171. data/public/assets/fonts/FiraSans-UltraLight-e3909a352b87f853bb464836adfd602a.ttf +0 -0
  172. data/public/assets/fonts/FiraSans-UltraLight-f7289beeaa2353caf487553ee8b8ef03.woff +0 -0
  173. data/public/assets/fonts/FiraSans-UltraLight.eot +0 -0
  174. data/public/assets/fonts/FiraSans-UltraLight.ttf +0 -0
  175. data/public/assets/fonts/FiraSans-UltraLight.woff +0 -0
  176. data/public/assets/fonts/FontAwesome.otf +0 -0
  177. data/public/assets/fonts/fontawesome-webfont.eot +0 -0
  178. data/public/assets/fonts/fontawesome-webfont.svg +0 -2671
  179. data/public/assets/fonts/fontawesome-webfont.ttf +0 -0
  180. data/public/assets/fonts/fontawesome-webfont.woff +0 -0
  181. data/public/assets/fonts/fontawesome-webfont.woff2 +0 -0
  182. data/public/assets/images/ajax-loader-30d8e72bfdae694b1938658e1b087df0.gif +0 -0
  183. data/public/assets/images/ajax-loader.gif +0 -0
  184. data/public/assets/images/iqvoc_logo-165f17a46cf0a1bf9464db9d136fb843.svg +0 -41
  185. data/public/assets/images/iqvoc_logo.svg +0 -41
  186. data/public/assets/images/treeview-default-line-5e3c0e0c48f48c23c45aef7b72c739c0.gif +0 -0
  187. data/public/assets/images/treeview-default-line.gif +0 -0
  188. data/public/assets/javascripts/bootstrap.bundle.min-68b3c2f1c1f636f947fff1229d3ffbf5.js +0 -7
  189. data/public/assets/javascripts/bootstrap.bundle.min.js +0 -42
  190. data/public/assets/javascripts/jquery-17e41799d7fba03a313ca6b67d8a0954.js +0 -26
  191. data/public/assets/javascripts/jquery-d52dc3a9171f1fc89dd0f8e35e42c9d2.js +0 -26
  192. data/public/assets/javascripts/jquery.js +0 -10875
  193. data/public/assets/javascripts/manifest-7708201f7c24d5186cd075c3317f9b70.js +0 -7311
  194. data/public/assets/javascripts/manifest-89894d9f630fa57378a0c28e2a3d9ea9.js +0 -7325
  195. data/public/assets/javascripts/manifest.js +0 -5660
  196. data/public/assets/manifest.json +0 -1
  197. data/public/assets/stylesheets/manifest-893c7de3dee9ed1295bc1b5b4c1f0c34.css +0 -13
  198. data/public/assets/stylesheets/manifest-94b7be92a9b1cfeafea4ea71af910324.css +0 -13
  199. data/public/assets/stylesheets/manifest-e576edf92efaaad86b15b565fa473d0b.css +0 -7
  200. data/public/assets/stylesheets/manifest.css +0 -14314
  201. data/public/export/12750.nt +0 -28
  202. data/public/export/17385303752427181100115432751692126521.nt +0 -28
  203. data/public/export/181196830007276319343907883650755121680.nt +0 -28
  204. data/public/export/194669028845730209313058462140064732442.nt +0 -28
  205. data/public/export/21988.nt +0 -28
  206. data/public/export/230655012044692637365356891394989635995.nt +0 -28
  207. data/public/export/233590502327750705645106563554497694497.nt +0 -28
  208. data/public/export/245884359537367641918690456207690070316.nt +0 -28
  209. data/public/export/250386066048669747259363837063223215204.nt +0 -28
  210. data/public/export/256041066575224861739818511470898486442.nt +0 -28
  211. data/public/export/287138383024694264939471429022965897163.nt +0 -28
  212. data/public/export/31892.nt +0 -28
  213. data/public/export/333774437366008328346740356666975078086.nt +0 -28
  214. data/public/export/34639390376251419382098415225771775708.nt +0 -28
  215. data/public/export/4098.nt +0 -28
  216. data/public/export/47070.nt +0 -28
  217. data/public/export/49947.nt +0 -28
  218. data/public/export/5793.nt +0 -28
  219. data/public/export/64089124325772410079516909502763866955.nt +0 -28
  220. data/public/export/64718.nt +0 -28
  221. data/public/export/71200590939430584664474292378126383577.nt +0 -28
  222. data/public/export/81965533953024918329855744567916239964.nt +0 -28
  223. data/public/favicon.ico +0 -0
  224. data/public/robots.txt +0 -5
  225. data/public/uploads/import/213b73161661ebbad4e5ee3f543ae617.nt +0 -259
  226. data/public/uploads/import/22ad4d7419b7914c7319c46a66839f77.nt +0 -259
  227. data/public/uploads/import/22b78e01b9b5876851578cf9a8373c07.nt +0 -259
  228. data/public/uploads/import/2ab75781f8141010699dd272f681b245.nt +0 -259
  229. data/public/uploads/import/4c7fe47a2c21a681fd8f0eb3af0ebf19.nt +0 -259
  230. data/public/uploads/import/5265d7cb194f017c592a68914ecf8d9f.nt +0 -259
  231. data/public/uploads/import/5cb5414a66e4ae5dbe05eb763c367bd1.nt +0 -259
  232. data/public/uploads/import/6b042e00c2e2abf9241d2ece3e67ed27.nt +0 -259
  233. data/public/uploads/import/749edd3918db157202b00f89418b87d1.nt +0 -259
  234. data/public/uploads/import/7aeb9d76b78ba67674caa53a96e1caa0.nt +0 -259
  235. data/public/uploads/import/7b7fc425b8926e586ca10d0f1385aa4e.nt +0 -259
  236. data/public/uploads/import/8319d34702375718b20e72a6af71c503.nt +0 -259
  237. data/public/uploads/import/9ec48f5aaece8d2a8770439e34199b19.nt +0 -259
  238. data/public/uploads/import/a22750632c35587057285920142c2db8.nt +0 -259
  239. data/public/uploads/import/a6d9eeb5e76ce0032614c8142a33c90b.nt +0 -259
  240. data/public/uploads/import/a7ec826e32e80d1fc61f5e89f7442199.nt +0 -259
  241. data/public/uploads/import/af2ac8cb84a194da9871ea701f915a25.nt +0 -259
  242. data/public/uploads/import/b50c67ef8cb51fa12812ac2601faaa75.nt +0 -259
  243. data/public/uploads/import/b66560ac9cc4aecd50f82d4fcec8bde4.nt +0 -259
  244. data/public/uploads/import/c1a12245a41d9105585fb48a0b5244ab.nt +0 -259
  245. data/public/uploads/import/c4b23750b9f72a7f93bcd979a9afded3.nt +0 -259
  246. data/public/uploads/import/d1edac76626a35a6e72a592c98e97b1a.nt +0 -259
  247. data/public/uploads/import/eca92dbeff4aec30e3072103bb5f565f.nt +0 -259
  248. data/public/uploads/import/f7996f8826062cd8dcfc8fac70e830b9.nt +0 -259
  249. data/public/uploads/tmp/1609926599-187261935008931-0002-5418/hobbies.nt +0 -259
  250. data/public/uploads/tmp/1610450700-516890595554445-0002-2685/hobbies.nt +0 -259
  251. data/public/uploads/tmp/1610450844-597126333235543-0001-0714/hobbies.nt +0 -259
  252. data/public/uploads/tmp/1611054155-443031323634581-0001-9192/hobbies.nt +0 -259
  253. data/public/uploads/tmp/1611225485-767301590714814-0002-6904/hobbies.nt +0 -259
  254. data/public/uploads/tmp/1611225661-919900076415463-0002-0657/hobbies.nt +0 -259
  255. data/public/uploads/tmp/1611227389-36557097935032-0002-4613/hobbies.nt +0 -259
  256. data/public/uploads/tmp/1611585376-822293462114758-0001-9752/hobbies.nt +0 -259
  257. data/public/uploads/tmp/1611585431-703460698560673-0002-7522/hobbies.nt +0 -259
  258. data/public/uploads/tmp/1611586554-483369300394995-0002-0872/hobbies.nt +0 -259
  259. data/public/uploads/tmp/1619777137-609890333749067-0002-0264/hobbies.nt +0 -259
  260. data/public/uploads/tmp/1627291050-163284787457980-0001-2701/hobbies.nt +0 -259
  261. data/public/uploads/tmp/1627291589-952446089963663-0002-3171/hobbies.nt +0 -259
  262. data/public/uploads/tmp/1627291819-788250283200541-0002-2503/hobbies.nt +0 -259
  263. data/public/uploads/tmp/1627292534-103362378955855-0001-7089/hobbies.nt +0 -259
  264. data/public/uploads/tmp/1627293799-506613299368066-0002-1247/hobbies.nt +0 -259
  265. data/public/uploads/tmp/1627293863-868842521367397-0001-4656/hobbies.nt +0 -259
  266. data/public/uploads/tmp/1636993960-338364327912413-0002-8049/hobbies.nt +0 -259
  267. data/public/uploads/tmp/1641550181-434480636271400-0002-7928/hobbies.nt +0 -259
  268. data/public/uploads/tmp/1641550416-6444469569098-0002-2156/hobbies.nt +0 -259
  269. data/public/uploads/tmp/1641550691-848542458162760-0002-6815/hobbies.nt +0 -259
  270. data/public/uploads/tmp/1641550716-647719127292471-0002-9954/hobbies.nt +0 -259
  271. data/public/uploads/tmp/1641551058-78248622355227-0002-3663/hobbies.nt +0 -259
  272. data/public/uploads/tmp/1641551220-744894908610606-0001-3879/hobbies.nt +0 -259
data/db/schema.rb CHANGED
@@ -2,15 +2,15 @@
2
2
  # of editing this file, please use the migrations feature of Active Record to
3
3
  # incrementally modify your database, and then regenerate this schema definition.
4
4
  #
5
- # Note that this schema.rb definition is the authoritative source for your
6
- # database schema. If you need to create the application database on another
7
- # system, you should be using db:schema:load, not running all the migrations
8
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
9
- # you'll amass, the slower it'll run and the greater likelihood for issues).
5
+ # This file is the source Rails uses to define your schema when running `bin/rails
6
+ # db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
7
+ # be faster and is potentially less error prone than running all of your
8
+ # migrations from scratch. Old migrations may fail to apply correctly if those
9
+ # migrations use external dependencies or application code.
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2020_09_01_143030) do
13
+ ActiveRecord::Schema.define(version: 2022_01_07_114201) do
14
14
 
15
15
  # These are extensions that must be enabled in order to support this database
16
16
  enable_extension "plpgsql"
data/iqvoc.gemspec CHANGED
@@ -11,17 +11,17 @@ Gem::Specification.new do |s|
11
11
  s.homepage = 'http://github.com/innoq/iqvoc'
12
12
  s.summary = 'iQvoc'
13
13
  s.description = 'iQvoc - a SKOS(-XL) vocabulary management system built on the Semantic Web'
14
- s.license = 'Apache License 2.0'
14
+ s.license = 'Apache-2.0'
15
15
 
16
- s.add_dependency 'rails', '>= 5.2.0', '< 6.0'
16
+ s.add_dependency 'rails', '~> 6.1.5', '>= 6.1.5.1'
17
17
  s.add_dependency 'puma', '< 6.0'
18
- s.add_dependency 'bootsnap', '>= 1.1.0'
18
+ s.add_dependency 'bootsnap', '>= 1.4.4'
19
19
  s.add_dependency 'bundler'
20
- s.add_dependency 'kaminari', '~> 1.2.0'
21
- s.add_dependency 'authlogic', '~> 6.2.0'
20
+ s.add_dependency 'kaminari'
21
+ s.add_dependency 'authlogic'
22
22
  s.add_dependency 'scrypt'
23
- s.add_dependency 'cancancan', '~> 2.3.0'
24
- s.add_dependency 'iq_rdf', '>= 0.1.16'
23
+ s.add_dependency 'cancancan'
24
+ s.add_dependency 'iq_rdf'
25
25
  s.add_dependency 'json'
26
26
  s.add_dependency 'rails_autolink'
27
27
  s.add_dependency 'faraday', '0.9.0'
@@ -32,18 +32,17 @@ Gem::Specification.new do |s|
32
32
  s.add_dependency 'linkeddata'
33
33
  s.add_dependency 'rdf-vocab'
34
34
  s.add_dependency 'deep_cloneable'
35
- s.add_dependency 'uglifier', '>= 1.3.0'
36
35
  s.add_dependency 'apipie-rails'
37
36
  s.add_dependency 'maruku'
38
37
  s.add_dependency 'database_cleaner', '~> 1.8.5'
39
- s.add_dependency 'delayed_job_active_record', '~> 4.1.1'
38
+ s.add_dependency 'delayed_job_active_record'
40
39
  s.add_dependency 'carrierwave'
41
40
  s.add_dependency 'rack-mini-profiler'
42
41
  s.add_dependency 'faucet_pipeline_rails'
43
42
 
44
43
  s.files = %w(LICENSE README.md CHANGELOG.md Gemfile Gemfile.lock Rakefile iqvoc.gemspec) +
45
- Dir.glob('{app,config,db,public,lib,test,vendor}/**/*')
46
- s.test_files = s.files.grep(%r{^test/})
44
+ Dir.glob('{app,bin,config,db,lib}/**/*')
45
+ s.test_files = Dir['{test}/**/*']
47
46
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
48
47
  s.require_paths = ['lib']
49
48
  end
@@ -118,7 +118,8 @@ module Iqvoc
118
118
  'collection',
119
119
  'languages',
120
120
  'change_note',
121
- 'datasets'
121
+ 'datasets',
122
+ 'options',
122
123
  ]
123
124
 
124
125
  # ignored database tables during thesaurus truncation
@@ -132,11 +133,13 @@ module Iqvoc
132
133
  # initialize
133
134
  self.config.register_settings({
134
135
  'title' => 'iQvoc',
136
+ 'concept_modal_preview' => true,
135
137
  'languages.pref_labeling' => ['en', 'de'],
136
138
  'languages.further_labelings.Labeling::SKOS::AltLabel' => ['en', 'de'],
137
139
  'languages.notes' => ['en', 'de'],
138
140
  'performance.unbounded_hierarchy' => false,
139
- 'sources.iqvoc' => ['']
141
+ 'sources.iqvoc' => [''],
142
+ 'sources.create_reverse_matches' => true
140
143
  })
141
144
  end
142
145
 
@@ -189,6 +192,10 @@ module Iqvoc
189
192
  self.config.register_setting('title', value)
190
193
  end
191
194
 
195
+ def concept_modal_preview_enabled?
196
+ config['concept_modal_preview'] == true
197
+ end
198
+
192
199
  def engine?
193
200
  Iqvoc.const_defined?(:Engine)
194
201
  end
@@ -80,7 +80,7 @@ module Iqvoc
80
80
 
81
81
  json = JSON.dump([value])[1..-2] # temporary array wrapper ensures valid JSON text
82
82
  if setting = ConfigurationSetting.find_by_key(key)
83
- setting.update_attributes(value: json)
83
+ setting.update(value: json)
84
84
  else
85
85
  ConfigurationSetting.create(key: key, value: json)
86
86
  end
@@ -1,11 +1,12 @@
1
+ require "active_support/core_ext/integer/time"
1
2
  require 'iqvoc'
2
3
 
3
4
  module Iqvoc::Environments
4
5
  def self.setup_development(config)
5
6
  # Settings specified here will take precedence over those in config/application.rb.
6
7
 
7
- # In the development environment your application's code is reloaded on
8
- # every request. This slows down response time but is perfect for development
8
+ # In the development environment your application's code is reloaded any time
9
+ # it changes. This slows down response time but is perfect for development
9
10
  # since you don't have to restart the web server when you make code changes.
10
11
  config.cache_classes = false
11
12
 
@@ -19,6 +20,7 @@ module Iqvoc::Environments
19
20
  # Run rails dev:cache to toggle caching.
20
21
  if Rails.root.join('tmp', 'caching-dev.txt').exist?
21
22
  config.action_controller.perform_caching = true
23
+ config.action_controller.enable_fragment_cache_logging = true
22
24
 
23
25
  config.cache_store = :memory_store
24
26
  config.public_file_server.headers = {
@@ -30,7 +32,7 @@ module Iqvoc::Environments
30
32
  config.cache_store = :null_store
31
33
  end
32
34
 
33
- # Store uploaded files on the local file system (see config/storage.yml for options)
35
+ # Store uploaded files on the local file system (see config/storage.yml for options).
34
36
  config.active_storage.service = :local
35
37
 
36
38
  # Don't care if the mailer can't send.
@@ -41,20 +43,29 @@ module Iqvoc::Environments
41
43
  # Print deprecation notices to the Rails logger.
42
44
  config.active_support.deprecation = :log
43
45
 
46
+ # Raise exceptions for disallowed deprecations.
47
+ config.active_support.disallowed_deprecation = :raise
48
+
49
+ # Tell Active Support which deprecation messages to disallow.
50
+ config.active_support.disallowed_deprecation_warnings = []
51
+
44
52
  # Raise an error on page load if there are pending migrations.
45
53
  config.active_record.migration_error = :page_load
46
54
 
47
55
  # Highlight code that triggered database queries in logs.
48
56
  config.active_record.verbose_query_logs = true
49
57
 
50
- # Raises error for missing translations
51
- config.action_view.raise_on_missing_translations = true
58
+ # Raises error for missing translations.
59
+ config.i18n.raise_on_missing_translations = true
52
60
 
53
- # Raises error for missing translations
54
- config.i18n.enforce_available_locales = true
61
+ # Annotate rendered view with file names.
62
+ config.action_view.annotate_rendered_view_with_filenames = true
55
63
 
56
64
  # Use an evented file watcher to asynchronously detect changes in source code,
57
65
  # routes, locales, etc. This feature depends on the listen gem.
58
66
  config.file_watcher = ActiveSupport::EventedFileUpdateChecker
67
+
68
+ # Uncomment if you wish to allow Action Cable access from any origin.
69
+ # config.action_cable.disable_request_forgery_protection = true
59
70
  end
60
71
  end
@@ -1,3 +1,4 @@
1
+ require "active_support/core_ext/integer/time"
1
2
  require 'iqvoc'
2
3
 
3
4
  module Iqvoc::Environments
@@ -26,16 +27,16 @@ module Iqvoc::Environments
26
27
  config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
27
28
 
28
29
  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
29
- # config.action_controller.asset_host = 'http://assets.example.com'
30
+ # config.asset_host = 'http://assets.example.com'
30
31
 
31
32
  # Specifies the header that your server uses for sending files.
32
33
  # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
33
34
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
34
35
 
35
- # Store uploaded files on the local file system (see config/storage.yml for options)
36
+ # Store uploaded files on the local file system (see config/storage.yml for options).
36
37
  config.active_storage.service = :local
37
38
 
38
- # Mount Action Cable outside main process or domain
39
+ # Mount Action Cable outside main process or domain.
39
40
  # config.action_cable.mount_path = nil
40
41
  # config.action_cable.url = 'wss://example.com/cable'
41
42
  # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
@@ -43,8 +44,8 @@ module Iqvoc::Environments
43
44
  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
44
45
  # config.force_ssl = true
45
46
 
46
- # Use the lowest log level to ensure availability of diagnostic information
47
- # when problems arise.
47
+ # Include generic and useful information about system operation, but avoid logging too much
48
+ # information to avoid inadvertent exposure of personally identifiable information (PII).
48
49
  config.log_level = (ENV['LOG_LEVEL'] || :info)
49
50
 
50
51
  # Prepend all log lines with the following tags.
@@ -53,9 +54,9 @@ module Iqvoc::Environments
53
54
  # Use a different cache store in production.
54
55
  # config.cache_store = :mem_cache_store
55
56
 
56
- # Use a real queuing backend for Active Job (and separate queues per environment)
57
+ # Use a real queuing backend for Active Job (and separate queues per environment).
57
58
  # config.active_job.queue_adapter = :resque
58
- # config.active_job.queue_name_prefix = "iqvoc_#{Rails.env}"
59
+ # config.active_job.queue_name_prefix = "iqvoc_production"
59
60
 
60
61
  config.action_mailer.perform_caching = false
61
62
 
@@ -70,11 +71,17 @@ module Iqvoc::Environments
70
71
  # Send deprecation notices to registered listeners.
71
72
  config.active_support.deprecation = :notify
72
73
 
74
+ # Log disallowed deprecations.
75
+ config.active_support.disallowed_deprecation = :log
76
+
77
+ # Tell Active Support which deprecation messages to disallow.
78
+ config.active_support.disallowed_deprecation_warnings = []
79
+
73
80
  # Use default logging formatter so that PID and timestamp are not suppressed.
74
81
  config.log_formatter = ::Logger::Formatter.new
75
82
 
76
83
  # Use a different logger for distributed setups.
77
- # require 'syslog/logger'
84
+ # require "syslog/logger"
78
85
  # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
79
86
 
80
87
  if ENV["RAILS_LOG_TO_STDOUT"].present?
@@ -86,9 +93,25 @@ module Iqvoc::Environments
86
93
  # Do not dump schema after migrations.
87
94
  config.active_record.dump_schema_after_migration = false
88
95
 
89
- config.i18n.enforce_available_locales = true
90
-
91
- # Raises error for missing translations
92
- config.action_view.raise_on_missing_translations = false
96
+ # Inserts middleware to perform automatic connection switching.
97
+ # The `database_selector` hash is used to pass options to the DatabaseSelector
98
+ # middleware. The `delay` is used to determine how long to wait after a write
99
+ # to send a subsequent read to the primary.
100
+ #
101
+ # The `database_resolver` class is used by the middleware to determine which
102
+ # database is appropriate to use based on the time delay.
103
+ #
104
+ # The `database_resolver_context` class is used by the middleware to set
105
+ # timestamps for the last write to the primary. The resolver uses the context
106
+ # class timestamps to determine how long to wait before reading from the
107
+ # replica.
108
+ #
109
+ # By default Rails will store a last write timestamp in the session. The
110
+ # DatabaseSelector middleware is designed as such you can define your own
111
+ # strategy for connection switching and pass that into the middleware through
112
+ # these configuration options.
113
+ # config.active_record.database_selector = { delay: 2.seconds }
114
+ # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
115
+ # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
93
116
  end
94
117
  end
@@ -1,13 +1,10 @@
1
+ require "active_support/core_ext/integer/time"
1
2
  require 'iqvoc'
2
3
 
3
4
  module Iqvoc::Environments
4
5
  def self.setup_test(config)
5
6
  # Settings specified here will take precedence over those in config/application.rb.
6
7
 
7
- # The test environment is used exclusively to run your application's
8
- # test suite. You never need to work with it otherwise. Remember that
9
- # your test database is "scratch space" for the test suite and is wiped
10
- # and recreated between test runs. Don't rely on the data there!
11
8
  config.cache_classes = true
12
9
 
13
10
  # Do not eager load code on boot. This avoids loading your whole application
@@ -24,6 +21,7 @@ module Iqvoc::Environments
24
21
  # Show full error reports and disable caching.
25
22
  config.consider_all_requests_local = true
26
23
  config.action_controller.perform_caching = false
24
+ config.cache_store = :null_store
27
25
 
28
26
  # Raise exceptions instead of rendering exception templates.
29
27
  config.action_dispatch.show_exceptions = false
@@ -31,7 +29,7 @@ module Iqvoc::Environments
31
29
  # Disable request forgery protection in test environment.
32
30
  config.action_controller.allow_forgery_protection = false
33
31
 
34
- # Store uploaded files on the local file system in a temporary directory
32
+ # Store uploaded files on the local file system in a temporary directory.
35
33
  config.active_storage.service = :test
36
34
 
37
35
  config.action_mailer.perform_caching = false
@@ -44,7 +42,16 @@ module Iqvoc::Environments
44
42
  # Print deprecation notices to the stderr.
45
43
  config.active_support.deprecation = :stderr
46
44
 
47
- # Raises error for missing translations
48
- config.action_view.raise_on_missing_translations = true
45
+ # Raise exceptions for disallowed deprecations.
46
+ config.active_support.disallowed_deprecation = :raise
47
+
48
+ # Tell Active Support which deprecation messages to disallow.
49
+ config.active_support.disallowed_deprecation_warnings = []
50
+
51
+ # Raises error for missing translations.
52
+ config.i18n.raise_on_missing_translations = true
53
+
54
+ # Annotate rendered view with file names.
55
+ # config.action_view.annotate_rendered_view_with_filenames = true
49
56
  end
50
57
  end
data/lib/iqvoc/version.rb CHANGED
@@ -15,5 +15,5 @@
15
15
  # limitations under the License.
16
16
 
17
17
  module Iqvoc
18
- VERSION = "4.13.0"
18
+ VERSION = "4.13.2"
19
19
  end
data/lib/tasks/sync.rake CHANGED
@@ -14,7 +14,7 @@ namespace :sync do
14
14
  default_url_options[:host] = ROOT
15
15
 
16
16
  class FakeController
17
- include RDFSyncService::Helper
17
+ include RdfSyncService::Helper
18
18
  delegate :url_helpers, :to => "Rails.application.routes"
19
19
 
20
20
  def root_url(*args)
@@ -27,7 +27,7 @@ module Authentication
27
27
  u.password_confirmation = 'omgomgomg'
28
28
  u.role = 'reader'
29
29
  u.active = true
30
- u.role = role || User.default_role
30
+ u.role = role || User.default_user_role
31
31
  end
32
32
  end
33
33
  end
@@ -150,7 +150,7 @@ boot:
150
150
 
151
151
  get :show, params: { lang: 'en', format: 'ttl', root: 'root' }
152
152
  assert_response 200
153
- assert_equal @response.content_type, 'text/turtle'
153
+ assert_equal @response.media_type, 'text/turtle'
154
154
  assert @response.body =~ /:root[^\.]+skos:topConceptOf[^\.]+:scheme/m
155
155
  assert @response.body =~ /:root[^\.]+skos:prefLabel[^\.]+"Root"@en/m
156
156
  assert @response.body =~ /:root[^\.]+skos:narrower[^\.]+:bar/m
@@ -180,7 +180,7 @@ boot:
180
180
 
181
181
  get :show, params: { lang: 'en', format: 'ttl', root: 'lorem', dir: 'up' }
182
182
  assert_response 200
183
- assert_equal @response.content_type, 'text/turtle'
183
+ assert_equal @response.media_type, 'text/turtle'
184
184
  assert @response.body.include?(<<-EOS)
185
185
  :lorem a skos:Concept;
186
186
  skos:prefLabel "Lorem"@en;
@@ -210,7 +210,7 @@ boot:
210
210
 
211
211
  get :show, params: { lang: 'en', format: 'rdf', root: 'root' }
212
212
  assert_response 200
213
- assert_equal @response.content_type, 'application/rdf+xml'
213
+ assert_equal @response.media_type, 'application/rdf+xml'
214
214
  end
215
215
 
216
216
  test 'root parameter handling' do
@@ -357,7 +357,7 @@ boot:
357
357
  test 'avoid duplication' do # in response to a bug report
358
358
  get :show, params: { lang: 'en', format: 'ttl', root: 'uno', dir: 'up' }
359
359
  assert_response 200
360
- assert_equal 'text/turtle', @response.content_type
360
+ assert_equal 'text/turtle', @response.media_type
361
361
  assert @response.body.include?(<<-EOS)
362
362
  :bravo a skos:Concept;
363
363
  skos:prefLabel "Bravo"@en;
@@ -69,7 +69,7 @@ class ClientEditConceptsTest < ActionDispatch::IntegrationTest
69
69
  page.click_link_or_button('Speichern')
70
70
  assert page.has_css?('.alert.alert-success')
71
71
  # return to edit mode
72
- page.click_link_or_button('Weiterbearbeiten')
72
+ page.click_link_or_button('Bearbeiten')
73
73
  assert page.has_css?('#edit_concept')
74
74
 
75
75
  section = page.find('#note_skos_definitions_data')
@@ -51,9 +51,9 @@ class ConceptCollectionAssignmentTest < ActionDispatch::IntegrationTest
51
51
  click_link_or_button 'Save'
52
52
 
53
53
  # there should be two collections
54
- assert_equal 2, page.all('#assigned_collections ul li a').size
54
+ assert_equal 2, page.all('#collection_member_bases ul li a').size
55
55
 
56
- within('#assigned_collections') do
56
+ within('#collection_member_bases') do
57
57
  assert page.has_content? 'Sports'
58
58
  assert page.has_content? 'Hobbies'
59
59
  end
@@ -64,9 +64,9 @@ class ConceptCollectionAssignmentTest < ActionDispatch::IntegrationTest
64
64
  click_link_or_button 'Save'
65
65
 
66
66
  # there should be one collection left
67
- assert_equal 1, page.all('#assigned_collections ul li a').size
67
+ assert_equal 1, page.all('#collection_member_bases ul li a').size
68
68
 
69
- within('#assigned_collections') do
69
+ within('#collection_member_bases') do
70
70
  assert page.has_content? 'Sports'
71
71
  refute page.has_content? 'Hobbies'
72
72
  end
@@ -77,9 +77,9 @@ class ConceptCollectionAssignmentTest < ActionDispatch::IntegrationTest
77
77
  click_link_or_button 'Save'
78
78
 
79
79
  # there should be no collections anymore
80
- assert_equal 0, page.all('#assigned_collections ul li a').size
80
+ assert_equal 0, page.all('#collection_member_bases ul li a').size
81
81
 
82
- within('#assigned_collections') do
82
+ within('#collection_member_bases') do
83
83
  refute page.has_content?('Sports'), 'Sports should be removed'
84
84
  refute page.has_content?('Hobbies'), 'Hobbies should be removed'
85
85
  end
@@ -101,9 +101,9 @@ class SearchTest < ActionDispatch::IntegrationTest
101
101
  with: 'Air'
102
102
  click_button 'Save'
103
103
 
104
- Iqvoc::Concept.base_class.third.update_attributes published_at: Date.today
105
- Iqvoc::Concept.base_class.fourth.update_attributes published_at: Date.today
106
- Note::Annotated::Base.where(predicate: "created").first.update_attributes value: (Date.today - 10.days).to_s
104
+ Iqvoc::Concept.base_class.third.update(published_at: Date.today)
105
+ Iqvoc::Concept.base_class.fourth.update(published_at: Date.today)
106
+ Note::Annotated::Base.where(predicate: "created").first.update(value: (Date.today - 10.days).to_s)
107
107
 
108
108
  visit search_path(lang: 'en', format: 'html')
109
109
  find('#t').select 'Labels'
@@ -16,12 +16,12 @@
16
16
  require File.expand_path('test_helper', File.dirname(__FILE__))
17
17
  require 'capybara/rails'
18
18
  require 'capybara/dsl'
19
- require 'capybara/poltergeist'
19
+ require 'capybara/cuprite'
20
20
  require 'webmock'
21
21
  require File.expand_path('authentication', File.dirname(__FILE__))
22
22
 
23
23
  Capybara.server = :webrick
24
- Capybara.javascript_driver = :poltergeist
24
+ Capybara.javascript_driver = :cuprite
25
25
 
26
26
  WebMock.allow_net_connect! # required for integration tests
27
27
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  require File.join(File.expand_path(File.dirname(__FILE__)), '../test_helper')
18
18
 
19
- class RDFSyncTest < ActiveSupport::TestCase
19
+ class RdfSyncTest < ActiveSupport::TestCase
20
20
  setup do
21
21
  @rdf = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
22
22
  @skos = 'http://www.w3.org/2004/02/skos/core#'
@@ -32,7 +32,7 @@ class RDFSyncTest < ActiveSupport::TestCase
32
32
  end
33
33
  @view_context = FakeViewContext.new
34
34
 
35
- @sync = RDFSyncService.new(@base_url, @target_host, username: @username,
35
+ @sync = RdfSyncService.new(@base_url, @target_host, username: @username,
36
36
  view_context: @view_context)
37
37
 
38
38
  @concepts = 1.upto(15).map do |i|
@@ -104,7 +104,7 @@ class RDFSyncTest < ActiveSupport::TestCase
104
104
  concept_count = concepts.count
105
105
  batch_count = 3
106
106
 
107
- sync = RDFSyncService.new(@base_url, @target_host, username: @username,
107
+ sync = RdfSyncService.new(@base_url, @target_host, username: @username,
108
108
  batch_size: (concept_count / batch_count).ceil,
109
109
  view_context: @view_context)
110
110
 
@@ -0,0 +1,7 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../test_helper')
2
+
3
+ class ZeitwerkComplianceTest < ActiveSupport::TestCase
4
+ test "eager loads all files without errors" do
5
+ assert_nothing_raised { Rails.application.eager_load! }
6
+ end
7
+ end