invenio-app-rdm 5.0.0.dev0__py2.py3-none-any.whl → 14.0.0b4.dev4__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. invenio_app_rdm/__init__.py +13 -4
  2. invenio_app_rdm/administration/__init__.py +8 -0
  3. invenio_app_rdm/administration/audit_logs/__init__.py +12 -0
  4. invenio_app_rdm/administration/audit_logs/audit_logs.py +81 -0
  5. invenio_app_rdm/administration/domains/__init__.py +22 -0
  6. invenio_app_rdm/administration/domains/domains.py +159 -0
  7. invenio_app_rdm/administration/moderation/__init__.py +11 -0
  8. invenio_app_rdm/administration/moderation/requests.py +175 -0
  9. invenio_app_rdm/administration/records/__init__.py +15 -0
  10. invenio_app_rdm/administration/records/records.py +163 -0
  11. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/audit_logs.html +14 -0
  12. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/domains_search.html +13 -0
  13. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/records/drafts.html +14 -0
  14. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/records/records.html +14 -0
  15. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests.html +14 -0
  16. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/requests_details.html +93 -0
  17. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/user_moderation.html +14 -0
  18. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/user_moderation_details.html +14 -0
  19. invenio_app_rdm/administration/templates/semantic-ui/invenio_app_rdm/administration/users_search.html +14 -0
  20. invenio_app_rdm/administration/user_moderation/__init__.py +11 -0
  21. invenio_app_rdm/administration/user_moderation/user_moderation.py +175 -0
  22. invenio_app_rdm/administration/users/__init__.py +12 -0
  23. invenio_app_rdm/administration/users/users.py +130 -0
  24. invenio_app_rdm/administration/views/__init__.py +11 -0
  25. invenio_app_rdm/administration/views/ui.py +21 -0
  26. invenio_app_rdm/cli.py +95 -0
  27. invenio_app_rdm/communities_ui/__init__.py +9 -0
  28. invenio_app_rdm/communities_ui/searchapp.py +27 -0
  29. invenio_app_rdm/communities_ui/sitemap.py +63 -0
  30. invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/collections/collection.html +60 -0
  31. invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/collections/macros.html +43 -0
  32. invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/details/browse/index.html +59 -0
  33. invenio_app_rdm/communities_ui/templates/semantic-ui/invenio_communities/records/index.html +24 -0
  34. invenio_app_rdm/communities_ui/views/__init__.py +13 -0
  35. invenio_app_rdm/communities_ui/views/communities.py +206 -0
  36. invenio_app_rdm/communities_ui/views/ui.py +93 -0
  37. invenio_app_rdm/config.py +1167 -100
  38. invenio_app_rdm/ext.py +157 -0
  39. invenio_app_rdm/fixtures/__init__.py +56 -0
  40. invenio_app_rdm/fixtures/data/oai_sets.yaml +6 -0
  41. invenio_app_rdm/fixtures/oai_sets.py +20 -0
  42. invenio_app_rdm/fixtures/pages/.gitkeep +1 -0
  43. invenio_app_rdm/fixtures/pages.py +76 -0
  44. invenio_app_rdm/records_ui/previewer/__init__.py +9 -0
  45. invenio_app_rdm/records_ui/previewer/iiif_simple.py +51 -0
  46. invenio_app_rdm/records_ui/searchapp.py +70 -0
  47. invenio_app_rdm/records_ui/sitemap.py +44 -0
  48. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/deposit.html +64 -15
  49. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html +417 -172
  50. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/access-form.html +64 -0
  51. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/citation.html +7 -9
  52. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/contact.html +2 -1
  53. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/creatibutors.html +51 -0
  54. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/description.html +13 -2
  55. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/details.html +330 -22
  56. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/doi.html +5 -23
  57. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/meta.html +36 -0
  58. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/citations.html +6 -0
  59. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/communities.html +34 -0
  60. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/details.html +36 -0
  61. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/export.html +34 -0
  62. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/external_resources.html +55 -0
  63. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/keywords_subjects.html +20 -0
  64. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/licenses.html +78 -0
  65. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/locations.html +23 -0
  66. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/manage_menu.html +42 -0
  67. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/metrics.html +16 -0
  68. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/technical_metadata.html +21 -0
  69. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar/versions.html +26 -0
  70. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/side_bar.html +4 -45
  71. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/stats.html +112 -90
  72. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/subjects.html +37 -7
  73. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/draft_not_found.html +17 -0
  74. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/export.html +9 -8
  75. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/iiif_preview.html +3 -7
  76. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/creatibutors.html +98 -39
  77. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/detail.html +280 -43
  78. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/doi.html +36 -0
  79. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/files.html +176 -71
  80. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/locations.html +62 -0
  81. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/stats_popup.html +21 -0
  82. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/version.html +3 -2
  83. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/restricted_with_doi_tombstone.html +33 -0
  84. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/search.html +3 -89
  85. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/tombstone.html +55 -12
  86. invenio_app_rdm/records_ui/utils.py +127 -2
  87. invenio_app_rdm/records_ui/views/__init__.py +123 -38
  88. invenio_app_rdm/records_ui/views/decorators.py +414 -120
  89. invenio_app_rdm/records_ui/views/deposits.py +569 -75
  90. invenio_app_rdm/records_ui/views/filters.py +125 -34
  91. invenio_app_rdm/records_ui/views/records.py +425 -76
  92. invenio_app_rdm/redirector/__init__.py +8 -0
  93. invenio_app_rdm/redirector/resource.py +106 -0
  94. invenio_app_rdm/redirector/views.py +18 -0
  95. invenio_app_rdm/requests_ui/__init__.py +9 -0
  96. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-inclusion/index.html +14 -0
  97. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-invitation/community_dashboard.html +38 -0
  98. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-invitation/user_dashboard.html +26 -0
  99. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/community-submission/index.html +129 -0
  100. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/file-modification/index.html +88 -0
  101. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/guest-access-request/index.html +66 -0
  102. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/macros/request_header.html +78 -0
  103. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/record-deletion/index.html +95 -0
  104. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/subcommunity/index.html +49 -0
  105. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/subcommunity-invitation/index.html +49 -0
  106. invenio_app_rdm/requests_ui/templates/semantic-ui/invenio_requests/user-access-request/index.html +59 -0
  107. invenio_app_rdm/requests_ui/views/__init__.py +13 -0
  108. invenio_app_rdm/requests_ui/views/requests.py +374 -0
  109. invenio_app_rdm/requests_ui/views/ui.py +72 -0
  110. invenio_app_rdm/tasks.py +45 -0
  111. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/AuditLogActions.js +136 -0
  112. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/ViewJson.js +35 -0
  113. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/ViewRecentChanges.js +119 -0
  114. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/index.js +31 -0
  115. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/search/SearchResultItemLayout.js +87 -0
  116. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/auditLogs/search/index.js +9 -0
  117. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/CompareRevisionsDropdown.js +89 -0
  118. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUser.js +92 -0
  119. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/ImpersonateUserForm.js +199 -0
  120. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/RevisionsDiffViewer.js +80 -0
  121. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaAction.js +109 -0
  122. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/SetQuotaForm.js +196 -0
  123. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/components/index.js +9 -0
  124. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/index.js +27 -0
  125. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/search/SearchResultItemLayout.js +185 -0
  126. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/domains/search/index.js +9 -0
  127. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/drafts/index.js +32 -0
  128. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/CompareRevisions.js +129 -0
  129. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RecordActions.js +75 -0
  130. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RecordResourceActions.js +185 -0
  131. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RemovalReasonsSelect.js +85 -0
  132. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/RestoreConfirmation.js +108 -0
  133. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/TombstoneForm.js +212 -0
  134. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/api.js +38 -0
  135. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/index.js +9 -0
  136. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/api/routes.js +30 -0
  137. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/index.js +40 -0
  138. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/AdministrationSearchLayout.js +56 -0
  139. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/RecordSearchLayout.js +84 -0
  140. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/SearchResultItemLayout.js +171 -0
  141. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/filters/DeletionStatusFilter.js +121 -0
  142. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/filters/index.js +9 -0
  143. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/records/search/index.js +10 -0
  144. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchResultItem.js +79 -0
  145. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/RequestsSearchbarLayout.js +48 -0
  146. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/requests/index.js +22 -0
  147. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/ModerationActions.js +103 -0
  148. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/index.js +29 -0
  149. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/SearchResultItemLayout.js +151 -0
  150. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/UserModerationBulkActions.js +0 -0
  151. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/UserModerationSearchLayout.js +56 -0
  152. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/userModeration/search/index.js +10 -0
  153. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/UserActions.js +263 -0
  154. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/api/api.js +42 -0
  155. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/api/index.js +8 -0
  156. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/api/routes.js +38 -0
  157. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/index.js +30 -0
  158. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/SearchResultItemLayout.js +202 -0
  159. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/UserSearchLayout.js +81 -0
  160. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/filters/UserStatusFilterComponent.js +114 -0
  161. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/filters/index.js +1 -0
  162. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/administration/users/search/index.js +10 -0
  163. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/collectionRecordsSearch/index.js +61 -0
  164. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSearchAppLayout.js +84 -0
  165. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSearchBarElement.js +44 -0
  166. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/CommunityRecordsSingleSearchBarElement.js +46 -0
  167. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/components.js +3 -0
  168. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/communityRecordsSearch/index.js +66 -0
  169. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CompactStats.js +52 -0
  170. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/CopyButton.js +142 -0
  171. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayPartOfCommunities.js +78 -0
  172. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayVerifiedCommunity.js +54 -0
  173. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/FileModificationUntil.js +45 -0
  174. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionModal.js +354 -0
  175. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion/DeletionRadioGroup.js +44 -0
  176. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordDeletion.js +81 -0
  177. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordsResultsListItem.js +189 -0
  178. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/RDMDepositForm.js +795 -440
  179. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/ShareDraftButton.js +65 -0
  180. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/config.js +48 -0
  181. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/deposit/index.js +27 -11
  182. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/frontpage/RecordsList.js +165 -0
  183. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/frontpage/index.js +23 -0
  184. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/AccessRequestForm.js +254 -0
  185. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagement.js +179 -0
  186. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/CommunitiesManagementDropdown.js +186 -0
  187. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/EditButton.js +36 -15
  188. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ExportDropdown.js +68 -0
  189. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageButton.js +140 -0
  190. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ManageDefaultBrandingAction/ManageDefaultBrandingAction.js +129 -0
  191. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunitiesModal.js +63 -0
  192. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunitiesSearch.js +89 -0
  193. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/PendingCommunitiesModal/PendingCommunityRequestItem.js +33 -0
  194. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCitationField.js +162 -0
  195. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesList.js +150 -0
  196. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesListModal.js +90 -0
  197. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesSearch.js +109 -0
  198. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/RecordCommunitiesSearchItem.js +58 -0
  199. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitiesListModal/index.js +3 -0
  200. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordCommunitySubmission/RecordCommunitySubmissionModal.js +171 -0
  201. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordManagement.js +123 -42
  202. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RecordVersionsList.js +153 -78
  203. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/RemoveFromCommunity/RemoveFromCommunityAction.js +188 -0
  204. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/AccessDropdown.js +93 -0
  205. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/CreateAccessLink.js +111 -0
  206. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksSearchItem.js +170 -0
  207. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksSearchResultContainer.js +236 -0
  208. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessLinks/LinksTab.js +106 -0
  209. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessRequests/AccessRequestsTab.js +239 -0
  210. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/AccessUsersGroups.js +178 -0
  211. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/AddUserGroupAccessModal.js +172 -0
  212. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/GroupsTab.js +88 -0
  213. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/PeopleTab.js +88 -0
  214. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/AccessUsersGroups/UserGroupAccessSearchResultItem.js +158 -0
  215. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/ShareButton.js +62 -0
  216. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/ShareModal.js +252 -0
  217. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareOptions/api/api.js +39 -0
  218. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/access.js +24 -0
  219. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/index.js +102 -28
  220. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/theme.js +131 -0
  221. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/index.js +13 -0
  222. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/overridableRegistry/mapping.js +12 -0
  223. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/AccessRequestExpiration.js +61 -0
  224. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/index.js +1 -0
  225. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineEdit.js +177 -0
  226. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/AccessRequestTimelineRead.js +50 -0
  227. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/requests/timeline/overrides/TimelineFeedHeader.js +34 -0
  228. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/search/components.js +181 -226
  229. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/search/index.js +50 -16
  230. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/subcommunity/browse.js +28 -0
  231. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/theme.js +164 -0
  232. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/base.js +210 -0
  233. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/communities.js +56 -0
  234. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/requests.js +78 -0
  235. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads.js +210 -0
  236. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/ComputerTabletUploadsItem.js +155 -0
  237. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/MobileUploadsItem.js +154 -0
  238. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/utils.js +130 -0
  239. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/file_uploader/uppy.less +37 -0
  240. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page/creatibutors.less +54 -0
  241. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page/licenses.less +74 -0
  242. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/previewer/iiif_simple.less +16 -0
  243. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/form.overrides +170 -4
  244. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/form.variables +3 -5
  245. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/grid.overrides +113 -14
  246. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/grid.variables +3 -5
  247. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/menu.overrides +395 -4
  248. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/menu.variables +3 -5
  249. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/message.overrides +34 -10
  250. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/message.variables +6 -4
  251. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/table.overrides +185 -0
  252. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/collections/table.variables +1 -0
  253. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/button.overrides +112 -4
  254. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/button.variables +5 -4
  255. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/container.overrides +127 -4
  256. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/container.variables +6 -4
  257. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/header.overrides +61 -4
  258. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/header.variables +3 -5
  259. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/icon.overrides +29 -4
  260. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/icon.variables +3 -5
  261. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/image.overrides +115 -0
  262. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/image.variables +4 -0
  263. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/input.overrides +50 -4
  264. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/input.variables +5 -4
  265. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/label.overrides +116 -0
  266. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/label.variables +0 -0
  267. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/list.overrides +73 -27
  268. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/list.variables +3 -5
  269. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/segment.overrides +86 -4
  270. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/elements/segment.variables +3 -5
  271. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/reset.overrides +3 -5
  272. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/reset.variables +3 -5
  273. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides +560 -4
  274. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.variables +142 -4
  275. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.overrides +161 -0
  276. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/accordion.variables +9 -0
  277. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/checkbox.overrides +3 -5
  278. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/checkbox.variables +3 -5
  279. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/dropdown.overrides +116 -12
  280. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/dropdown.variables +10 -0
  281. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/modal.overrides +151 -0
  282. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/modal.variables +5 -0
  283. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/search.overrides +7 -0
  284. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/search.variables +0 -0
  285. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/tab.overrides +3 -0
  286. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/tab.variables +6 -0
  287. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/transition.overrides +67 -0
  288. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/modules/transition.variables +3 -0
  289. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/theme.less +71 -0
  290. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/card.overrides +168 -0
  291. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/card.variables +2 -0
  292. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/feed.overrides +463 -0
  293. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/feed.variables +1 -0
  294. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/item.overrides +175 -0
  295. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/views/item.variables +0 -0
  296. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/i18next.js +37 -0
  297. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/_generatedTranslations.js +66 -0
  298. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/messages.po +951 -0
  299. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ar/translations.json +307 -0
  300. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/messages.po +895 -0
  301. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/bg/translations.json +283 -0
  302. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/messages.po +896 -0
  303. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ca/translations.json +283 -0
  304. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/messages.po +961 -0
  305. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/cs/translations.json +295 -0
  306. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/messages.po +897 -0
  307. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/da/translations.json +283 -0
  308. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/messages.po +966 -0
  309. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/de/translations.json +283 -0
  310. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/messages.po +898 -0
  311. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/el/translations.json +283 -0
  312. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/en/messages.po +1009 -0
  313. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/en/translations.json +316 -0
  314. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/messages.po +960 -0
  315. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/es/translations.json +283 -0
  316. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/messages.po +896 -0
  317. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/et/translations.json +283 -0
  318. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/messages.po +895 -0
  319. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fa/translations.json +283 -0
  320. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/messages.po +960 -0
  321. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/fr/translations.json +283 -0
  322. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/messages.po +901 -0
  323. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hr/translations.json +289 -0
  324. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/messages.po +952 -0
  325. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/hu/translations.json +283 -0
  326. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/index.js +20 -0
  327. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/messages.po +905 -0
  328. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/it/translations.json +283 -0
  329. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/messages.po +889 -0
  330. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ja/translations.json +277 -0
  331. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/messages.po +895 -0
  332. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ka/translations.json +283 -0
  333. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ko/messages.po +889 -0
  334. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ko/translations.json +277 -0
  335. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/messages.po +907 -0
  336. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/lt/translations.json +295 -0
  337. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/messages.po +895 -0
  338. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/no/translations.json +283 -0
  339. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/messages.po +910 -0
  340. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pl/translations.json +295 -0
  341. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/messages.po +901 -0
  342. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/pt/translations.json +283 -0
  343. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/messages.po +908 -0
  344. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ro/translations.json +289 -0
  345. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/messages.po +958 -0
  346. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/ru/translations.json +295 -0
  347. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/messages.po +908 -0
  348. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sk/translations.json +295 -0
  349. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/messages.po +951 -0
  350. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/sv/translations.json +283 -0
  351. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/messages.po +952 -0
  352. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/tr/translations.json +283 -0
  353. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/messages.po +910 -0
  354. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/uk/translations.json +295 -0
  355. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/messages.po +891 -0
  356. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_CN/translations.json +277 -0
  357. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/messages.po +889 -0
  358. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/messages/zh_TW/translations.json +277 -0
  359. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/package.json +18 -0
  360. invenio_app_rdm/theme/assets/semantic-ui/translations/invenio_app_rdm/translations.pot +1009 -0
  361. invenio_app_rdm/theme/static/icons/licenses/cc-by-icon.svg +52 -0
  362. invenio_app_rdm/theme/static/icons/licenses/cc-by-nc-eu-icon.svg +44 -0
  363. invenio_app_rdm/theme/static/icons/licenses/cc-by-nc-icon.svg +67 -0
  364. invenio_app_rdm/theme/static/icons/licenses/cc-by-nc-nd-eu-icon.svg +57 -0
  365. invenio_app_rdm/theme/static/icons/licenses/cc-by-nc-nd-icon.svg +93 -0
  366. invenio_app_rdm/theme/static/icons/licenses/cc-by-nc-sa-eu-icon.svg +55 -0
  367. invenio_app_rdm/theme/static/icons/licenses/cc-by-nc-sa-icon.svg +55 -0
  368. invenio_app_rdm/theme/static/icons/licenses/cc-by-nd-icon.svg +75 -0
  369. invenio_app_rdm/theme/static/icons/licenses/cc-by-sa-icon.svg +72 -0
  370. invenio_app_rdm/theme/static/icons/licenses/cc-cc0-icon.svg +29 -0
  371. invenio_app_rdm/theme/static/icons/licenses/cc-pddc-icon.svg +25 -0
  372. invenio_app_rdm/theme/static/images/gnd-icon.svg +27 -0
  373. invenio_app_rdm/theme/static/images/ror-icon.svg +14 -0
  374. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/administration_page.html +19 -0
  375. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/default_static_page.html +33 -0
  376. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/files_integrity_report/email/files_integrity_report.html +31 -0
  377. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/footer.html +32 -78
  378. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/frontpage.html +41 -176
  379. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header.html +122 -65
  380. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header_frontpage.html +18 -14
  381. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/header_login.html +130 -38
  382. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.de.html +5 -4
  383. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.en.html +13 -8
  384. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/search.sv.html +254 -0
  385. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/statistics.en.html +197 -0
  386. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/statistics.sv.html +196 -0
  387. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/versioning.en.html +149 -0
  388. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/help/versioning.sv.html +143 -0
  389. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/intro_section.html +98 -0
  390. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/javascript.html +12 -0
  391. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/macros/records_list.html +50 -0
  392. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/page.html +36 -0
  393. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/page_cover.html +13 -0
  394. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/robots.txt +15 -0
  395. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/searchbar.html +63 -0
  396. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/settings/notifications.html +17 -0
  397. invenio_app_rdm/theme/templates/semantic-ui/invenio_app_rdm/site_footer.html +29 -0
  398. invenio_app_rdm/theme/templates/semantic-ui/invenio_communities/default_static_page.html +26 -0
  399. invenio_app_rdm/theme/templates/semantic-ui/invenio_previewer/latest_record.html +18 -0
  400. invenio_app_rdm/theme/templates/semantic-ui/invenio_previewer/rdm_abstract_previewer.html +30 -0
  401. invenio_app_rdm/theme/templates/themes/default/invenio_app_rdm/header.html +147 -0
  402. invenio_app_rdm/theme/templates/themes/default/invenio_app_rdm/site_footer.html +42 -0
  403. invenio_app_rdm/theme/views.py +108 -26
  404. invenio_app_rdm/theme/webpack.py +76 -32
  405. invenio_app_rdm/translations/ar/LC_MESSAGES/messages.mo +0 -0
  406. invenio_app_rdm/translations/ar/LC_MESSAGES/messages.po +1389 -0
  407. invenio_app_rdm/translations/bg/LC_MESSAGES/messages.mo +0 -0
  408. invenio_app_rdm/translations/bg/LC_MESSAGES/messages.po +1361 -0
  409. invenio_app_rdm/translations/ca/LC_MESSAGES/messages.mo +0 -0
  410. invenio_app_rdm/translations/ca/LC_MESSAGES/messages.po +1362 -0
  411. invenio_app_rdm/translations/cs/LC_MESSAGES/messages.mo +0 -0
  412. invenio_app_rdm/translations/cs/LC_MESSAGES/messages.po +1398 -0
  413. invenio_app_rdm/translations/da/LC_MESSAGES/messages.mo +0 -0
  414. invenio_app_rdm/translations/da/LC_MESSAGES/messages.po +1363 -0
  415. invenio_app_rdm/translations/de/LC_MESSAGES/messages.mo +0 -0
  416. invenio_app_rdm/translations/de/LC_MESSAGES/messages.po +1410 -0
  417. invenio_app_rdm/translations/el/LC_MESSAGES/messages.mo +0 -0
  418. invenio_app_rdm/translations/el/LC_MESSAGES/messages.po +1364 -0
  419. invenio_app_rdm/translations/es/LC_MESSAGES/messages.mo +0 -0
  420. invenio_app_rdm/translations/es/LC_MESSAGES/messages.po +1389 -0
  421. invenio_app_rdm/translations/et/LC_MESSAGES/messages.mo +0 -0
  422. invenio_app_rdm/translations/et/LC_MESSAGES/messages.po +1364 -0
  423. invenio_app_rdm/translations/fa/LC_MESSAGES/messages.mo +0 -0
  424. invenio_app_rdm/translations/fa/LC_MESSAGES/messages.po +1361 -0
  425. invenio_app_rdm/translations/fr/LC_MESSAGES/messages.mo +0 -0
  426. invenio_app_rdm/translations/fr/LC_MESSAGES/messages.po +1390 -0
  427. invenio_app_rdm/translations/hr/LC_MESSAGES/messages.mo +0 -0
  428. invenio_app_rdm/translations/hr/LC_MESSAGES/messages.po +1361 -0
  429. invenio_app_rdm/translations/hu/LC_MESSAGES/messages.mo +0 -0
  430. invenio_app_rdm/translations/hu/LC_MESSAGES/messages.po +1402 -0
  431. invenio_app_rdm/translations/it/LC_MESSAGES/messages.mo +0 -0
  432. invenio_app_rdm/translations/it/LC_MESSAGES/messages.po +1366 -0
  433. invenio_app_rdm/translations/ja/LC_MESSAGES/messages.mo +0 -0
  434. invenio_app_rdm/translations/ja/LC_MESSAGES/messages.po +1361 -0
  435. invenio_app_rdm/translations/ka/LC_MESSAGES/messages.mo +0 -0
  436. invenio_app_rdm/translations/ka/LC_MESSAGES/messages.po +1361 -0
  437. invenio_app_rdm/translations/ko/LC_MESSAGES/messages.mo +0 -0
  438. invenio_app_rdm/translations/ko/LC_MESSAGES/messages.po +1361 -0
  439. invenio_app_rdm/translations/lt/LC_MESSAGES/messages.mo +0 -0
  440. invenio_app_rdm/translations/lt/LC_MESSAGES/messages.po +1361 -0
  441. invenio_app_rdm/translations/messages.pot +1371 -51
  442. invenio_app_rdm/translations/no/LC_MESSAGES/messages.mo +0 -0
  443. invenio_app_rdm/translations/no/LC_MESSAGES/messages.po +1361 -0
  444. invenio_app_rdm/translations/pl/LC_MESSAGES/messages.mo +0 -0
  445. invenio_app_rdm/translations/pl/LC_MESSAGES/messages.po +1361 -0
  446. invenio_app_rdm/translations/pt/LC_MESSAGES/messages.mo +0 -0
  447. invenio_app_rdm/translations/pt/LC_MESSAGES/messages.po +1361 -0
  448. invenio_app_rdm/translations/ro/LC_MESSAGES/messages.mo +0 -0
  449. invenio_app_rdm/translations/ro/LC_MESSAGES/messages.po +1391 -0
  450. invenio_app_rdm/translations/ru/LC_MESSAGES/messages.mo +0 -0
  451. invenio_app_rdm/translations/ru/LC_MESSAGES/messages.po +1384 -0
  452. invenio_app_rdm/translations/sk/LC_MESSAGES/messages.mo +0 -0
  453. invenio_app_rdm/translations/sk/LC_MESSAGES/messages.po +1362 -0
  454. invenio_app_rdm/translations/sv/LC_MESSAGES/messages.mo +0 -0
  455. invenio_app_rdm/translations/sv/LC_MESSAGES/messages.po +1400 -0
  456. invenio_app_rdm/translations/tr/LC_MESSAGES/messages.mo +0 -0
  457. invenio_app_rdm/translations/tr/LC_MESSAGES/messages.po +1340 -63
  458. invenio_app_rdm/translations/uk/LC_MESSAGES/messages.mo +0 -0
  459. invenio_app_rdm/translations/uk/LC_MESSAGES/messages.po +1363 -0
  460. invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
  461. invenio_app_rdm/translations/zh_CN/LC_MESSAGES/messages.po +1363 -0
  462. invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
  463. invenio_app_rdm/translations/zh_TW/LC_MESSAGES/messages.po +1361 -0
  464. invenio_app_rdm/upgrade_scripts/fix_migrated_records_from_1_0_to_2_0.py +1 -0
  465. invenio_app_rdm/upgrade_scripts/fix_migrated_records_from_8_0_to_9_0.py +90 -0
  466. invenio_app_rdm/upgrade_scripts/migrate_10_0_to_11_0.py +47 -0
  467. invenio_app_rdm/upgrade_scripts/migrate_11_0_to_12_0.py +205 -0
  468. invenio_app_rdm/upgrade_scripts/migrate_12_0_to_13_0.py +235 -0
  469. invenio_app_rdm/upgrade_scripts/migrate_13_0_to_14_0.py +268 -0
  470. invenio_app_rdm/upgrade_scripts/migrate_2_0_to_3_0.py +7 -3
  471. invenio_app_rdm/upgrade_scripts/migrate_3_0_to_4_0.py +26 -10
  472. invenio_app_rdm/upgrade_scripts/migrate_4_0_to_6_0.py +395 -0
  473. invenio_app_rdm/upgrade_scripts/migrate_6_0_to_7_0.py +161 -0
  474. invenio_app_rdm/upgrade_scripts/migrate_7_0_to_8_0.py +153 -0
  475. invenio_app_rdm/upgrade_scripts/migrate_8_0_to_9_0.py +98 -0
  476. invenio_app_rdm/upgrade_scripts/migrate_9_0_to_10_0.py +43 -0
  477. invenio_app_rdm/users/schemas.py +27 -0
  478. invenio_app_rdm/users_ui/__init__.py +9 -0
  479. invenio_app_rdm/users_ui/searchapp.py +53 -0
  480. invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/base.html +21 -0
  481. invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/communities.html +25 -0
  482. invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/header.html +46 -0
  483. invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/requests.html +24 -0
  484. invenio_app_rdm/users_ui/templates/semantic-ui/invenio_app_rdm/users/uploads.html +25 -0
  485. invenio_app_rdm/users_ui/views/__init__.py +14 -0
  486. invenio_app_rdm/users_ui/views/dashboard.py +59 -0
  487. invenio_app_rdm/users_ui/views/ui.py +68 -0
  488. invenio_app_rdm/utils/files.py +120 -0
  489. invenio_app_rdm/views.py +21 -0
  490. invenio_app_rdm-14.0.0b4.dev4.dist-info/METADATA +627 -0
  491. invenio_app_rdm-14.0.0b4.dev4.dist-info/RECORD +508 -0
  492. {invenio_app_rdm-5.0.0.dev0.dist-info → invenio_app_rdm-14.0.0b4.dev4.dist-info}/WHEEL +1 -1
  493. invenio_app_rdm-14.0.0b4.dev4.dist-info/entry_points.txt +44 -0
  494. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/contributors.html +0 -32
  495. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/creators.html +0 -30
  496. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/details/licenses.html +0 -35
  497. invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/search_deposit.html +0 -103
  498. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareButton.js +0 -43
  499. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/landing_page/ShareModal.js +0 -188
  500. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_records_search/components.js +0 -361
  501. invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_records_search/index.js +0 -41
  502. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/deposit.less +0 -126
  503. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/export_page.less +0 -20
  504. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/footer.less +0 -83
  505. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/frontpage.less +0 -95
  506. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/landing_page.less +0 -212
  507. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/navbar.less +0 -216
  508. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/search.less +0 -41
  509. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme.less +0 -420
  510. invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/variables.less +0 -41
  511. invenio_app_rdm/theme/static/images/logo-bnl.png +0 -0
  512. invenio_app_rdm/theme/static/images/logo-caltechlibrary.png +0 -0
  513. invenio_app_rdm/theme/static/images/logo-cd2h.png +0 -0
  514. invenio_app_rdm/theme/static/images/logo-cern.png +0 -0
  515. invenio_app_rdm/theme/static/images/logo-cottagelabs.png +0 -0
  516. invenio_app_rdm/theme/static/images/logo-data-futures.png +0 -0
  517. invenio_app_rdm/theme/static/images/logo-eko-konnect.png +0 -0
  518. invenio_app_rdm/theme/static/images/logo-geo.svg +0 -1337
  519. invenio_app_rdm/theme/static/images/logo-hzdr.png +0 -0
  520. invenio_app_rdm/theme/static/images/logo-infn.svg +0 -28
  521. invenio_app_rdm/theme/static/images/logo-jrc.svg +0 -1905
  522. invenio_app_rdm/theme/static/images/logo-northwestern-university.png +0 -0
  523. invenio_app_rdm/theme/static/images/logo-openaire.png +0 -0
  524. invenio_app_rdm/theme/static/images/logo-tind.png +0 -0
  525. invenio_app_rdm/theme/static/images/logo-tu-graz.svg +0 -25
  526. invenio_app_rdm/theme/static/images/logo-tu-wien.svg +0 -23
  527. invenio_app_rdm/theme/static/images/logo-tubitak.svg +0 -49
  528. invenio_app_rdm/theme/static/images/logo-uni-hamburg.png +0 -0
  529. invenio_app_rdm/theme/static/images/logo-uni-munster.png +0 -0
  530. invenio_app_rdm/theme/static/images/logo-wacren.png +0 -0
  531. invenio_app_rdm/translations/en/LC_MESSAGES/messages.mo +0 -0
  532. invenio_app_rdm/translations/en/LC_MESSAGES/messages.po +0 -29
  533. invenio_app_rdm/version.py +0 -23
  534. invenio_app_rdm-5.0.0.dev0.dist-info/AUTHORS.rst +0 -11
  535. invenio_app_rdm-5.0.0.dev0.dist-info/METADATA +0 -75
  536. invenio_app_rdm-5.0.0.dev0.dist-info/RECORD +0 -138
  537. invenio_app_rdm-5.0.0.dev0.dist-info/entry_points.txt +0 -13
  538. /invenio_app_rdm/{translations/.gitkeep → fixtures/data/pages.yaml} +0 -0
  539. {invenio_app_rdm-5.0.0.dev0.dist-info → invenio_app_rdm-14.0.0b4.dev4.dist-info/licenses}/LICENSE +0 -0
  540. {invenio_app_rdm-5.0.0.dev0.dist-info → invenio_app_rdm-14.0.0b4.dev4.dist-info}/top_level.txt +0 -0
