Title: Introduction to Building Blocks
1Blackboard Building Blocks
Portal Modules and Module Types
Tom Joyce, Product Manager, Product Development
Wednesday, January 20, 2016
2Road Map
- What are Portals?
- Module Types
- Creating Modules
- API
3What are Portals?
- Portal Entry point
- Customizable for the user
- Can unite several sources of information and
present them in one central place - Sites can customize the Portal for a specific
type of user or market - Good portals are sticky
4Example of a sticky Portal
5Blackboard Portal Components
Tab
Layout
Contents
Module
Module Edit
Minimize
Delete
6Module Types
- Code for the Module
- Every Module has an associated Type
- One or more JSP pages
7Pre Built Module Types
- Include HTML
- Include URL
- RSS Channel
8Module Type JSP Pages
- View
- What gets displayed when the module is rendered
- Admin
- Edit Global properties
- Edit
- User customizable properties
9View
- Rendered Inline
- No HTML Header or Body Tags
10Edit
Calls the edit page
11Edit
12Admin
Admin Page for Global Configuration
13Admin
14Creating Module Types
- JSP is easiest
- Tags Provided for Edit and Admin Pages
- modulePersonalizationPage
- modulePersonalizationReceipt
- moduleAdminPage
- ModuleAdminReceipt
15Portal API
- Java
- Class CustomData
- In package blackboard.portal.external
- Javadoc available in SDK
16Portal API
- To get the CustomData for a module, use
getModuleData(context) - CustomData data CustomData.getModuleData(pageCon
text) - String text data.getValue(body.lunchMenu)
- String text data.getValue(body.type)
17Portal API
- Can also save module global properties
CustomData data CustomData.getModuleData(pageCon
text) String text data.setValue(body.lunchMenu
, Roast Turkey) String text
data.setValue(body.type,Entrée) data.save()
18Portal API
- Similar Methods exist to set user specific data
CustomData data CustomData.getModulePersonalizat
ionData(pageContext) String text
data.setValue(userpref.display,
ALL) data.save()
19Packaging the Module Type
- Put it in a System Extension Package
- JSPs in /module directory
- ltmodule-type ext-ref"smpl-module" title"Sample
Plug-in Module Type" uicreatable"true"gt - ltjsp-dirgtmodulelt/jsp-dirgt
- ltjspgt
- ltviewgtview.jsplt/viewgt
- lteditgtedit.jsplt/editgt
- ltadmingtadmin.jsplt/admingt
- lt/jspgt
- lt/module-typegt
20Creating a Module
- Can specify a module type already in the system
or in the same installation package - Many modules can be created using the Bb supplied
types - Could leverage types that become available in the
community - Entries in bb-manifest.xml file
- module
- channel
21Creating a Module
- Module is packaged a standard Integration Agent
Package - bb-manifest.xml
- module
- channel
22Specifying a Module
ltmodule type"portal/channel" isadmin"true"
useraddable"true" isdeletable"true"
title"Sample Channel Module"gt
ltdescriptiongtSample channel module. This module
accesses the RSS channel installed with this
plug-in.lt/descriptiongt ltExtraInfogt
ltproperty key"channel.id" type"String"gtsmpl-g
amenewslt/propertygt lt/ExtraInfogt lt/modulegt
23Specifying a Module
- Channel Manifest Entry (Module Def)
ltmodule type"portal/channel" isadmin"true"
useraddable"true" isdeletable"true"
title"Sample Channel Module"gt
ltdescriptiongtSample channel module. This module
accesses the RSS channel installed with this
plug-in.lt/descriptiongt ltExtraInfogt
ltproperty key"channel.id" type"String"gtsmpl-g
amenewslt/propertygt lt/ExtraInfogt lt/modulegt
24Specifying a Module
- Channel Manifest Entry (Channel Def)
ltrss-channel ext-ref"gamenews" title"Game
News"gt ltdata-urlgt lthttp//www.palminfocent
er.com/feed.xml lt/data-urlgt lt/rss-channelgt
25Specifying a Module
- Can also optionally specify Portal Roles
ltmodule-groupsgt ltmodule-group
id"Student"/gt lt/module-groupsgt
26Demonstration!
27Thank You
Demos to Follow gt