Front-End Request Lifecycle
While there may be any number of contextual events that are triggered, dependent upon the requested action, the events listed below generally occur during a typical front-end request.
When it comes to the front-end request lifecycle, if you're most interested in the final string of code that will be returned to the browser, then you'll want to be aware of m.event('__MuraResponse__'). That's a double-underscore in front of, and after "MuraResponse". As noted in the lifecycle below, the "MuraResponse" will be sent to the browser.
onGlobalRequestStart
onSiteRequestInit
onSiteRequestStart
standardEnableLockdownValidator
standardEnableLockdownHandler // if lockdown enabled
standardSetContentHandler
// if `previewid` exists
standardSetPreviewHandler
// else
standardSetAdTrackingHandler
standardWrongFilenameValidator
standardWrongFilenameHandler // if wrong filename
standard404Validator
standard404Handler // contextual: if content item not found
onSite404
standardWrongDomainValidator
standardWrongDomainHandler // if invalid domain
standardTrackSessionValidator
standardTrackSessionHandler // if session tracking enabled
standardSetIsOnDisplayHandler
standardDoActionsHandler // checks `doaction` (e.g., login, logout, etc.)
standardSetPermissionsHandler
standardRequireLoginValidator
standardRequireLoginHandler // if login required
standardSetLocaleHandler
standardMobileValidator
standardMobileHandler // if `request.muraMobileRequest` and no `altTheme`
standardSetCommentPermissions
standardDoResponseHandler
standardForceSSLValidator
standardForceSSLHandler // if necessary
// This is a great place to put your logic
// Mura begins compiling the code that will be returned to the browser
onRenderStart
// if content type is link
standardLinkTranslationHandler
// else if content type is file
standardFileTranslationHandler
standardFileTranslator
onBeforeFileRender
onAfterFileRender
// else
standardTranslationHandler // sets m.event('__MuraResponse__')
// if `returnformat` is JSON
standardJSONTranslator
onAPIResponse
on{Type}APIResponse
on{Type}{Subtype}APIResponse
onAPIError // if an error occurs
// else
standardHTMLTranslator // parses layout template and renders queues
// other events could be announced, based on template code
// `m.dspBody()` invokes several events (and is included in most templates)
// if event('display') is `search`
onSiteSearchRender
// else if event('display') is `editprofile`
onSiteEditProfileRender
// else if event('display') is `login`
onSiteLoginPromptRender
// else if content is restricted and user not allowed
onContentDenialRender
// else if content is not on display
onContentOfflineRender
// else if `m.event('display')` is not an empty string
onDisplayRender // allows you to have custom displays
// else
// default body rendering
on{Type}{Subtype}BodyRender // e.g., onPageDefaultBodyRender
// if a string isn't returned, then
on{Type}BodyRender // e.g., onPageBodyRender
// if a string still isn't returned, then
// Mura will look for files by content type
// `../{ThemeName}/content_types/{Type}_{Subtype}/index.cfm`
// Then, `../{ThemeName}/content_types/{Type}/index.cfm`
// and so forth.
// See the "Mura Rendering" section for more information
// Mura has finished compiling the code to return to the browser
// In other words, the train is about to leave the station ...
onRenderEnd // m.event('__MuraResponse__') is ready
onSiteRequestEnd
onGlobalRequestEnd