Bright Template Reference
The [bright] shortcode, aside from the shortcode attributes, can include template text, either inline or defined by a plugin.
This document covers functions available in the Handlebars model of double braces, \'{{}}\' within the template text.
Numerous built-in helper functions are available, documented here.
bAssignToNamespace
Allows you to assign a value in a namespace within the current context.
In the following example, we look to see whether the current user has a profile variable exported called \'bright_path\', and if it does, makes it operate like a shortcode attribute.
{{#if user.meta.bright_path}}
{{#bAssignToNamespace 'attributes' 'path' user.meta.bright_path}}{{/bAssignToNamespace}}
{{/if}}
bEvalJson
If you have a JSON string in a context variable, you can turn it into evaluated JSON.
For example, if in the current context
myjsonfield = 'this: {that: data}';
// then
{{#bJsonEval this 'myjsonfield'}}{{/bJsonEval}}
{{myjsonfield.this.that}} <!-- renders as 'data' -->
bFetch
Retrieves a value previously stored with {{bStore}}:
{{#bStore 'name' 'Heisenberg'}}{{/bStore}}
{{#bFetch 'name'}}{{/bFetch}}
Renders
Heisenberg
bDecodeUri
When receiving a query parameter and referencing in a template, this helper is useful to decode URI encoding:
For example, this block fetch a certificate title from the query parameters
{{bGetDefaultValue attributes.certificate_title (bDecodeUri (bGetQueryParameter 'learning-path-title'))}}
bGetDefaultValue
Returns a default value in place of an unset template attribute, for example.
{{#bCompare (bGetDefaultValue attributes.success_criteria 'passed') registration.success}}
matched
{{else}}
did not match
{{/bCompare}}
In this example, we are looking for a template argument called \'success_criteria\'. If it is set, we will use that in our comparison statement with the value in registration.success.
If not set, we use the default value of \'passed\'.
bGetQueryParameter
You extract query parameter arguments with this function:
http://[my-url]/invitation-report/?invitation_name=land50234base
In the template, try
{{#bGetQueryParameter 'invitation_name'}}{{/bGetQueryParameter}}
So as an example, for invitation reports we use the shortcode embedder, if not present, then we use the query parameter:
<h3>{{#if attributes.invitation_name}}
{{attributes.invitation_name}}
{{else}}
{{#bGetQueryParameter 'invitation_name'}}{{/bGetQueryParameter}}
{{/if}}
</h3>
bGetValueFromObject
Usage: You can use this to conditionally access an object by a different field name.
Example:
{{(bGetValueFromObject registration (bGetDefaultValue attributes.criteria_field 'success'))}}
Thus bGetDefaultValue evaluates the attributes field, and if \'criteria_field\' is selected, this is used to extract data from the registration object.
Otherwise, we will use the default of \'success\'.
bHasAnyAttribute
This function takes as arguments a list of strings, and an object. If any of the strings is an attribute of the object render the passed in block. Otherwise render the inverse.
<!-- paths = Array('one','two','three'); ->
<!-- custom.one makes this return true -->
<!-- in this example paths is an array -->
{{#bHasAnyAttribute (bFetch 'paths') custom}}
something
{{else}}
something else
{{/if}}
bI18n
{{#bI18n 'started'}}{{/bI18n}}
Represent a possibly internationalized string.
bHumanizeDate
Converts a date that comes from the Bright API into something human readable.
It defaults to the US model, but can write out a European style [day,month,year] by setting model='EU'.
{{bHumanizeDate registration.provider_completed_at model='EU'}}
To get a date in natural language, like "February 20, 2022" use 'natural' as an argument.
bSortCourses
bSortCourses takes a context document that includes an array of course records, and sorts/iterates overthem, calling the interior block with each course as the context of the interior block.
This is the helper to use to iterate over a courselist [like in a Bright courselist template] and do something with each course.
{{#bSortCourses this courses sortBy=title}}
{{#if registration}}
<tr>
<td>{{title}}</td>
<td>{{registration.complete}}, {{registration.success}}</td>
<td>{{#courselist-launchbutton this}}{{/courselist-launchbutton}}</td>
<td>{{#if_course_completed}}
<a href=/certificate?bright_course_id={{course_guid}}>Certificate</a>
{{/if_course_completed}}
</td>
</tr>
{{/if}}
{{/bSortCourses}}
In the block below, the parent context is available in a context variable called \'context\':
{{#bSortCourses this courses sortBy=title reverse=true }}
{{#dump2 'context.realm' context.realm}}{{/dump2}}
{{/bSortCourses}}
For more information see https://help.aura-software.com/template-bright-course-table/
bStore
Stores a value that can be fetched later with a {{#bFetch \'value}}
{{#bStore 'name' 'Heisenberg'}}{{/bStore}}
{{#bFetch 'name'}}{{/bFetch}}
Renders
Heisenberg
bCompare
You can bCompare two values using a passable operator:
For example, to check that a course has passed:
{{#bCompare registration 'passed' operator='==='}}
<!-- do something ... -->
{{/bCompare}}
The default is a \'==\'
{{#bCompare registration 'passed'}} <!-- no operator required -->
<!-- do something ... -->
{{/bCompare}}
Note if you omit the \'operator\' part you will get an error like:
TypeError: Cannot read property \'operator\' of undefined
Error: Third argument to {{#bCompare}} must be in format operator='===' ; for instance
Operators Supported:
- \'||\'
- \'==\'
- \'===\'
- \'!=\'
- \'!==\'
- \'<\'
- \'>\'
- \'<=\'
- \'>=\'
- \'typeof\'
See also Javascript Guide for Comparison Operators.
Implement \'or\' functionality using bCompare
Here\'s a sample extracted from the Bright \'classic\' template:
{{#bCompare attributes.requires_registration attributes.require_registration operator='||'}}
{{#if registration}}
<!-- show a launchbutton -->
{{else}}
{{#bGetDefaultValue attributes.not_registered_message 'You must be pre-registered to take this course.'}}{{/bGetDefaultValue}}
{{/if}}
{{else}}
<!-- show a launchbutton -->
{{/bCompare}}
This allows either requires_registration OR require_registration to be specified, in case of typos. If either returns true, bCompare returns true and shows the first 1/2 of the template.
courselist-launchbutton
Use this in a courselist, to add a launch button for the course you are currently rendering
{{courselist-launchbutton}}
debug
This will generate a debugging statement in your template about the nested values associated with a context variable.
For example
{{{debug this}}}
Will show all values available in the template.
You can change the title of the generated document with:
{{{debug registration title='The most recent registration'}}}
Note: When dumping \'this\', the toplevel fields can be accessed withouth \'this\' prepended.
So instead of {{{this.user}}}, you can always use just {{{user}}}.
dump
Dump provides a mechanism to view the data in the template context.
For example, to see the values of the attributes in the initial shortcode, use:
{{#dump attributes}}{{/dump}}
In your template.
So for an embedder code like:
[bright type=courselist template=results_matrix query=all_registrations suppress_header=true/]
You will get the following output in the page:
{
type: courselist,
template: results_matrix,
query: all_registrations,
suppress header: true,
}
dump2
The descendant of {{dump}}, gives some useful pointers on how to view nested data:
{{#dump2 'user' user}}{{/dump2}}
As passed to the templates the {{user}} variable are:
rendering {{#dump2 'user' user}}{{/dump2}} .....
Top Level Names Are: meta, site_roles, email, avatar
Data Currently In Variable:
{
meta: nested, use {{#dump2 'user.meta' user.meta}}{{/dump2}} to view.,
site_roles: nested, use {{#dump2 'user.site_roles' user.site_roles}}{{/dump2}} to view.,
email: admin@aura-software.com,
avatar: http://0.gravatar.com/avatar/f1715eb1efc1cb4ec494c95a7b5fa584?s=96&d=mm&r=g
}
launchbutton
When you are rendering a course, ala:
[bright type=course ...]
Use
{{{launchbutton}}}
To insert the course launch button.
Note if you are rendering a list of courses, please use
{{courselist-launchbutton}}
Please note the # of \'{\'s, they are important.
rightnow
Display current server date:
[bright type=generic]
{{#rightnow}}{{/rightnow}}
[/bright]
As:
Wed Nov 11 2015 16:07:28 GMT-0700 (MST)