Title: CLICK TO ADD MAIN TITLE
1My First Building Block as a Portal Module
Heather NatourSenior Lead EngineerBlackboard
Inc.September 29, 2005
2Road Map
- What are Portals?
- Module Types
- Creating Modules
- API
3Audience
- 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 whats possible with
Community System Modules
4What 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
5Example of a sticky Portal
6Blackboard Community System Components
Tab
Contents
Layout
Module
Module Edit
Minimize
Delete
7Module Types
- Code for the Module
- Every Module has an associated Type A Type
could have more than one instance - One or more JSP pages
8Pre Built Module Types
- Include HTML
- Include URL
- RSS Channel
9Module Type JSP Pages
- View
- What gets displayed when the module is rendered
- Admin
- Edit Global properties
- Edit
- User customizable properties
10View
- Rendered Inline
- No HTML Header or Body Tags
11Edit
Calls the edit page
12Edit
13Admin
Manage Modules Page
Admin Page for Global Configuration
14Admin
15Creating Module Types
- JSP is easiest
- Tags Provided for Edit and Admin Pages (more info
in Dev Guide) - modulePersonalizationPage
- modulePersonalizationReceipt
- moduleAdminPage
- moduleAdminReceipt
16Portal API
- Java
- Class CustomData
- In package blackboard.portal.external
- Javadoc available in SDK
17Portal API
- To get the Global 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)
18Portal API
- Can also save Global properties for a module
using this same object
CustomData data CustomData.getModuleData(pageCon
text) String text data.setValue(body.lunchMenu
, Roast Turkey) String text
data.setValue(body.type,Entrée) data.save()
19Portal API
- Similar Methods exist to set user specific data
CustomData data CustomData.getModulePersonalizat
ionData(pageContext) String text
data.setValue(userpref.display,
ALL) data.save()
20Packaging 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
21Creating 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
22Creating a Module
- Module is packaged as a standard Building Blocks
Package - bb-manifest.xml
- module
- channel
23Specifying a Module
- 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"gtmacnewslt/propertygt lt/ExtraInfogt lt/mo
dulegt
24Specifying a Module
- Channel Manifest Entry (Channel Def)
ltrss-channel ext-refmacnews" titleMac
News"gt ltdata-urlgt http//www.macnn.xml/macnn.xml
lt/data-urlgt lt/rss-channelgt
25Specifying a Module
- Can also optionally specify Institution Roles
(Primary and Secondary)
ltmodule-groupsgt ltmodule-group idstudent"/gt
ltmodule-group idfaculty"/gt lt/module-groupsgt
26Demonstration!
27Thank you!