Plugins Overview
Data Types and Entity Names
Every kind of record in Project Notes has a name: projects, contacts, item_tracker and so on. Plugins use these names to put menus on the right records, to read and save data, and in the [$entity.column.row] placeholders that My Shortcuts and other plugins fill in.
Names
Plugins and shortcuts use the names in the first column. Project Notes XML files still use the database's own table names, which differ for three entities.
| Name | XML table name | Where the records appear |
|---|---|---|
projects |
projects |
Project List, Project Page |
contacts |
people |
Contacts List |
companies |
clients |
Companies List |
project_team |
project_people |
Project Page, Team tab |
project_locations |
project_locations |
Project Page, Files & Folders tab |
project_notes |
project_notes |
Notes, and the Project Page Notes tab |
meeting_attendees |
meeting_attendees |
A meeting's Attendees |
item_tracker |
item_tracker |
Item Tracker, and action items on projects and meetings |
item_tracker_updates |
item_tracker_updates |
A tracker item's comments |
status_report_items |
status_report_items |
Project Page, Status Report tab |
project_email_audiences |
project_email_audiences |
Saved report and meeting audiences |
Columns follow the same rule. A column that points to a contact is contact_id (stored as people_id or person_id), and one that points to a company is company_id (stored as client_id). The company's name is company_name.
Menus
A plugin's record menu names one entity. Right-click a record of that kind and the menu appears; on the Project Page, for example, a menu for project_team shows on the Team tab's rows and one for project_locations on Files & Folders. A menu that names no entity is a global menu and appears under Plugins in the app menu.
Placeholders
A placeholder has the form {{ entity.column }}: the entity and a column of the record you right-clicked. {{ projects.project_number }} is the project number of the project, {{ contacts.email }} the email address of the contact. For a row of a related list, add the row number after the entity: {{ project_team.2.role }}. Use * for every row: {{ project_team.*.email }} lists all the email addresses, separated by commas.
Shortcuts saved before plugins moved to JavaScript used the XML names ([$people.name.1]). My Shortcuts converts them to the current names and the {{ }} form the first time it starts.
Finding the columns
Export a record to XML to see every column it has, or ask from a plugin with data.schema("projects"), which also gives each column's type and allowed values. See JavaScript Plugins.