<!--Content built using /OpenForum/Javascript/PageBuilder/default-page.builder.js 0.0.7 Gloomy November builder and renderer DefaultRenderer v1.08 2021 Covid release-->
<!-- Generated by Page Block Editor v 0.0.1 -->
<div class='row'><h2>Overview</h2><p>OpenForum is a web application server that can be edited while running, and in the browser. Similar to how a wiki works, OpenForum can be edited by any authorised editor, but rather than just being able to create content, an editor can also create web services.</p><h2>Anatomy of a Page</h2><p>OpenForum is built around the concept of pages. Each page has a URL eg. /OpenForum/Sandbox. The content for the page is contained in a directory and contains a number of standard files that define its content and its behaviour.</p><h2>Special Page Files and Their Purpose</h2><p>A page in OpenForum constists of a set of files that generate and support a web page.</p><h3>page.content (required)</h3><p>The page content file contains the static content of the page. This can use a mix of OpenForum wiki syntax and html. When saved, it is converted into html and saved as the files page.html and page.html.fragment</p><p>page.html contains the file page.html.template that normally adds a standard header and foot to the page, whereas page.html.fragment just contains page.content converted to html. The content of page.html.fragment is generated so the content can be included in another page if required.</p><h3>page.html.template (optional, inherited)</h3><p>On most occasions, you will not include a page.html.template file. When a page is built (as when page.content is saved) the page builder will search up the page tree for a page.html.template file. If none is found, it will take the page.html.template from the page ...?</p><p>The file page.html.template contains the template used to generate the page. Normally this contains the standard header and footer. Within the header, the script page.js will be imported. See: File inheritance</p><p>The same page.html.template file can also be referenced by several pages by referenceing it as a link. This is done by createing a file page.html.template.link that contains the path to the file to include. This can be done with any file that needs to be included in multiple pages from a single source. See: File in linking</p><h3>page.js (required)</h3><p>The page.js file contains the script for the current page. The script open-forum.js will also be included. page.js normally includes a definition of the function OpenForum.init that will be run once all page dependencies and content has been loaded.</p><h3>page.html (generated)</h3><p>This is the content that will be displayed when the page is requested. eg. If a page /HomePage is requested, the file /HomePage/page.html is served. This file will be overwritten whenever a file is saved in the page, a page refresh is requested or the site is rebuilt.</p><h3>page.html.fragment (generated)</h3><p>This is the page.content file, converted to html but without being inserted into the page.html.template file.</p><h3>data.json (generated)</h3><p>The data.json file contains information about the current page in a json format. Commonly it just contains the page's path and title, but can contain other data such as information about importing external resources. See: Plugins</p><h3>access.json (optional, inherited)</h3><p>The access.json file can be used to set the access rights to the page. Users or Groups can be given access to do perform different actions on a page such as read, update or delete</p><h3>get.sjs (optional)</h3><p>The files get.sjs and post.sjs add server side services to a page. If a get.sjs file is present on a page, the get.sjs script is run on the server rather than just returning the content from page.html file. The extension .sjs stands for server side javascript. It can use a number of helper services and plugins to call services on other sites, access databases and call Java apis. See: server side javascript</p><h3>post.sjs (optional)</h3><p>Similar to get.sjs but called when a post request is sent to the server.</p><h3>page.build.js (optional)</h3><p>Including a page.build.js file on your page will cause this script to be run on the server to build the page rather than the standard build script. See: bespoke page builder</p><h2>Special Pages and their Purpose</h2><h3><a href="/OpenForum">OpenForum</a></h3><p>All of the pages, code and services to run and manage an OpenForum server are held in pages under this page.</p><h3><a href="/OpenForum/Configuration">Configuration</a></h3><p>Used to define some of the static information about the server such as the location of the home page, the servers web address and the administrators email address.</p><h3><a href="/OpenForum/Authentication">Authentication</a></h3><p>Contains the server side code to authenticate users when they login.</p><h3><a href="/OpenForum/Access">Authorization</a></h3><p>Contains the server side code to check if a user is authorised to access or modifiy pages.</p><h3><a href="/OpenForum/Access/UserAdministration">User Administration</a></h3><p>A simple implementation of user administration with user and group inormation stored in pages on the server. It is relativly simple to implement integration with other user administration, authentication and authorization services.</p><h3><a href="/OpenForum/DeletedPages">Deleted Pages</a></h3><p>Contains a copy of all of the deleted pages on the server. No page is truly deleted, it is moved to this page from where it can be undeleted.</p><h3>history</h3><p>Each page has a child page called history. This page contains a copy of all the files on a page when they are changed. It acts as a history of a pages changes, so you can rewind a file to a previous version or look at changes made.</p><h3>private</h3><p>A page with the name private has special access rights and can currently only be read by the Admin user.</p><h3>Built in Services</h3><p>OpenForum has a whole host of built in services. Here is a list of some of them and links to reference documentation:</p><ul><li>The Editor - The best way to edit OpenForum pages. An in browser editor with plugins and documentation links to make page editing easy.</li><li>System Monitor - A page giving information about the servers state and load.</li><li>Triggers - The definition of server side code that can be run when certain event occur, at regular periods or at specific times.</li><li>Message Queue - A simple server side message queue that can be used to communicate between services and with pages. Messages only have a short life and are restricted in size and number.</li><li>Giraffe - A graphics library for adding interactive graphics to your pages.</li><li>Error Pages - Pages that are returned when specific html errors occur such as 404 or 500 errors.</li><li>Page Templates - A set of ready to use page templates.</li><li>Actions - Server side services that can be called to do things like save and append to files, request pages are rebuilt or get the time on the server.</li><li>Extensions - A set of extensions to the standard OpenForum wiki markup that are short cuts for adding features to pages such as buttons, crumb trails or insert content from another page.</li><li>Javascript - A whole host of browser side javascript, from speech synthesis to document generation. Some of this may be moved to addons in the future.</li></ul>
</div>
