Comments
Jump to navigation
Jump to search
comments
Item 1
name
name 1
content
content 1
replies
Item 1
name
name 1b
content
content 1b
replies
Item 2
name
name 2
content
content 2
replies
This page demonstrates the following features:
- compounded schemas: the JsonSchema:Comment is a reference within JsonSchema:Comments
- use of nested template using
children(e.g. Template:Comments ) edit_schemaandedit_pathparameters to add/edit items at the current level of the tree (see Template:Comments.comments)- use of parameter
depthto add margin to the content (see Template:Comments.comments.Item.replies) - use of property
x-render-templateto specify a fixed template name for the related subschema. This is necessary for nested items otherwise the processor would require a template for each level (see JsonSchema:Comment) - use of
allOfto override thex-hiddenproperty in the replies subschema from the parent schema. This allows the base schema to edit all data, while the popup forms to keep the replies array hidden. (see JsonSchema:Comments and the notice for more information)
In the JsonSchema:Comment the replies subschema is set to hidden, in order to hide it from the "New comment" and "Add reply" forms, but at the same time to create an empty array with replies in order to allow the template processor to render the related container. |
Schemas:
Templates:
- Template:Comments
- Template:Comments.comments
- Template:Comments.comments.Item
- Template:Comments.comments.Item.replies
Parser function:
{{#jsonformsrender:{{FULLPAGENAME}}
|slot=jsonforms-data
}}
Comments
Template:Comments.comments.Item
Name: name 1
Message: content 1
Template:Comments.comments.Item.replies
Replies
Template:Comments.comments.Item
Name: name 1b
Message: content 1b
Template:Comments.comments.Item.replies
Replies
loading form
Params
{
"key": "replies",
"properties": "",
"count": 0,
"hasChildren": 0,
"path": "comments.0.replies.0.replies",
"depth": 5,
"templateName": "Comments.comments.Item.replies",
"data": []
}Params
{
"key": 0,
"properties": "name, content, createdAt, replies",
"count": 4,
"hasChildren": 4,
"path": "comments.0.replies.0",
"depth": 4,
"templateName": "Template:Comments.comments.Item",
"data": {
"name": "name 1b",
"content": "content 1b",
"createdAt": "20260807131010",
"replies": []
},
"name": "name 1b",
"content": "content 1b",
"createdAt": "20260807131010",
"replies": "<subitem>"
}loading form
Params
{
"key": "replies",
"properties": "0",
"count": 1,
"hasChildren": 1,
"path": "comments.0.replies",
"depth": 3,
"templateName": "Comments.comments.Item.replies",
"data": [
{
"name": "name 1b",
"content": "content 1b",
"createdAt": "20260807131010",
"replies": []
}
],
"0": "<subitem>"
}Params
{
"key": 0,
"properties": "name, content, createdAt, replies",
"count": 4,
"hasChildren": 4,
"path": "comments.0",
"depth": 2,
"templateName": "Template:Comments.comments.Item",
"data": {
"name": "name 1",
"content": "content 1",
"createdAt": "20260807130339",
"replies": [
{
"name": "name 1b",
"content": "content 1b",
"createdAt": "20260807131010",
"replies": []
}
]
},
"name": "name 1",
"content": "content 1",
"createdAt": "20260807130339",
"replies": "<subitem>"
}Template:Comments.comments.Item
Name: name 2
Message: content 2
Template:Comments.comments.Item.replies
Replies
loading form
Params
{
"key": "replies",
"properties": "",
"count": 0,
"hasChildren": 0,
"path": "comments.1.replies",
"depth": 3,
"templateName": "Comments.comments.Item.replies",
"data": []
}Params
{
"key": 1,
"properties": "name, content, createdAt, replies",
"count": 4,
"hasChildren": 4,
"path": "comments.1",
"depth": 2,
"templateName": "Template:Comments.comments.Item",
"data": {
"name": "name 2",
"content": "content 2",
"createdAt": "20260807130930",
"replies": []
},
"name": "name 2",
"content": "content 2",
"createdAt": "20260807130930",
"replies": "<subitem>"
}
loading form
Params
{
"key": "comments",
"properties": "0, 1",
"count": 2,
"hasChildren": 2,
"path": "comments",
"depth": 1,
"templateName": "Template:Comments.comments",
"data": [
{
"name": "name 1",
"content": "content 1",
"createdAt": "20260807130339",
"replies": [
{
"name": "name 1b",
"content": "content 1b",
"createdAt": "20260807131010",
"replies": []
}
]
},
{
"name": "name 2",
"content": "content 2",
"createdAt": "20260807130930",
"replies": []
}
],
"0": "<subitem>",
"1": "<subitem>"
}Params
{
"key": "",
"properties": "comments",
"count": 1,
"hasChildren": 1,
"path": "",
"depth": 0,
"templateName": "Template:Comments",
"data": {
"comments": [
{
"name": "name 1",
"content": "content 1",
"createdAt": "20260807130339",
"replies": [
{
"name": "name 1b",
"content": "content 1b",
"createdAt": "20260807131010",
"replies": []
}
]
},
{
"name": "name 2",
"content": "content 2",
"createdAt": "20260807130930",
"replies": []
}
]
},
"comments": "<subitem>"
}
The following form is rendered with this parser function:
{{#jsonforms:Default
|schema=Comments
|editor_options.debug=true
|view=inline
|title=comments
|edit={{FULLPAGENAME}}
|width=800px
}}
(it's not necessary for the purpose of this demo, and the article's data can usually be edited using the action "Edit schema")
loading form
See also