- Introduction
- Non-editable fields
- Architecture
- Customising ODG email
- PXM InDesign custom task
For the final post on this project I will run through how we can add some custom functionality to InDesign, as we have previously created a custom (non-editable) snippet which can be used in InDesign, however there is no way to create one except through Sitecore.
The plan is to create a custom PXM task that can be executed in InDesign, so that when a Page item is selected (in the project panel) and we execute our task, a Non-editable Snippet item will be created under that Page.
There are only a couple of posts that I've seen on how to create a custom task, however it's more than enough to go off for our scenario which is not terribly complex. Those posts cover how to create a custom task, so follow along and set up your custom task. As is mentioned in the posts, our task is passed a dictionary of various values from InDesign; in our case the only relevant one is the ID of the item selected in the project panel, which is
ci_projectPanel
. Once we know that we can get the relevant item, check that it is a Page, and create a new item beneath it. Simple :)I've also created a gist for the full class, in a more legible format. This code is untested but should work as described.
public string ExecuteTask(Dictionary<string, object> dictionary) { Item page = Sitecore.Context.Database.GetItem(new ID(dictionary["ci_projectPanel"].ToString())); if (page.TemplateID != new ID("{6BFA47BA-F73C-48DB-9170-C0CC94179EC7}")) { return "Please select a page under which to add the non-editable snippet"; } page.Add("Non-Editable", new TemplateID(new ID("{C0FD5401-A2A5-4205-831D-DF06120B389E}"))); return $"Created custom snippet under page {page.Name}."; }
No comments:
Post a Comment