@@ -1,47 +1,60 @@
1
1
  // This file is part of InvenioRDM
2
- // Copyright (C) 2020 CERN.
3
- // Copyright (C) 2020 Northwestern University.
4
- // Copyright (C) 2021 Graz University of Technology.
2
+ // Copyright (C) 2020-2025 CERN.
3
+ // Copyright (C) 2020-2022 Northwestern University.
4
+ // Copyright (C) 2021-2022 Graz University of Technology.
5
+ // Copyright (C) 2022-2024 KTH Royal Institute of Technology.
5
6
  //
6
7
  // Invenio App RDM is free software; you can redistribute it and/or modify it
7
8
  // under the terms of the MIT License; see LICENSE file for more details.
8
9
 
10
+ import { i18next } from "@translations/invenio_app_rdm/i18next";
9
11
  import _get from "lodash/get";
12
+ import _isEmpty from "lodash/isEmpty";
10
13
  import React, { Component, createRef, Fragment } from "react";
14
+ import { AccordionField, CustomFields } from "react-invenio-forms";
11
15
  import {
12
16
  AccessRightField,
17
+ DescriptionsField,
13
18
  CreatibutorsField,
14
19
  DatesField,
15
20
  DeleteButton,
16
- DepositFormApp,
17
- DepositFormTitle,
18
- DescriptionsField,
21
+ DepositStatusBox,
19
22
  FileUploader,
23
+ UppyUploader,
20
24
  FormFeedback,
21
25
  IdentifiersField,
22
- LanguagesField,
23
- LicenseField,
24
26
  PIDField,
25
27
  PreviewButton,
28
+ LanguagesField,
29
+ LicenseField,
26
30
  PublicationDateField,
27
31
  PublishButton,
28
32
  PublisherField,
33
+ ReferencesField,
29
34
  RelatedWorksField,
30
35
  ResourceTypeField,
31
- SaveButton,
36
+ SubjectsField,
32
37
  TitlesField,
33
38
  VersionField,
34
- } from "react-invenio-deposit";
35
- import { AccordionField } from "react-invenio-forms";
36
- import { Card, Container, Divider, Grid, Ref, Sticky } from "semantic-ui-react";
39
+ DepositFormApp,
40
+ CommunityHeader,
41
+ SaveButton,
42
+ } from "@js/invenio_rdm_records";
43
+ import { FundingField } from "@js/invenio_vocabularies";
44
+ import { Card, Container, Grid, Ref, Sticky } from "semantic-ui-react";
45
+ import PropTypes from "prop-types";
46
+ import Overridable from "react-overridable";
47
+ import { CopyrightsField } from "@js/invenio_rdm_records/src/deposit/fields/CopyrightsField/CopyrightsField";
48
+ import { ShareDraftButton } from "./ShareDraftButton";
49
+ import { depositFormSectionsConfig, severityChecksConfig } from "./config";
50
+ import { RecordDeletion } from "../components/RecordDeletion";
51
+ import { FileModificationUntil } from "../components/FileModificationUntil";
37
52
 
