This article is for plug-in developers who store persistent data within an InDesign document. It discusses strategies for handling situations when you open a document containing that data, but the plug-in isn't present. Plug-ins you create can add data to the document. When your plug-in is present and loaded, it can open and interpret the data. However, if you remove the plug-in, or give the document to someone who doesn't have it, the plug-in isn't available to interpret the data.

You can control what warning is shown when the document is opened without the plug-in. The application can warn when a document that contains data created by a plug-in that isn't available. There are three warning levels: critical, default, and ignore. By setting the warning level, the plug-in can specify the relative importance of its data. Data created by the plug-in has the “default” warning level. However, you can override the setting and identify the data as more important (critical) or less important (ignored). You can modify this important setting by adding resources to the plug-in’s boss definition file:

  • CriticalTags — A “critical” warning tells the user that the document contains data from missing plug-ins and advises the user not to open the document. If the user opens the document, the application opens an untitled copy, to preserve the original document. Use this level when the data is visible in the document or contributes objects owned by another object in the database. (For example, use it when the document has text attributes, owned by the text model.)
  • DefaultTags — A “default” warning tells the user that the document contains data from missing plug-ins. It asks whether to continue the open operation. If the user continues the open operation, the application opens the original document. Use this level when the data is self-contained and invisible to the user, but the user could encounter missing function that would have been provided by the plug-in.
  • IgnoreTags — An “ignore” warning provides no warning message at all. The application proceeds with the open operation as if there were no missing plug-ins. Use this level when the data is invisible to the user and self-contained. In this case, it's unnecessary to know the plug-in was involved in the construction of this document. If the plug-in stored data in the document, but that data is used only by this plug-in and does not reference objects supplied by other plug-ins, the user sees no difference in the document when the plug-in is missing. For example, the plug-in could store preferences information in every document for its own use.

You can set these warnings to use ClassID (when the plug-in creates new bosses) or ImplementationID (when the plug-in adds interfaces to existing bosses) values as triggers. Use kImplementationIDSpace to specify a list of ImplementationID values, and kClassIDSpace for ClassID values. You can put any number of IDs in the list, but all the IDs must be of the same type. Use a second resource to mark IDs of another type. The following examples set the warning level to ignore data stored by the PersistentList plug-in in the SDK by adding two resources to PstLst.fr:

This example marks implementation IDs as ignored:

 

resource IgnoreTags(1) {
    kImplementationIDSpace, {
        kPstLstDataPersistImpl,
        kPstLstUIDListImpl,
        }
};

This example marks boss classes as ignored:

resource IgnoreTags(2) {
    kClassIDSpace, {
        kPstLstDataBoss,
        }
};

 

It's unnecessary to mark any IDs that do not appear in the document (for example, data that was written out to saved data). It's also unnecessary to mark implementations that are not persistent. You do not need to mark IDs if you want the default behavior.

“Missing plug-in alert” is activated when a document is opened and contains data from one or more missing plug-ins that cannot be ignored. The document contains a list of the plug-ins that added data to it. Each piece of data added has an importance attached to it. This importance can be critical, default, or ignorable. Data marked as ignorable does not cause the alert to activate. Data marked as critical or default causes the alert to activate. With critical data, the alert works more strongly. The alert is the only difference between critical and default data. The alert tells the user that data is missing, presents a list of missing plug-ins, and allows the user to continue or cancel the open operation. Each missing plug-in has the chance to add a string to the alert that specifies additional useful information (for example, a URL for purchasing or downloading the plug-in). The alert is modeled on the missing-font alert. The “Don’t Warn Again For These Plug-ins” option is deselected by default. If this option is selected, the alert is not activated the next time a document is opened and any subset of the listed plug-ins is missing (and no other plug-ins are missing). This option allows users accustomed to seeing (and ignoring) alerts concerning specific plug-ins to automatically bypass the alert, while still getting warned about data from any plug-ins newly found to be missing. The alert is activated again if a document is opened that uses other missing plug-ins. The alert is activated again if the “Don’t Warn Again For These Plug-ins” option is deselected.

For more help, see the programming guides in the docs\guide folder of the InDesign SDK.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License  Twitter™ and Facebook posts are not covered under the terms of Creative Commons.

Legal Notices   |   Online Privacy Policy