| Action | Description | |
| Check for Page Differences | Walks the dev and live trees, showing files whose timestamps or MD5 hashes differ so you can review pending changes before publishing. | |
| Publish Page (practice) | Runs the full pipeline (copy log, path replacement, translation, TODO/service scans, deletions calculation) but does not touch the live tree. | |
| Publish Page (for real) | Copies attachments to the live location, rewrites `/` references, ensures a template link is set, refreshes the page, and produces release notes. | |
| Reverse Publish | Copies the live page back into `/...` so you can bring hotfixes or emergency edits under source control. | |
File translation and rewriting
- Text-based attachments (`.content`, `.js`, `.sjs`, `.html`, `.json`, etc.) have `/` segments removed automatically before being saved to the live page.
- If `development-translation.sjs` exists in the dev page, it is executed once per text file, receiving the file contents as `data` and returning the transformed string.
- Binary files are copied as-is, while derived files (`page.html`, `page.html.fragment`) are regenerated on the live side instead of copied.
Special files and configuration
- publish-config.json – Extends the exclusion list with `excludedFiles` and can hold future toggles; place it alongside the dev page you publish.
- development-translation.sjs – Optional per-page hook to perform extra string replacements or localization steps.
- do-not-release.txt – Acts as a guardrail; publishing aborts with its message until the file is removed.
- release-notes.html.fragment – Stores the accordion-formatted log of each publish run under the dev page; great for audits.
- process-deletions.sjs – Autogenerated commands to remove files that no longer exist in dev; keep it under version control and run manually once reviewed.
Deletions pipeline
Publisher never deletes files immediately. Instead it compares the live attachments with the dev set, and everything that disappears is appended as `file.deleteAttachmentNoBackup(...)` statements inside `process-deletions.sjs`. This gives you a chance to run the deletions in a maintenance window and provides a paper trail of removals.
Troubleshooting tips
- Ensure references inside your content point to the post-publish path (e.g. `/OpenForum/Documentation/...`) rather than `/...` so inserts resolve after deployment.
- If release notes mention missing services, publish those service pages as well or adjust the calls to non-development paths.
- Use Reverse Publish when an emergency live edit occurs so you can pull it back into `/Development` before the next release.
- When translation scripts produce unexpected output, re-run practice mode and inspect the logged "Applying transform script" entries to see which file caused the issue.
Service definition
/OpenForum/AddOn/Publisher Sevice API Version 1.1.1
Get Actions
Action publish
Parameters
| Name | Description |
| pageName (required=true) | {{parameter.description}} |
| practice (required=true) | {{parameter.description}} |
| debug (required=false) | {{parameter.description}} |