38
53
  export class RDMDepositForm extends Component {
39
54
  constructor(props) {
40
55
  super(props);
41
56
  this.config = props.config || {};
42
- // TODO: retrieve from backend
43
- this.config["canHaveMetadataOnlyRecords"] = true;
44
-
57
+ const { files, record } = this.props;
45
58
  // TODO: Make ALL vocabulary be generated by backend.
46
59
  // Currently, some vocabulary is generated by backend and some is
47
60
  // generated by frontend here. Iteration is faster and abstractions can be
@@ -51,197 +64,23 @@ export class RDMDepositForm extends Component {
51
64
  metadata: {
52
65
  ...this.config.vocabularies,
53
66
 
54
- titles: {
55
- ...this.config.vocabularies.titles,
56
- },
57
-
58
- descriptions: {
59
- type: [
60
- { text: "Abstract", value: "abstract" },
61
- { text: "Methods", value: "methods" },
62
- { text: "Series Information", value: "seriesinformation" },
63
- { text: "Table of Contents", value: "tableofcontents" },
64
- { text: "Technical Info", value: "technicalinfo" },
65
- { text: "Other", value: "other" },
66
- ],
67
- },
68
-
69
67
  creators: {
68
+ ...this.config.vocabularies.creators,
70
69
  type: [
71
- { text: "Person", value: "personal" },
72
- { text: "Organization", value: "organizational" },
73
- ],
74
- role: [
75
- { text: "Editor", value: "editor" },
76
- { text: "Data Curator", value: "datacurator" },
77
- { text: "Data Manager", value: "datamanager" },
78
- { text: "Project Manager", value: "projectmanager" },
70
+ { text: i18next.t("Person"), value: "personal" },
71
+ { text: i18next.t("Organization"), value: "organizational" },
79
72
  ],
80
73
  },
81
74
 
82
75
  contributors: {
76
+ ...this.config.vocabularies.contributors,
83
77
  type: [
84
- { text: "Person", value: "personal" },
85
- { text: "Organization", value: "organizational" },
86
- ],
87
- role: [
88
- { text: "Editor", value: "editor" },
89
- { text: "Data Curator", value: "datacurator" },
90
- { text: "Data Manager", value: "datamanager" },
91
- { text: "Project Manager", value: "projectmanager" },
92
- ],
93
- },
94
-
95
- dates: {
96
- type: [
97
- { text: "Accepted", value: "accepted" },
98
- { text: "Available", value: "available" },
99
- { text: "Copyrighted", value: "copyrighted" },
100
- { text: "Collected", value: "collected" },
101
- { text: "Created", value: "created" },
102
- { text: "Issued", value: "issued" },
103
- { text: "Submitted", value: "submitted" },
104
- { text: "Updated", value: "updated" },
105
- { text: "Valid", value: "valid" },
106
- { text: "Withdrawn", value: "withdrawn" },
107
- { text: "Other", value: "other" },
78
+ { text: i18next.t("Person"), value: "personal" },
79
+ { text: i18next.t("Organization"), value: "organizational" },
108
80
  ],
109
81
  },
110
-
111
- // TODO: Replace with an API backend
112
- funding: {
113
- funder: [
114
- {
115
- name: "National Institutes of Health (US)",
116
- identifier: "funder1",
117
- scheme: "funderScheme1",
118
- },
119
- {
120
- name: "European Commission (EU)",
121
- identifier: "funder2",
122
- scheme: "funderScheme2",
123
- },
124
- ],
125
- award: [
126
- {
127
- title: "CANCER &AIDS DRUGS--PRECLIN PHARMACOL/TOXICOLOGY",
128
- number: "N01CM037835-016",
129
- identifier: "awardA",
130
- scheme: "awardSchemeA",
131
- parentScheme: "funderScheme1",
132
- parentIdentifier: "funder1",
133
- },
134
- {
135
- title:
136
- "Beyond the Standard Model at the LHC and with Atom Interferometers.",
137
- number: "228169",
138
- identifier: "awardB1",
139
- scheme: "awardSchemeB",
140
- parentScheme: "funderScheme2",
141
- parentIdentifier: "funder2",
142
- },
143
- {
144
- title: "ENvironmental COnditions in GLAucoma Patients",
145
- number: "747441",
146
- identifier: "awardB2",
147
- scheme: "awardSchemeB",
148
- parentScheme: "funderScheme2",
149
- parentIdentifier: "funder2",
150
- },
151
- ],
152
- },
153
-
154
82
  identifiers: {
155
- resource_type: this.config.vocabularies.resource_type,
156
- scheme: [
157
- { text: "ARK", value: "ark" },
158
- { text: "ARXIV", value: "arxiv" },
159
- { text: "BIBCODE", value: "bibcode" },
160
- { text: "DOI", value: "doi" },
161
- { text: "EAN13", value: "ean13" },
162
- { text: "EISSN", value: "eissn" },
163
- { text: "HANDLE", value: "handle" },
164
- { text: "IGSN", value: "igsn" },
165
- { text: "ISBN", value: "isbn" },
166
- { text: "ISSN", value: "issn" },
167
- { text: "ISTC", value: "istc" },
168
- { text: "LISSN", value: "lissn" },
169
- { text: "LSID", value: "lsid" },
170
- { text: "PMID", value: "pmid" },
171
- { text: "PURL", value: "purl" },
172
- { text: "UPC", value: "upc" },
173
- { text: "URL", value: "url" },
174
- { text: "URN", value: "urn" },
175
- { text: "W3ID", value: "w3id" },
176
- ],
177
- relations: [
178
- { text: "Is cited by", value: "iscitedby" },
179
- { text: "Cites", value: "cites" },
180
- { text: "Is supplement to", value: "issupplementto" },
181
- { text: "Is supplemented by", value: "issupplementedby" },
182
- { text: "Is continued by", value: "iscontinuedby" },
183
- { text: "Continues", value: "continues" },
184
- { text: "Is described by", value: "isdescribedby" },
185
- { text: "Describes", value: "describes" },
186
- { text: "Has metadata", value: "hasmetadata" },
187
- { text: "Is metadata for", value: "ismetadatafor" },
188
- { text: "Has version", value: "hasversion" },
189
- { text: "Is version of", value: "isversionof" },
190
- { text: "Is new version of", value: "isnewversionof" },
191
- { text: "Is previous version of", value: "ispreviousversionof" },
192
- { text: "Is part of", value: "ispartof" },
193
- { text: "Has part", value: "haspart" },
194
- { text: "Is referenced by", value: "isreferencedby" },
195
- { text: "References", value: "references" },
196
- { text: "Is documented by", value: "isdocumentedby" },
197
- { text: "Documents", value: "documents" },
198
- { text: "Is compiled by", value: "iscompiledby" },
199
- { text: "Compiles", value: "compiles" },
200
- { text: "Is variant form of", value: "isvariantformof" },
201
- { text: "Is original form of", value: "isoriginalformof" },
202
- { text: "Is identical to", value: "isidenticalto" },
203
- { text: "Is reviewed by", value: "isreviewedby" },
204
- { text: "Reviews", value: "reviews" },
205
- { text: "Is derived from", value: "isderivedfrom" },
206
- { text: "Is source of", value: "issourceof" },
207
- { text: "Is required by", value: "isrequiredby" },
208
- { text: "Requires", value: "requires" },
209
- { text: "Is obsoleted by", value: "isobsoletedby" },
210
- { text: "Obsoletes", value: "obsoletes" },
211
- ],
212
- },
213
- subjects: {
214
- options: [
215
- {
216
- text: "Deep Learning",
217
- value: {
218
- subject: "Deep Learning",
219
- scheme: "user",
220
- identifier: "U1",
221
- },
222
- },
223
- {
224
- text: "MeSH: Cognitive Neuroscience",
225
- value: {
226
- subject: "Cognitive Neuroscience",
227
- scheme: "mesh",
228
- identifier: "D000066494",
229
- },
230
- },
231
- {
232
- text: "FAST: Glucagonoma",
233
- value: {
234
- subject: "Glucagonoma",
235
- scheme: "fast",
236
- identifier: "943672",
237
- },
238
- },
239
- ],
240
- limitToOptions: [
241
- { text: "All", value: "all" },
242
- { text: "MeSH", value: "mesh" },
243
- { text: "FAST", value: "fast" },
244
- ],
83
+ ...this.config.vocabularies.identifiers,
245
84
  },
246
85
  },
247
86
  };
@@ -249,280 +88,796 @@ export class RDMDepositForm extends Component {
249
88
  // check if files are present
250
89
  this.noFiles = false;
251
90
  if (
252
- !Array.isArray(this.props.files.entries) ||
253
- (!this.props.files.entries.length && this.props.record.is_published)
91
+ !Array.isArray(files.entries) ||
92
+ (!files.entries.length && record.is_published)
254
93
  ) {
255
94
  this.noFiles = true;
256
95
  }
96
+
97
+ this.sectionsConfig = depositFormSectionsConfig;
98
+ this.severityChecks = severityChecksConfig;
99
+
100
+ // hide community header for branded communities
101
+ this.hide_community_selection = this.config.hide_community_selection || false;
257
102
  }
258
103
 
259
104
  formFeedbackRef = createRef();
260
105
  sidebarRef = createRef();
261
106
 
262
- accordionStyle = {
263
- header: { className: "inverted brand", style: { cursor: "pointer" } },
264
- };
265
-
266
107
  render() {
108
+ const {
109
+ config,
110
+ record,
111
+ files,
112
+ permissions,
113
+ preselectedCommunity,
114
+ filesLocked,
115
+ recordRestrictionGracePeriod,
116
+ allowRecordRestriction,
117
+ recordDeletion,
118
+ fileModification,
119
+ groupsEnabled,
120
+ allowEmptyFiles,
121
+ useUppy,
122
+ } = this.props;
123
+
124
+ // Adding section id to custom fields UI, to be used for accordions
125
+ const customFieldsUI = this.config.custom_fields.ui.map((section) => ({
126
+ ...section,
127
+ id: section.section.toLowerCase().replace(/\s+/g, "-") + "-section",
128
+ }));
129
+ const UploaderField = useUppy ? UppyUploader : FileUploader;
130
+
267
131
  return (
268
- <DepositFormApp
269
- config={this.config}
270
- record={this.props.record}
271
- files={this.props.files}
272
- permissions={this.props.permissions}
132
+ <Overridable
133
+ id="InvenioAppRdm.Deposit.RDMDepositForm.layout"
134
+ record={record}
135
+ files={files}
136
+ config={config}
137
+ permissions={permissions}
138
+ preselectedCommunity={preselectedCommunity}
139
+ filesLocked={filesLocked}
140
+ recordRestrictionGracePeriod={recordRestrictionGracePeriod}
141
+ allowRecordRestriction={allowRecordRestriction}
142
+ recordDeletion={recordDeletion}
143
+ fileModification={fileModification}
144
+ groupsEnabled={groupsEnabled}
145
+ allowEmptyFiles={allowEmptyFiles}
146
+ customFieldsUI={customFieldsUI}
273
147
  >
274
- <FormFeedback fieldPath="message" />
275
- <Container style={{ marginTop: "10px" }}>
276
- <DepositFormTitle />
277
- <Grid>
278
- <Grid.Row>
279
- <Grid.Column width={11}>
280
- <AccordionField
281
- fieldPath=""
282
- active={true}
283
- label={"Files"}
284
- ui={this.accordionStyle}
148
+ <DepositFormApp
149
+ config={this.config}
150
+ record={record}
151
+ preselectedCommunity={preselectedCommunity}
152
+ files={files}
153
+ permissions={permissions}
154
+ errors={record.errors}
155
+ >
156
+ <Overridable
157
+ id="InvenioAppRdm.Deposit.FormFeedback.container"
158
+ labels={this.config.custom_fields.error_labels}
159
+ fieldPath="message"
160
+ >
161
+ <FormFeedback
162
+ fieldPath="message"
163
+ labels={this.config.custom_fields.error_labels}
164
+ sectionsConfig={this.sectionsConfig}
165
+ />
166
+ </Overridable>
167
+
168
+ <Overridable
169
+ id="InvenioAppRdm.Deposit.CommunityHeader.container"
170
+ record={record}
171
+ >
172
+ {!this.hide_community_selection && (
173
+ <CommunityHeader
174
+ imagePlaceholderLink="/static/images/square-placeholder.png"
175
+ record={record}
176
+ />
177
+ )}
178
+ </Overridable>
179
+ <Container id="rdm-deposit-form" className="rel-mt-1">
180
+ <Grid className="mt-25">
181
+ <Grid.Column mobile={16} tablet={16} computer={11}>
182
+ <Overridable
183
+ id="InvenioAppRdm.Deposit.Files.before.container"
184
+ record={record}
185
+ files={files}
186
+ permissions={permissions}
187
+ preselectedCommunity={preselectedCommunity}
188
+ filesLocked={filesLocked}
189
+ recordRestrictionGracePeriod={recordRestrictionGracePeriod}
190
+ allowRecordRestriction={allowRecordRestriction}
191
+ groupsEnabled={groupsEnabled}
192
+ allowEmptyFiles={allowEmptyFiles}
193
+ customFieldsUI={customFieldsUI}
194
+ config={this.config}
195
+ vocabularies={this.vocabularies}
196
+ noFiles={this.noFiles}
197
+ hideCommunitySelection={this.hide_community_selection}
198
+ />
199
+ <Overridable
200
+ id="InvenioAppRdm.Deposit.AccordionFieldFiles.container"
201
+ record={record}
202
+ config={this.config}
203
+ noFiles={this.noFiles}
204
+ fileModification={fileModification}
205
+ filesLocked={filesLocked}
285
206
  >
286
- {this.noFiles && this.props.record.is_published && (
287
- <p
288
- style={{
289
- textAlign: "center",
290
- opacity: "0.5",
291
- cursor: "default !important",
292
- }}
207
+ <AccordionField
208
+ includesPaths={this.sectionsConfig["files-section"]}
209
+ severityChecks={this.severityChecks}
210
+ active
211
+ label={
212
+ <>
213
+ {i18next.t("Files")}
214
+ {record.is_published && (
215
+ <FileModificationUntil
216
+ fileModification={fileModification}
217
+ filesLocked={filesLocked}
218
+ record={record}
219
+ />
220
+ )}
221
+ </>
222
+ }
223
+ id="files-section"
224
+ >
225
+ {this.noFiles && record.is_published && (
226
+ <div className="text-align-center pb-10">
227
+ <em>{i18next.t("The record has no files.")}</em>
228
+ </div>
229
+ )}
230
+ <Overridable
231
+ id="InvenioAppRdm.Deposit.FileUploader.container"
232
+ record={record}
233
+ config={this.config}
234
+ permissions={permissions}
235
+ filesLocked={filesLocked}
236
+ allowEmptyFiles={allowEmptyFiles}
293
237
  >
294
- <em>The record has no files.</em>
295
- </p>
296
- )}
297
- <FileUploader
298
- isDraftRecord={!this.props.record.is_published}
299
- quota={{
300
- maxFiles: 100,
301
- maxStorage: 10 ** 10,
302
- }}
303
- />
304
- </AccordionField>
305
-
306
- <AccordionField
307
- fieldPath=""
308
- active={true}
309
- label={"Basic information"}
310
- ui={this.accordionStyle}
238
+ <UploaderField
239
+ isDraftRecord={!record.is_published}
240
+ quota={this.config.quota}
241
+ decimalSizeDisplay={this.config.decimal_size_display}
242
+ showMetadataOnlyToggle={permissions?.can_manage_files}
243
+ allowEmptyFiles={allowEmptyFiles}
244
+ filesLocked={filesLocked}
245
+ fileUploadConcurrency={config.fileUploadConcurrency}
246
+ fileModification={fileModification}
247
+ />
248
+ </Overridable>
249
+ </AccordionField>
250
+ </Overridable>
251
+ <Overridable
252
+ id="InvenioAppRdm.Deposit.Files.after.container"
253
+ record={record}
254
+ files={files}
255
+ permissions={permissions}
256
+ preselectedCommunity={preselectedCommunity}
257
+ filesLocked={filesLocked}
258
+ recordRestrictionGracePeriod={recordRestrictionGracePeriod}
259
+ allowRecordRestriction={allowRecordRestriction}
260
+ groupsEnabled={groupsEnabled}
261
+ allowEmptyFiles={allowEmptyFiles}
262
+ customFieldsUI={customFieldsUI}
263
+ config={this.config}
264
+ vocabularies={this.vocabularies}
265
+ noFiles={this.noFiles}
266
+ hideCommunitySelection={this.hide_community_selection}
267
+ />
268
+ <Overridable
269
+ id="InvenioAppRdm.Deposit.AccordionFieldBasicInformation.container"
270
+ config={this.config}
271
+ record={record}
272
+ vocabularies={this.vocabularies}
311
273
  >
312
- {this.config.pids.map((pid) => (
313
- <Fragment key={pid.scheme}>
314
- <PIDField
315
- btnLabelGetPID={pid.btn_label_get_pid}
316
- canBeManaged={pid.can_be_managed}
317
- canBeUnmanaged={pid.can_be_unmanaged}
318
- fieldPath={`pids.${pid.scheme}`}
319
- isEditingPublishedRecord={
320
- this.props.record.is_published === true // is_published is `null` at first upload
321
- }
322
- managedHelpText={pid.managed_help_text}
323
- pidLabel={pid.pid_label}
324
- pidPlaceholder={pid.pid_placeholder}
325
- pidType={pid.scheme}
326
- unmanagedHelpText={pid.unmanaged_help_text}
274
+ <AccordionField
275
+ includesPaths={this.sectionsConfig["basic-information-section"]}
276
+ severityChecks={this.severityChecks}
277
+ active
278
+ label={i18next.t("Basic information")}
279
+ id="basic-information-section"
280
+ >
281
+ <Overridable
282
+ id="InvenioAppRdm.Deposit.PIDField.container"
283
+ config={this.config}
284
+ record={record}
285
+ >
286
+ <Fragment>
287
+ {this.config.pids.map((pid) => (
288
+ <Fragment key={pid.scheme}>
289
+ <PIDField
290
+ btnLabelDiscardPID={pid.btn_label_discard_pid}
291
+ btnLabelGetPID={pid.btn_label_get_pid}
292
+ canBeManaged={pid.can_be_managed}
293
+ canBeUnmanaged={pid.can_be_unmanaged}
294
+ optionalDOItransitions={pid.optional_doi_transitions}
295
+ fieldPath={`pids.${pid.scheme}`}
296
+ fieldLabel={pid.field_label}
297
+ isEditingPublishedRecord={
298
+ record.is_published === true // is_published is `null` at first upload
299
+ }
300
+ managedHelpText={pid.managed_help_text}
301
+ pidLabel={pid.pid_label}
302
+ pidPlaceholder={pid.pid_placeholder}
303
+ pidType={pid.scheme}
304
+ unmanagedHelpText={pid.unmanaged_help_text}
305
+ doiDefaultSelection={pid.default_selected}
306
+ required={this.config.is_doi_required}
307
+ record={record}
308
+ />
309
+ </Fragment>
310
+ ))}
311
+ </Fragment>
312
+ </Overridable>
313
+
314
+ <Overridable
315
+ id="InvenioAppRdm.Deposit.ResourceTypeField.container"
316
+ vocabularies={this.vocabularies}
317
+ fieldPath="metadata.resource_type"
318
+ >
319
+ <ResourceTypeField
320
+ options={this.vocabularies.metadata.resource_type}
321
+ fieldPath="metadata.resource_type"
322
+ required
323
+ />
324
+ </Overridable>
325
+
326
+ <Overridable
327
+ id="InvenioAppRdm.Deposit.TitlesField.container"
328
+ vocabularies={this.vocabularies}
329
+ fieldPath="metadata.title"
330
+ record={record}
331
+ >
332
+ <TitlesField
333
+ options={this.vocabularies.metadata.titles}
334
+ fieldPath="metadata.title"
335
+ recordUI={record.ui}
336
+ required
327
337
  />
328
- <Divider />
329
- </Fragment>
330
- ))}
331
-
332
- <ResourceTypeField
333
- options={this.vocabularies.metadata.resource_type}
334
- required
335
- />
336
- <TitlesField
337
- options={this.vocabularies.metadata.titles}
338
- required
339
- />
340
- <PublicationDateField required />
341
- <CreatibutorsField
342
- label={"Creators"}
343
- labelIcon={"user"}
344
- fieldPath={"metadata.creators"}
345
- roleOptions={this.vocabularies.metadata.creators.role}
346
- schema="creators"
347
- required
348
- />
349
- <DescriptionsField
350
- options={this.vocabularies.metadata.descriptions}
351
- editorConfig={{
352
- removePlugins: [
353
- "Image",
354
- "ImageCaption",
355
- "ImageStyle",
356
- "ImageToolbar",
357
- "ImageUpload",
358
- "MediaEmbed",
359
- "Table",
360
- "TableToolbar",
361
- "TableProperties",
362
- "TableCellProperties",
363
- ],
364
- }}
365
- />
366
- <LicenseField
367
- fieldPath="metadata.rights"
368
- searchConfig={{
369
- searchApi: {
370
- axios: {
371
- headers: {
372
- Accept: "application/vnd.inveniordm.v1+json",
338
+ </Overridable>
339
+
340
+ <Overridable
341
+ id="InvenioAppRdm.Deposit.PublicationDateField.container"
342
+ fieldPath="metadata.publication_date"
343
+ >
344
+ <PublicationDateField
345
+ required
346
+ fieldPath="metadata.publication_date"
347
+ />
348
+ </Overridable>
349
+
350
+ <Overridable
351
+ id="InvenioAppRdm.Deposit.CreatorsField.container"
352
+ vocabularies={this.vocabularies}
353
+ config={this.config}
354
+ fieldPath="metadata.creators"
355
+ >
356
+ <CreatibutorsField
357
+ label={i18next.t("Authors/Creators")}
358
+ labelIcon="user"
359
+ addButtonHelpText={i18next.t(
360
+ "Use the Authors/Creators field for names that should appear in the citation. Use the Contributors field below for other names."
361
+ )}
362
+ fieldPath="metadata.creators"
363
+ roleOptions={this.vocabularies.metadata.creators.role}
364
+ schema="creators"
365
+ autocompleteNames={this.config.autocomplete_names}
366
+ required
367
+ />
368
+ </Overridable>
369
+
370
+ <Overridable
371
+ id="InvenioAppRdm.Deposit.DescriptionsField.container"
372
+ record={record}
373
+ vocabularies={this.vocabularies}
374
+ fieldPath="metadata.description"
375
+ >
376
+ <DescriptionsField
377
+ fieldPath="metadata.description"
378
+ options={this.vocabularies.metadata.descriptions}
379
+ recordUI={_get(record, "ui", null)}
380
+ />
381
+ </Overridable>
382
+
383
+ <Overridable
384
+ id="InvenioAppRdm.Deposit.LicenseField.container"
385
+ fieldPath="metadata.rights"
386
+ >
387
+ <LicenseField
388
+ fieldPath="metadata.rights"
389
+ searchConfig={{
390
+ searchApi: {
391
+ axios: {
392
+ headers: {
393
+ Accept: "application/vnd.inveniordm.v1+json",
394
+ },
395
+ url: "/api/vocabularies/licenses",
396
+ withCredentials: false,
397
+ },
373
398
  },
374
- url: "/api/vocabularies/licenses",
375
- withCredentials: false,
376
- },
377
- },
378
- initialQueryState: {
379
- filters: [["tags", "recommended"]],
380
- },
381
- }}
382
- serializeLicenses={(result) => ({
383
- title: result.title_l10n,
384
- description: result.description_l10n,
385
- id: result.id,
386
- link: result.props.url,
387
- })}
388
- />
389
- <br />
390
- </AccordionField>
391
-
392
- <AccordionField
393
- fieldPath=""
394
- active={true}
395
- label={"Recommended information"}
396
- ui={this.accordionStyle}
397
- >
398
- <CreatibutorsField
399
- addButtonLabel={"Add contributor"}
400
- label={"Contributors"}
401
- labelIcon={"user plus"}
402
- fieldPath={"metadata.contributors"}
403
- roleOptions={this.vocabularies.metadata.contributors.role}
404
- schema="contributors"
405
- modal={{
406
- addLabel: "Add contributor",
407
- editLabel: "Edit contributor",
408
- }}
409
- />
410
- {/**TODO: uncomment to use Subjects*/}
411
- {/* <SubjectsField
412
- initialOptions={_get(
413
- this.props.record,
414
- "metadata.subjects",
415
- null
416
- )}
417
- limitToOptions={
418
- this.vocabularies.metadata.subjects.limitToOptions
419
- }
399
+ initialQueryState: {
400
+ filters: [["tags", "recommended"]],
401
+ sortBy: "bestmatch",
402
+ sortOrder: "asc",
403
+ layout: "list",
404
+ page: 1,
405
+ size: 12,
406
+ },
407
+ }}
408
+ serializeLicenses={(result) => ({
409
+ title: result.title_l10n,
410
+ description: result.description_l10n,
411
+ id: result.id,
412
+ link: result.props.url,
413
+ })}
414
+ />
415
+ </Overridable>
416
+ <Overridable
417
+ id="InvenioAppRdm.Deposit.CopyrightsField.container"
418
+ fieldPath="metadata.copyright"
419
+ >
420
+ <CopyrightsField fieldPath="metadata.copyright" />
421
+ </Overridable>
422
+ <Overridable
423
+ id="InvenioAppRdm.Deposit.AccordionFieldBasicInformation.extra"
424
+ record={record}
425
+ files={files}
426
+ permissions={permissions}
427
+ preselectedCommunity={preselectedCommunity}
428
+ filesLocked={filesLocked}
429
+ recordRestrictionGracePeriod={recordRestrictionGracePeriod}
430
+ allowRecordRestriction={allowRecordRestriction}
431
+ groupsEnabled={groupsEnabled}
432
+ allowEmptyFiles={allowEmptyFiles}
433
+ customFieldsUI={customFieldsUI}
434
+ config={this.config}
435
+ vocabularies={this.vocabularies}
436
+ noFiles={this.noFiles}
437
+ hideCommunitySelection={this.hide_community_selection}
438
+ />
439
+ </AccordionField>
440
+ </Overridable>
441
+ <Overridable
442
+ id="InvenioAppRdm.Deposit.BasicInformation.after.container"
443
+ record={record}
444
+ files={files}
445
+ permissions={permissions}
446
+ preselectedCommunity={preselectedCommunity}
447
+ filesLocked={filesLocked}
448
+ recordRestrictionGracePeriod={recordRestrictionGracePeriod}
449
+ allowRecordRestriction={allowRecordRestriction}
450
+ groupsEnabled={groupsEnabled}
451
+ allowEmptyFiles={allowEmptyFiles}
452
+ customFieldsUI={customFieldsUI}
453
+ config={this.config}
454
+ vocabularies={this.vocabularies}
455
+ noFiles={this.noFiles}
456
+ hideCommunitySelection={this.hide_community_selection}
420
457
  />
421
- <ComingSoonField
422
- fieldPath="metadata.subjects"
423
- label="Subjects"
424
- labelIcon="tag"
425
- /> */}
426
-
427
- <LanguagesField
428
- initialOptions={_get(
429
- this.props.record,
430
- "ui.languages",
431
- []
432
- ).filter((lang) => lang !== null)} // needed because dumped empty record from backend gives [null]
433
- serializeSuggestions={(suggestions) =>
434
- suggestions.map((item) => ({
435
- text: item.title_l10n,
436
- value: item.id,
437
- key: item.id,
438
- }))
458
+ <Overridable
459
+ id="InvenioAppRdm.Deposit.AccordionFieldRecommendedInformation.container"
460
+ vocabularies={this.vocabularies}
461
+ config={this.config}
462
+ record={record}
463
+ >
464
+ <AccordionField
465
+ includesPaths={
466
+ this.sectionsConfig["recommended-information-section"]
439
467
  }
440
- />
441
- <DatesField options={this.vocabularies.metadata.dates} />
442
- <VersionField />
443
- <PublisherField />
444
- <br />
445
- </AccordionField>
446
- {/**TODO: uncomment to use FundingField*/}
447
- {/* <AccordionField
448
- fieldPath=""
449
- active={true}
450
- label={"Funding"}
451
- ui={this.accordionStyle}
452
- >
453
- <FundingField options={this.vocabularies.metadata.funding} />
454
- <ComingSoonField
455
- fieldPath="metadata.funding"
456
- label="Awards"
457
- labelIcon="money bill alternate outline"
458
- />
468
+ severityChecks={this.severityChecks}
469
+ label={i18next.t("Recommended information")}
470
+ id="recommended-information-section"
471
+ >
472
+ <Overridable
473
+ id="InvenioAppRdm.Deposit.ContributorsField.container"
474
+ fieldPath="metadata.contributors"
475
+ vocabularies={this.vocabularies}
476
+ config={this.config}
477
+ >
478
+ <CreatibutorsField
479
+ addButtonLabel={i18next.t("Add contributor")}
480
+ addButtonHelpText={i18next.t(
481
+ "Contributors are not included in the citation, but are shown on the record page."
482
+ )}
483
+ label={i18next.t("Contributors")}
484
+ labelIcon="user plus"
485
+ fieldPath="metadata.contributors"
486
+ roleOptions={this.vocabularies.metadata.contributors.role}
487
+ schema="contributors"
488
+ autocompleteNames={this.config.autocomplete_names}
489
+ modal={{
490
+ addLabel: i18next.t("Add contributor"),
491
+ editLabel: i18next.t("Edit contributor"),
492
+ }}
493
+ />
494
+ </Overridable>
495
+
496
+ <Overridable
497
+ id="InvenioAppRdm.Deposit.SubjectsField.container"
498
+ vocabularies={this.vocabularies}
499
+ fieldPath="metadata.subjects"
500
+ record={record}
501
+ >
502
+ <SubjectsField
503
+ fieldPath="metadata.subjects"
504
+ initialOptions={_get(record, "ui.subjects", null)}
505
+ limitToOptions={this.vocabularies.metadata.subjects.limit_to}
506
+ searchOnFocus
507
+ />
508
+ </Overridable>
509
+
510
+ <Overridable
511
+ id="InvenioAppRdm.Deposit.LanguagesField.container"
512
+ fieldPath="metadata.languages"
513
+ record={record}
514
+ >
515
+ <LanguagesField
516
+ fieldPath="metadata.languages"
517
+ initialOptions={_get(record, "ui.languages", []).filter(
518
+ (lang) => lang !== null
519
+ )} // needed because dumped empty record from backend gives [null]
520
+ serializeSuggestions={(suggestions) =>
521
+ suggestions.map((item) => ({
522
+ text: item.title_l10n,
523
+ value: item.id,
524
+ key: item.id,
525
+ }))
526
+ }
527
+ />
528
+ </Overridable>
459
529
 
460
- <br />
461
- </AccordionField> */}
530
+ <Overridable
531
+ id="InvenioAppRdm.Deposit.DateField.container"
532
+ vocabularies={this.vocabularies}
533
+ fieldPath="metadata.dates"
534
+ >
535
+ <DatesField
536
+ fieldPath="metadata.dates"
537
+ options={this.vocabularies.metadata.dates}
538
+ showEmptyValue
539
+ />
540
+ </Overridable>
462
541
 
463
- <AccordionField
464
- fieldPath=""
465
- active={true}
466
- label={"Alternate identifiers"}
542
+ <Overridable
543
+ id="InvenioAppRdm.Deposit.VersionField.container"
544
+ fieldPath="metadata.version"
545
+ >
546
+ <VersionField fieldPath="metadata.version" />
547
+ </Overridable>
548
+
549
+ <Overridable
550
+ id="InvenioAppRdm.Deposit.PublisherField.container"
551
+ fieldPath="metadata.publisher"
552
+ >
553
+ <PublisherField fieldPath="metadata.publisher" />
554
+ </Overridable>
555
+ </AccordionField>
556
+ </Overridable>
557
+ <Overridable
558
+ id="InvenioAppRdm.Deposit.AccordionFieldFunding.container"
467
559
  ui={this.accordionStyle}
468
560
  >
469
- <IdentifiersField
470
- fieldPath="metadata.identifiers"
471
- label="Alternate identifier(s)"
472
- labelIcon="barcode"
473
- schemeOptions={
474
- this.vocabularies.metadata.identifiers.scheme
475
- }
476
- />
477
- </AccordionField>
561
+ <AccordionField
562
+ includesPaths={this.sectionsConfig["funding-section"]}
563
+ severityChecks={this.severityChecks}
564
+ active
565
+ label={i18next.t("Funding")}
566
+ ui={this.accordionStyle}
567
+ id="funding-section"
568
+ >
569
+ <Overridable
570
+ id="InvenioAppRdm.Deposit.FundingField.container"
571
+ fieldPath="metadata.funding"
572
+ >
573
+ <FundingField
574
+ fieldPath="metadata.funding"
575
+ searchConfig={{
576
+ searchApi: {
577
+ axios: {
578
+ headers: {
579
+ Accept: "application/vnd.inveniordm.v1+json",
580
+ },
581
+ url: "/api/awards",
582
+ withCredentials: false,
583
+ },
584
+ },
585
+ initialQueryState: {
586
+ sortBy: "bestmatch",
587
+ sortOrder: "asc",
588
+ layout: "list",
589
+ page: 1,
590
+ size: 5,
591
+ },
592
+ }}
593
+ label={i18next.t("Awards/Grants")}
594
+ labelIcon="money bill alternate outline"
595
+ deserializeAward={(award) => {
596
+ return {
597
+ title: award.title_l10n,
598
+ number: award.number,
599
+ funder: award.funder ?? "",
600
+ id: award.id,
601
+ ...(award.identifiers && {
602
+ identifiers: award.identifiers,
603
+ }),
604
+ ...(award.acronym && { acronym: award.acronym }),
605
+ };
606
+ }}
607
+ deserializeFunder={(funder) => {
608
+ return {
609
+ id: funder.id,
610
+ name: funder.name,
611
+ ...(funder.title_l10n && { title: funder.title_l10n }),
612
+ ...(funder.pid && { pid: funder.pid }),
613
+ ...(funder.country && { country: funder.country }),
614
+ ...(funder.country_name && {
615
+ country_name: funder.country_name,
616
+ }),
617
+ ...(funder.identifiers && {
618
+ identifiers: funder.identifiers,
619
+ }),
620
+ };
621
+ }}
622
+ computeFundingContents={(funding) => {
623
+ let headerContent,
624
+ descriptionContent,
625
+ awardOrFunder = "";
478
626
 
479
- <AccordionField
480
- fieldPath=""
481
- active={true}
482
- label={"Related works"}
483
- ui={this.accordionStyle}
627
+ if (funding.funder) {
628
+ const funderName =
629
+ funding.funder?.name ??
630
+ funding.funder?.title ??
631
+ funding.funder?.id ??
632
+ "";
633
+ awardOrFunder = "funder";
634
+ headerContent = funderName;
635
+ descriptionContent = "";
636
+
637
+ // there cannot be an award without a funder
638
+ if (funding.award) {
639
+ const { acronym, title } = funding.award;
640
+ awardOrFunder = "award";
641
+ descriptionContent = funderName;
642
+ headerContent = acronym ? `${acronym} — ${title}` : title;
643
+ }
644
+ }
645
+
646
+ return { headerContent, descriptionContent, awardOrFunder };
647
+ }}
648
+ />
649
+ </Overridable>
650
+ </AccordionField>
651
+ </Overridable>
652
+ <Overridable
653
+ id="InvenioAppRdm.Deposit.AccordionFieldAlternateIdentifiers.container"
654
+ vocabularies={this.vocabularies}
655
+ >
656
+ <AccordionField
657
+ includesPaths={this.sectionsConfig["alternate-identifiers-section"]}
658
+ severityChecks={this.severityChecks}
659
+ active
660
+ label={i18next.t("Alternate identifiers")}
661
+ id="alternate-identifiers-section"
662
+ >
663
+ <Overridable
664
+ id="InvenioAppRdm.Deposit.IdentifiersField.container"
665
+ vocabularies={this.vocabularies}
666
+ fieldPath="metadata.identifiers"
667
+ >
668
+ <IdentifiersField
669
+ fieldPath="metadata.identifiers"
670
+ label={i18next.t("Alternate identifiers")}
671
+ labelIcon="barcode"
672
+ schemeOptions={this.vocabularies.metadata.identifiers.scheme}
673
+ showEmptyValue
674
+ />
675
+ </Overridable>
676
+ </AccordionField>
677
+ </Overridable>
678
+
679
+ <Overridable
680
+ id="InvenioAppRdm.Deposit.AccordionFieldRelatedWorks.container"
681
+ vocabularies={this.vocabularies}
682
+ >
683
+ <AccordionField
684
+ includesPaths={this.sectionsConfig["related-works-section"]}
685
+ severityChecks={this.severityChecks}
686
+ active
687
+ label={i18next.t("Related works")}
688
+ id="related-works-section"
689
+ >
690
+ <Overridable
691
+ id="InvenioAppRdm.Deposit.RelatedWorksField.container"
692
+ fieldPath="metadata.related_identifiers"
693
+ vocabularies={this.vocabularies}
694
+ >
695
+ <RelatedWorksField
696
+ fieldPath="metadata.related_identifiers"
697
+ options={this.vocabularies.metadata.related_identifiers}
698
+ showEmptyValue
699
+ />
700
+ </Overridable>
701
+ </AccordionField>
702
+ </Overridable>
703
+ <Overridable
704
+ id="InvenioAppRdm.Deposit.AccordionFieldReferences.container"
705
+ vocabularies={this.vocabularies}
484
706
  >
485
- <RelatedWorksField
486
- options={this.vocabularies.metadata.identifiers}
487
- />
488
- <br />
489
- </AccordionField>
707
+ <AccordionField
708
+ includesPaths={this.sectionsConfig["references-section"]}
709
+ severityChecks={this.severityChecks}
710
+ active
711
+ label={i18next.t("References")}
712
+ id="references-section"
713
+ >
714
+ <Overridable
715
+ id="InvenioAppRdm.Deposit.ReferencesField.container"
716
+ fieldPath="metadata.references"
717
+ vocabularies={this.vocabularies}
718
+ >
719
+ <ReferencesField fieldPath="metadata.references" showEmptyValue />
720
+ </Overridable>
721
+ </AccordionField>
722
+ </Overridable>
723
+ {!_isEmpty(customFieldsUI) && (
724
+ <Overridable
725
+ id="InvenioAppRdm.Deposit.CustomFields.container"
726
+ record={record}
727
+ customFieldsUI={customFieldsUI}
728
+ >
729
+ <CustomFields
730
+ config={customFieldsUI}
731
+ record={record}
732
+ templateLoaders={[
733
+ (widget) => import(`@templates/custom_fields/${widget}.js`),
734
+ (widget) =>
735
+ import(`@js/invenio_rdm_records/src/deposit/customFields`),
736
+ (widget) => import(`react-invenio-forms`),
737
+ ]}
738
+ fieldPathPrefix="custom_fields"
739
+ severityChecks={this.severityChecks}
740
+ />
741
+ </Overridable>
742
+ )}
490
743
  </Grid.Column>
491
744
  <Ref innerRef={this.sidebarRef}>
492
- <Grid.Column width={5} className="deposit-sidebar">
745
+ <Grid.Column
746
+ mobile={16}
747
+ tablet={16}
748
+ computer={5}
749
+ className="deposit-sidebar"
750
+ >
493
751
  <Sticky context={this.sidebarRef} offset={20}>
494
- <Card className="actions">
495
- <Card.Content>
496
- <div className="sidebar-buttons">
497
- <SaveButton fluid className="save-button" />
498
- <PreviewButton fluid className="preview-button" />
499
- </div>
500
- <PublishButton fluid />
501
- </Card.Content>
502
- </Card>
503
-
504
- <Card className="actions">
505
- <Card.Content>
506
- <DeleteButton
507
- fluid
508
- // TODO: make is_published part of the API response
509
- // so we don't have to do this
510
- isPublished={this.props.record.is_published}
511
- />
512
- </Card.Content>
513
- </Card>
514
-
515
- <AccessRightField
516
- label={"Visibility"}
517
- labelIcon={"shield"}
518
- />
752
+ <Overridable
753
+ id="InvenioAppRdm.Deposit.CardDepositStatusBox.container"
754
+ record={record}
755
+ permissions={permissions}
756
+ groupsEnabled={groupsEnabled}
757
+ >
758
+ <Card>
759
+ <Card.Content>
760
+ <DepositStatusBox />
761
+ </Card.Content>
762
+ <Card.Content>
763
+ <Grid relaxed>
764
+ <Grid.Column
765
+ computer={8}
766
+ mobile={16}
767
+ className="pb-0 left-btn-col"
768
+ >
769
+ <SaveButton fluid />
770
+ </Grid.Column>
771
+
772
+ <Grid.Column
773
+ computer={8}
774
+ mobile={16}
775
+ className="pb-0 right-btn-col"
776
+ >
777
+ <PreviewButton fluid />
778
+ </Grid.Column>
779
+
780
+ <Grid.Column width={16} className="pt-10">
781
+ <PublishButton fluid record={record} />
782
+ </Grid.Column>
783
+
784
+ <Grid.Column width={16} className="pt-0">
785
+ {(record.is_draft === null || permissions.can_manage) && (
786
+ <ShareDraftButton
787
+ record={record}
788
+ permissions={permissions}
789
+ groupsEnabled={groupsEnabled}
790
+ />
791
+ )}
792
+ </Grid.Column>
793
+ </Grid>
794
+ </Card.Content>
795
+ </Card>
796
+ </Overridable>
797
+ <Overridable
798
+ id="InvenioAppRdm.Deposit.AccessRightField.container"
799
+ fieldPath="access"
800
+ record={record}
801
+ permissions={permissions}
802
+ recordRestrictionGracePeriod={recordRestrictionGracePeriod}
803
+ allowRecordRestriction={allowRecordRestriction}
804
+ >
805
+ <AccessRightField
806
+ label={i18next.t("Visibility")}
807
+ record={record}
808
+ labelIcon="shield"
809
+ fieldPath="access"
810
+ showMetadataAccess={permissions?.can_manage_record_access}
811
+ recordRestrictionGracePeriod={recordRestrictionGracePeriod}
812
+ allowRecordRestriction={allowRecordRestriction}
813
+ id="visibility-section"
814
+ />
815
+ </Overridable>
816
+ {permissions?.can_delete_draft && (
817
+ <Overridable
818
+ id="InvenioAppRdm.Deposit.CardDeleteButton.container"
819
+ record={record}
820
+ >
821
+ <Card>
822
+ <Card.Content>
823
+ <Grid relaxed>
824
+ <Grid.Column width={16}>
825
+ <DeleteButton fluid />
826
+ </Grid.Column>
827
+
828
+ {record.is_published && recordDeletion["enabled"] && (
829
+ <Grid.Column width={16} className="pt-0">
830
+ <RecordDeletion
831
+ record={record}
832
+ permissions={permissions}
833
+ recordDeletion={recordDeletion}
834
+ options={
835
+ this.vocabularies.metadata
836
+ .deletion_request_removal_reasons
837
+ }
838
+ disabled={!recordDeletion["allowed"]}
839
+ />
840
+ </Grid.Column>
841
+ )}
842
+ </Grid>
843
+ </Card.Content>
844
+ </Card>
845
+ </Overridable>
846
+ )}
519
847
  </Sticky>
520
848
  </Grid.Column>
521
849
  </Ref>
522
- </Grid.Row>
523
- </Grid>
524
- </Container>
525
- </DepositFormApp>
850
+ </Grid>
851
+ </Container>
852
+ </DepositFormApp>
853
+ </Overridable>
526
854
  );
527
855
  }
528
856
  }
857
+
858
+ RDMDepositForm.propTypes = {
859
+ groupsEnabled: PropTypes.bool.isRequired,
860
+ config: PropTypes.object.isRequired,
861
+ recordRestrictionGracePeriod: PropTypes.number.isRequired,
862
+ allowRecordRestriction: PropTypes.bool.isRequired,
863
+ recordDeletion: PropTypes.object,
864
+ fileModification: PropTypes.object,
865
+ record: PropTypes.object.isRequired,
866
+ preselectedCommunity: PropTypes.object,
867
+ files: PropTypes.object,
868
+ permissions: PropTypes.object,
869
+ filesLocked: PropTypes.bool,
870
+ allowEmptyFiles: PropTypes.bool,
871
+ useUppy: PropTypes.bool,
872
+ };
873
+
874
+ RDMDepositForm.defaultProps = {
875
+ preselectedCommunity: undefined,
876
+ files: null,
877
+ permissions: null,
878
+ filesLocked: false,
879
+ allowEmptyFiles: true,
880
+ useUppy: false,
881
+ recordDeletion: {},
882
+ fileModification: {},
883
+ };