Download - My First Building Block as a Portal Module
My First Building Block as a Portal Module
Heather NatourSenior Lead Engineer
Blackboard Inc.
September 29, 2005
Road Map
• What are Portals?• Module Types• Creating Modules• API
Audience
• Building Blocks Developers that want to create Blackboard Community System Modules
• Java/JSP Programmers• Some knowledge of Building Blocks
Programming• …Or Just Interested to see what’s
possible with Community System Modules
What are Portals?
• Provides an Entry Point• Provides a Customized User Experience• Unites several sources of information and
present them in one central place• Sites can customize Portal for a specific type
of user or market– Student, Faculty, East, West
• “Sticky”
Example of a “sticky” Portal
Blackboard Community System Components
Tab
Module
Module Edit
MinimizeDelete
Contents Layout
Module Types
• Code for the Module• Every Module has an associated Type – A
Type could have more than one instance• One or more JSP pages
Pre Built Module Types
• Include HTML
• Include URL
• RSS Channel
Module Type JSP Pages
• View– What gets displayed when the module is
rendered
• Admin– Edit Global properties
• Edit– User customizable properties
View
• Rendered Inline• No HTML Header or Body Tags
Edit
Calls the edit page
Edit
Admin
Admin Page for Global
Configuration
Manage Modules Page
Admin
Creating Module Types
• JSP is easiest
• Tags Provided for Edit and Admin Pages (more info in Dev Guide)– modulePersonalizationPage– modulePersonalizationReceipt– moduleAdminPage– moduleAdminReceipt
Portal API
• Java
• Class: CustomData
• In package blackboard.portal.external
• Javadoc available in SDK
Portal API
CustomData data = CustomData.getModuleData(pageContext);
String text = data.getValue(“body.lunchMenu”);
String text = data.getValue(“body.type”);
• To get the Global CustomData for a module, use getModuleData(context)
Portal API
• Can also save Global properties for a module using this same object
CustomData data = CustomData.getModuleData(pageContext);String text = data.setValue(“body.lunchMenu”, “Roast Turkey”);String text = data.setValue(“body.type”,”Entrée”);data.save();
Portal API
• Similar Methods exist to set user specific data
CustomData data = CustomData.getModulePersonalizationData(pageContext);String text = data.setValue(“userpref.display”, “ALL”);data.save();
Packaging the Module Type
<module-type ext-ref="smpl-module" title="Sample Plug-in Module Type" uicreatable="true">
<jsp-dir>module</jsp-dir>
<jsp>
<view>view.jsp</view>
<edit>edit.jsp</edit>
<admin>admin.jsp</admin>
</jsp>
</module-type>
• Put it in a System Extension Package• JSPs in /module directory
Creating 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
Creating a Module
• Module is packaged as a standard Building Blocks Package
• bb-manifest.xml– module– channel
Specifying a Module
• Manifest Entry (Module Def):
<module type="portal/channel" isadmin="true" useraddable="true" isdeletable="true" title="Sample Channel Module">
<description>Sample channel module. This module accesses the RSS channel installed with this plug-in.</description><ExtraInfo>
<property key="channel.id" type="String">macnews</property>
</ExtraInfo></module>
Specifying a Module
• Channel Manifest Entry (Channel Def):
<rss-channel ext-ref=“macnews" title=“Mac News"><data-url>http://www.macnn.xml/macnn.xml </data-url>
</rss-channel>
Specifying a Module
• Can also optionally specify Institution Roles (Primary and Secondary)
<module-groups> <module-group id=“student"/> <module-group id=“faculty"/></module-groups>
Demonstration!
Thank you!