Manifest

manifest.json

Manifest.json is where you specify some behavior of the template.
Although only required for multi items templates, it's advisable to always add a manifest to your template.

{
    "editWitoutPostback": true,
    "editRole": "OpenContentEditor",
    "index":  true, /* required for search */,
    "disableEdit": true,
    "detailMetaTitle": "{{#if Seo.MetaTitle}}{{Seo.MetaTitle}}{{else}}{{Title}}{{/if}}",
    "detailMetaDescription": "{{#if Seo.MetaDescription}}{{Seo.MetaDescription}}{{else}}{{Description}}{{/if}}",
    "detailUrl": "{{Category.Title}}-{{#if Seo.Slug}}{{Seo.Slug}}{{else}}{{Title}}{{/if}}",
    "detailMeta": "{{#if Image}}<meta property=\"og:image\" content=\"{{Image}}\" />{{/if}}<meta property=\"og:type\" content=\"article\" />",
    "templates": {
        "template": {
            "type": "multiple", /* single or multiple*/
            "title": "List",     
            "clientSide": true,
            "main": {
                "template": "template.hbs",
                "partialTemplates": {
                    "item": {
                        "template": "item.hbs"
                    }
                },
                "schemaInTemplate": true,
                "optionsInTemplate": true,
              	"dnnsearch": true,
                "dnnSearchTitle": "{{Title}}",
                "dnnSearchDescription": "{{Summary}}",
                "dnnSearchText": "{{Text}}"
            },
            "detail": {
                "template": "detail.hbs",
                "partialTemplates": {
                    "item": {
                        "template": "item.hbs",
                        "clientside" :  true
                    }
                },
                "schemaInTemplate": true,
                "optionsInTemplate": true
            }
        },
        "categories": {
            "type": "multiple", /* single or multiple*/
            "title": "Categories",
            "disableEdit": true,
            "main": {
                "template": "categories.hbs",
                "schemaInTemplate": true,
                "optionsInTemplate": true,
               	"dataInTemplate": false,
                "additionalDataInTemplate": true
            }           
        }
    },
   },
   "additionalData": {
        "Intro": {
            "title": "Introduction",
            "scope": "tabmodule" /* tabmodule, module, tab, portal */                    
        },
        "Categories": {
            "title": "Categories"          
        },
        "Tags": {
            "title": "Tags"
        },
        "Customers": {
            "title": "Customers",
            "dataModuleId": 123,
            "dataTabId": 456
        }
    },
   "dataSource": "TrelloOpenContentDataProvider",
   "dataSourceConfig": {
       "username":"JohnDoe",
       "password":"Mdd*951;"
   }
}

Manifest

NameDefault ValueRemark
editWitoutPostbackfalsein edit mode wrap the view control in an updatepanel to avoid full page postback
editRolewhen specified, users with the editRole can add records and edit records created by themselves. (only applicable for multi items templates)
editRoleAllItemsfalseWhen you set this to true, the user in the "editRole" can edit all items, not only the ones he\she created (see "editRole")
indexfalseContent is indexed with Lucene for search, filtering & sorting.
(new in v2.1)

See also Search, Filter and Sort
detailMetaTitlehandlebars template
detailMetaDescriptionhandlebars template
detailUrlhandlebars template
detailMetahandlebars template
templatessee Templatelist of templates included in the template folder
additionalDatasee additionalData
dataSourceOpenContentProvidera string with the name of an OpenContent DataSourceProvider.
See also External Datasources
optional
dataSourceConfigany valid json that will be given to the datasource provider via the DataSourceContext parameters in the interface calls.
See also External Datasources
optional
advancedfalseIf true this Template folder will not be shown in the initial template selection screen (buttons), but only in the advanced screen (drop down).
disableEditfalseIf true edit is disabled
deleteFilesfalseDelete files in /Portals/[portal id]/OpenContent/Files/[module id]/[idem Id] when a item is deleted

Template

NameDefault valueRemark
typesingle or multiple
titletext listed in the templates dropdown lists
disableEditfalseIf true edit is disabled for this specific template
clientSideDatafalsethe content is served through webapi only (not available in the server side template)
(new in v2.1)

See also Search, Filter and Sort
mainsee Template Filesingle or list template (this is required)
detailsee Template Filedetail template

Template File

NameDefault ValueRemark
templatefile name of the template file (.hbs or .cshtml)
partialTemplatesOnly for handlebars templates. Loads additional partial template files.
schemaInTemplatefalseMake the schema.json available as a variable schema (Model.Schema for razor) in template files
optionsInTemplatefalseMake the options.json available as a variable Options (Model.Options for razor) in template files
dataInTemplatetrueMake the data available in the template
additionalDataInTemplatefalseMake the additional data available in the template
labelsInTemplatefalseTransform enum fields value to object with "value" (stored data from schema.json) and "label" (rendered value from options.json)
dnnsearchfalseIndicating whether integrate module content in DNN search
dnnSearchTitleTemplate specifying the field(s) to use for document Title in DNN search results. (Handlebars template)
dnnSearchDescriptionTemplate specifying the field(s) to use for document Description in DNN search results. (Handlebars template). Search Text will be used if you leave this empty
dnnSearchTextTemplate specifying the field(s) to use for document indexing in DNN search. (Handlebars template).

Partial Templates

NameDefault valueRemark
templatefile name of the partial template file
clientSidefalseFile is rendered as i at the end of the module content. For example a handlebars client side template in a script tag. (new in v2.1)

Additional Data

NameDefault valueRemarkExample
titleText shown in module actions menu
scopemoduletabmodule, module, tab, portal
not applicable if dataModuleId is supplied.
storageKey
modelKeydeprecated
dataModuleId
dataTabId
If you want to relate to the (main) data of another module, then specify its ModuleId and TabId

See also Relations
"Customers": {
"title": "Customers",
"dataModuleId": 123,
"dataTabId": 456
}