270 likes | 375 Views
Blackboard Building Blocks. Portal Modules and Module Types. Tom Joyce, Product Manager, Product Development. Monday, October 20, 2014. Road Map. What are Portals? Module Types Creating Modules API. What are Portals?. Portal = Entry point Customizable for the user
E N D
Blackboard Building Blocks Portal Modules and Module Types Tom Joyce, Product Manager, Product Development Monday, October 20, 2014
Road Map • What are Portals? • Module Types • Creating Modules • API
What 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”
Blackboard Portal Components Tab Layout Contents Module Module Edit Minimize Delete
Module Types • Code for the Module • Every Module has an associated Type • 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
Admin Admin Page for Global Configuration
Creating Module Types • JSP is easiest • Tags Provided for Edit and Admin Pages • modulePersonalizationPage • modulePersonalizationReceipt • moduleAdminPage • ModuleAdminReceipt
Portal API • Java • Class: CustomData • In package blackboard.portal.external • Javadoc available in SDK
Portal API • To get the CustomData for a module, use getModuleData(context) CustomData data = CustomData.getModuleData(pageContext); String text = data.getValue(“body.lunchMenu”); String text = data.getValue(“body.type”);
Portal API • Can also save module global properties 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 • Put it in a System Extension Package • JSPs in /module directory <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>
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 • Entries in bb-manifest.xml file: • module • channel
Creating a Module • Module is packaged a standard Integration Agent Package • bb-manifest.xml • module • channel
Specifying a Module • Module Manifest Entry: <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">smpl-gamenews</property> </ExtraInfo> </module>
Specifying a Module • Channel 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">smpl-gamenews</property> </ExtraInfo> </module>
Specifying a Module • Channel Manifest Entry (Channel Def): <rss-channel ext-ref="gamenews" title="Game News"> <data-url> <http://www.palminfocenter.com/feed.xml </data-url> </rss-channel>
Specifying a Module • Can also optionally specify Portal Roles <module-groups> <module-group id="Student"/> </module-groups>
Thank You Demos to Follow >