Skip to content

Commit b60be24

Browse files
sakshamarora1ntarocco
authored andcommitted
docs: operate: customize: Tutorial for checkboxes in publish modal
1 parent 7370e13 commit b60be24

File tree

4 files changed

+73
-0
lines changed

4 files changed

+73
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Add extra checkboxes when publishing or submitting to community
2+
3+
InvenioRDM allows you to customize the publish modal by adding extra checkboxes for user confirmation (e.g., terms of service, data policy). This is useful for compliance and custom workflows.
4+
5+
## Define parameters to override
6+
7+
You can override the default behavior of modals by customizing their parameters or injecting additional elements.
8+
9+
### Define the extra checkbox fields (a list) using the extraCheckboxes parameter
10+
11+
```javascript
12+
import { i18next } from "@translations/invenio_rdm_records/i18next";
13+
import { PublishModal } from "@js/invenio_rdm_records";
14+
import { parametrize } from "react-overridable";
15+
16+
export const parameters = {
17+
extraCheckboxes: [
18+
{
19+
fieldPath: "acceptTermsOfService",
20+
text: i18next.t(
21+
"I confirm that this record complies with the data policy and terms of service."
22+
),
23+
},
24+
],
25+
};
26+
27+
export const PublishModalComponent = parametrize(PublishModal, parameters);
28+
```
29+
30+
![Publish modal with checkbox](imgs/extra_modal_checkboxes.png)
31+
32+
### You can also inject extra UI elements before or after the checkboxes
33+
34+
```javascript
35+
import { i18next } from "@translations/invenio_rdm_records/i18next";
36+
import { SubmitReviewModal } from "@js/invenio_rdm_records";
37+
import { parametrize } from "react-overridable";
38+
39+
const LegalDisclaimer = () => (
40+
<>
41+
<p className="text-xs">
42+
By publishing, you agree to our <a href="/terms" className="underline">terms of service</a>.
43+
</p>
44+
<p className="text-xs mt-1">This action is irreversible.</p>
45+
</>
46+
);
47+
48+
export const parameters = {
49+
beforeContent: <p className="text-sm mb-2">Please review before continuing:</p>,
50+
afterContent: <LegalDisclaimer />,
51+
};
52+
53+
export const SubmitReviewModalComponent = parametrize(SubmitReviewModal, parameters);
54+
```
55+
56+
![Submit Review modal with extra content](imgs/extra_modal_content.png)
57+
58+
#### Override the components in the overridableRegistry mapping
59+
60+
```javascript
61+
export const overriddenComponents = {
62+
"InvenioRdmRecords.PublishModal.container": PublishModalComponent,
63+
"InvenioRdmRecords.SubmitReviewModal.container": SubmitReviewModalComponent,
64+
};
65+
```
66+
67+
And then re-build the assets for the changes to take effect.
68+
69+
```sh
70+
invenio-cli assets build
71+
```
72+
40.5 KB
Loading
62.9 KB
Loading

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ nav:
135135
- Overview: "operate/customize/notifications.md"
136136
- Modify notifications: operate/customize/notifications_modify.md
137137
- Require a community to publish: "operate/customize/require_community.md"
138+
- Add extra checkboxes when publishing: "operate/customize/extra_checkbox.md"
138139
- Restrict community creation: "operate/customize/restrict_community_creation.md"
139140
- Restrict access to pages: operate/customize/restrict_access.md
140141
- Search:

0 commit comments

Comments
 (0)