Info.plist

This document is a list of all the keys that can be placed in a Sandvox plugin's Info.plist file.

Standard Keys

The following keys should be set for a component.

CFBundleDevelopmentRegion
The base language. For English, we use the two-letter code 'en' to match our style.
CFBundleExecutable
The name of your executable file, usually the component without indication of its type, e.g. foo. Karelia uses ${EXECUTABLE_NAME}
CFBundleGetInfoString
Version/Copyright string. Karelia uses ${SANDVOX_VERSION} (${SVN_VERSION}), (c) 2008 Karelia Software
CFBundleIdentifier
Unique identifier in reverse domain name format, e.g. org.johndoe.sandvox.FooPagelet. Karelia uses sandvox.${PROJECT_NAME}
CFBundleName
Name of product. Karelia uses ${PRODUCT_NAME}
CFBundleShortVersionString
Release version number of your plugin, e.g. 1.0. Karelia uses ${SANDVOX_VERSION}
CFBundleSignature
Should be Svox
CFBundleVersion
Optional build number of your plugin, e.g. 477. Karelia uses ${SVN_VERSION}
NSPrincipalClass
Class name of your Plugin Delegate, e.g. FooDelegate

General Sandvox Plug In Keys

KTCSSClassName
When generating your plugin's HTML content, Sandvox will enclose it in a div element. This key specifies the CSS class name for that div so that designs can customize it. Sandvox will automatically append the class name with -page or -pagelet depending on the usage, so do not specify this in the property. e.g. use photo rather than photo-page.
KSHelpAnchor
The name of the help page for the pagelet, page or index. Be sure to use underscores and not include any extension. Karelia Only, since it refers to help anchors within Sandvox.
KTPluginIconName
Name of resource file for this plugin's 32x32 icon, as it shows up in the popup menus. e.g. foo.png. Can be an image file like png or tiff, or an icns file, which has the advantage of having a 16-pixel version. this can actually be an absolute path to a system file, if you wish to use an image already installed on Tiger/Leopard.
KTPluginName
Human-readable, localizable version of this plugin. Avoid suffix like 'Page' and 'Pagelet if possible. e.g. Foo Badge
KTPluginDescription
The human-readable, localizable short description of the plugin's function. (Not currently used in the Sandvox UI.)
KTPluginPriority
An integer representing where it should go in the popup list. 9 is for advanced "pro" elements only; 5 is the normal value that puts it below the basic items. e.g. <integer>5</integer>
KTTemplateName
Optional name of HTML resource file (without .html extension) that is the template file that is processed to build a page's content. If not specified, a file "template.html" will be assumed.
KTPluginCSSFilesNeeded
Array of CSS resource files used by your plugin; the contents are appended to the CSS generated for your site. If you don't know the resources to add until runtime, you can define
- (void)addCSSFilePathToSet:(NSMutableSet *)aSet forPage:(KTPage *)aPage;
KTPluginResourcesNeeded
Array of resource files used by your plugin; the contents are appended uploaded to the site if this plugin is used.
KSMinimumAppVersion
Minimum application version required for this plugin to function. Specify a value here if your plugin will not function on versions of Sandvox below a particular version.

Element Plug In Keys

KTPluginUntitledName
The human-readable, localizable name of an untitled item when it is first created. It can have the name 'Untitled' in it, or it might just indicate its function.
KTPluginNibFile
Name of the nib file (minus the .nib extension) that Sandvox will load into the Inspector.
KTElementAllowsIntroduction
A boolean specifying if the element should allow the user to enter introductory text before the element's content. Defaults to NO
KTElementSupportsPageUsage
A boolean specifying if Sandvox is allowed to create full pages from the element. Defaults to NO
KTElementSupportsPageletUsage
A boolean specifying if Sandvox is allowed to create pagelets from the element. Defaults to YES
KTPageName
Human-readable, localizable version of this plugin for when the plugin is used specifically as a page.
KTPageAllowsCallouts
A boolean specifying if the page supports callouts. Defaults to NO.
KTPageAllowsNavigation
When a page is placed in a suitable collection, whether the user should be able to navigate to the next and previous pages. Defaults to YES
KTPageDisableComments
For certain specialized page plugins, you may wish to disallow the user from turning on comments. If so, specify YES for this key. Defaults to NO. You can also change this setting at runtime using the KTPage API.
KTPageNibFile
Name of the nib file specific to pages (minus the .nib extension).
KTPageSidebarChangeable
A boolean specifying if the user can turn the sidebar on and off when the element is displayed as a page. Defaults to YES.
KTPageSeparateInspectorSegment
A boolean specifying if the plugin's Inspector should be displayed separately from the Page Inspector. Only affects pages. Please avoid using in third party plugins. Defaults to NO.
KTPageUntitledName
Like KTPluginUntitledName but specific to page usage. Falls back to the KTPluginUntitledName value.
KTPageShowSidebar
A boolean specifying if newly created pages should have the sidebar visible. For example the Photo plugin has this set to NO. Defaults to YES
KTPageletCanHaveTitle
Only affects the plugin when displayed as a pagelet. A boolean specifying if the pagelet is allowed a title. Defaults to YES
KTPageletName
Human-readable, localizable version of this plugin for when the plugin is used specifically as a pagelet.
KTPageletUntitledName
Like KTPluginUntitledName but specific to pagelet usage. Falls back to the KTPluginUntitledName value.
KTPluginInitialProperties
An optional dictionary containing the initial properties of a newly created plugin.

Index Plug In Keys

KTPresets
Dictionary of index presets so that one index type can be shared among several different user-visible index types.
KTPreferredPageBundleIdentifier
Identifier of which page is created when one creates a collection with the given index.
KTIndexNavigationArrowsStyle
How child pages' navigation arrows should appear. Specify
  • 0 - No navigation (default)
  • 1 - Graphical arrows
  • 2 - Textual navigation

Example/Template

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>CFBundleDevelopmentRegion</key>
        <string>en</string>
        <key>CFBundleExecutable</key>
        <string>${EXECUTABLE_NAME}</string>
        <key>CFBundleGetInfoString</key>
        <string>${SANDVOX_VERSION} (${SVN_VERSION}), (c) 2008 Karelia Software</string>
        <key>CFBundleIdentifier</key>
        <string>sandvox.${PROJECT_NAME}</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
        <string>${SANDVOX_VERSION}</string>
        <key>CFBundleSignature</key>
        <string>Svox</string>
        <key>CFBundleVersion</key>
        <string>${SVN_VERSION}</string>
        <key>KTElementSupportsPageletUsage</key>
        <true/>
        <key>KTElementSupportsPageUsage</key>
        <true/>
        <key>KSHelpAnchor</key>
        <string>Foo</string>
        <key>KSMinimumAppVersion</key>
        <string>1.5</string>
        <key>KTPageletCanHaveTitle</key>
        <true/>
        <key>KTPluginCSSFilesNeeded</key>
        <array/>
        <key>KTPluginIconName</key>
        <string>Foo</string>
        <key>KTPluginInitialProperties</key>
        <dict/>
        <key>KTPluginName</key>
        <string>Google Maps</string>
        <key>KTPluginNibFile</key>
        <string>Foo</string>
        <key>KTPluginPriority</key>
        <integer>5</integer>
        <key>KTPluginUntitledName</key>
        <string>My Google Map</string>
        <key>KTTemplateName</key>
        <string>FooTemplate</string>
        <key>NSPrincipalClass</key>
        <string>FooDelegate</string>
</dict>
</plist>
How can we improve this page? Let us know.