-
Notifications
You must be signed in to change notification settings - Fork 7
Content selection
There are three scripts that deal with listing and selecting content.
- ContentItemRenderer.js
- PopupBrowser.js
- PopupLabelBrowser.js
This is used to list out content. This is used in several places, including public content, the home page, and course pages. Its basic usage is:
ContentItemRenderer.renderAll({
content: [content1, content2],
$holder: $("#someElement")
});
The content
parameter must be an array of content objects. The $holder
parameter must be a JQuery wrapper containing the element where the content will be rendered.
The following are additional parameters that you can pass in:
Parameter name | Possible values | Effect |
---|---|---|
sizing | [Boolean] | If true, the sizing bar will be rendered as well. |
format | block | Renders the content in block format. (default) |
format | table | Renders the content in table format. |
format | icon | Renders the content in icon format. |
format | auto | Picks a format based on the amount of content. |
labels | [Array of Strings ] | When grouping by label, use these labels as the groups. |
filters | [Object] | An object containing filter methods which are used to group your content. Use this when not using labels. |
courseId | [Number] | When listing content in the context of a course, include the course ID for proper links. |
click | [Function] | This function is called when an item is clicked. See description below. |
sorting | NA | Not yet implemented. |
The filter object is used to group content. The keys of the object are the HTML to be rendered for the group and the value should be a method taking in a content object and returning a boolean.
Example:
var filter = {
'<h2>Video</h2>': function (content) {
return content.contentType === "video";
}
}
You can use ContentItemRenderer.standardFilters
which filters the standard content types.
When a click function is provided, it is called instead of navigating when the content is clicked. The click callback has the following signature:
function (content, courseId, $element) {}
In several places in Ayamel the user can select content from a pop-up window. Use this script to do that. Call the selectContent
method passing in a callback which receives the selected content. If the user closes the popup browser without selecting content then the callback is never called.
PopupBrowser.selectContent(function (content) {
console.log("Selected content: " + JSON.stringify(content));
});
This script can be used to select Ayamel content on domains other than ayamel.byu.edu
. For example, it is used on the PlayGraph authoring tool, which is on the playgraph.byu.edu
domain. To set up the pop-up browser for cross domain do the following before calling selectContent
:
PopupBrowser.setCrossDomain(true);
PopupBrowser.setHost("http://mydomain.com/");
This is similar to PopupBrowser.js but instead of using the standard browser to select a single content object it sorts the content by label and returns all content with the label selected by the user.
Call selectContent
passing in a callback which receives an array of content objects.
PopupLabelBrowser.selectContent(function (contents) {
console.log(contents.length + " items selected: " + JSON.stringify(contents));
});
This also supports cross-domain calls exactly like PopupBrowser.