OpenForum Server — What it offers
OpenForum is a browser‑editable web application server: like a wiki that can also host and run web services. Authorized editors work entirely in the browser, creating content and server endpoints without restarting the server. It ships with an integrated web server and authentication, supports real‑time + static content, and can integrate with databases/REST/XML. Pages are hierarchical and inherit templates. See Introduction and Architecture.
1) Core idea & page architecture
Each page is a folder with well‑known files that define its content and behavior.
- page.content → source (OpenForum wiki + HTML). Saved content is compiled to page.html and page.html.fragment.
- page.html.template (inherited or linked via `.link`) → the wrapper/layout; usually loads page.js.
- page.js → client‑side script; OpenForum’s library (`open-forum.js`) is also loaded and `OpenForum.init()` commonly boots the page.
- access.json (optional, inherited) → per‑page read/update/delete permissions for users/groups.
- get.sjs / post.sjs (optional) → add server‑side JavaScript services for GET/POST.
- data.json (generated) → page metadata.
- page.build.js (optional) → override the page build process.
Useful background: Architecture.
2) Special “system” pages & built‑ins
- Special Pages (configuration, templates, authentication, authorization, users/groups, deleted pages, history).
- Editor & Content Editor for in‑browser authoring (Content Editor, Editor).
- Triggers (start / 10‑second timer / page‑change / rebuild).
- Message Queue (transient), Spider (iterate pages), System Monitor (runtime metrics & logs).
- Error Pages, Page Templates, File Templates.
- Actions (server APIs) at /OpenForum/Actions(/OpenForum/Actions).
3) Editing experience
The Content Editor is a two‑pane, block‑based editor focused on content pages (text/images). Left: overview + pages + image library. Right: sectioned WYSIWYG editing with add/move controls. You can drag images from the library, use Preview (updates on save), then Publish to go live. You can also create new pages and choose a category. See Content Editor.
The Advanced Editor exposes an overview, editors, plugins, and actions (Editor).
4) Markup & templating
- Standard wiki syntax (links, images, code, lists, headings, boxes, rules, tables): Kitchen Sink.
- Extended wiki markup short‑codes such as ScriptClip, ChildPagesList, Icon, HttpsOnly, CrumbTrail, Bookmarklet, MarkDown, InsertPage, etc.: Extended Markup.
- Front‑end framework: ZURB Foundation v5.5.3 is bundled to speed layout: Foundation.
5) Client‑side JavaScript (OpenForum JS)
A built‑in JS library provides high‑level primitives: dependency management and DOM scanning/binding; file/storage APIs (load/save/append/list), JSON/AJAX helpers (`JSON.get/post`), an offline‑aware OFX layer, table helpers, UI utilities, async helpers, and inter‑tab collaboration (IntraQ). See Open Forum Javascript.
- Dependency loading: `OpenForum.includeScript`, `OpenForum.addScript`
- DOM & binding: `OpenForum.scan`, `OpenForum.getObject`, `OpenForum.bind`
- Files/storage: `OpenForum.saveFile`, `OpenForum.getAttachments`, `OpenForum.Storage`
- AJAX/JSON: `JSON.get`, `JSON.post`, `OFX.get/post`
- Tables/UI/async: `OpenForum.Table.*`, `OpenForum.setTitle`, `OpenForum.setInterval`
- Collaboration: `OpenForum.IntraQ` (message bus)
6) Server‑side JavaScript & Actions
Add a get.sjs or post.sjs file to a page to turn it into an API endpoint. Server‑side code can call helper services (transaction/wiki/file/js) and Java APIs. A rich catalog of reusable endpoints lives under /OpenForum/Actions(/OpenForum/Actions) (e.g., Save, SaveImage, GetAttachments, Rebuild, SystemTime, Copy/Move/Delete, Pages, Publish, Zip).
Example: save text to an attachment via the Save action
POST /OpenForum/Actions/Save
Parameters: pageName, fileName, data
Example: save a canvas image via SaveImage from the browser
function saveCanvas(pageName,fileName,canvas){
var data = canvas.toDataURL().substring(22);
var post = new Post();
post.addItem("data",data).addItem("fileName",fileName).addItem("pageName",pageName);
JSON.post("/OpenForum/Actions/SaveImage","save",post.getData()).go();
}
More: Open Forum Server Side Javascript and Actions.
7) Graphics (Giraffe)
Giraffe is an integrated canvas graphics engine for 2D objects, animation and interaction.
OpenForum.includeScript("/OpenForum/Giraffe/giraffe.js");
var giraffeCanvas;
OpenForum.init = function() {
giraffeCanvas = Giraffe.quickStart("canvas");
giraffeCanvas.add(new Giraffe.Line(100,100,130,150));
};
See Giraffe for objects, animation, and interaction.
8) Deployment & operations
- Docker (recommended) and Zip install (Jetty bundled): Installation.
- System Monitor, Error Pages, Deleted Pages, history, Triggers, Spider: Special Pages.
9) Standard JavaScript reference
Quick references to core JS objects (Array, Date, Global, JSON, String) are bundled under Standard Javascript.
TL;DR
- Build dynamic sites and small apps in the browser with page‑scoped code and services.
- Compose UIs quickly using wiki markup + extensions, ZURB Foundation, and the OpenForum JS API.
- Add server endpoints with per‑page `.sjs` or call built‑in Actions; automate with triggers and the transient message queue.
- Deploy fast via Docker or a Jetty zip.