Page 2 - ©Copyright IBM Corporation 1985, 2003 All rights reserved.; List of Trademarks
Disclaimer THE INFORMATION CONTAINED IN THIS DOCUMENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS DOCUMENTATION, IT IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. IN ADDI...
Page 4 - Table of Contents; Table of Contents iii
Table of Contents Chapter 1 Customizing the IBM Lotus Learning Management System User interface ........................................................................................................................... 1 A disclaimer and a word about conventions .......................................
Page 6 - Chapter 1: Customizing the user interface 1
Chapter 1 Customizing the IBM Lotus Learning Management System User interface There are several ways you can tailor the IBM® Lotus® Learning Management System (LMS) interface to control the product's look and feel and the user's access to its features. Depending on the nature of the changes you want...
Page 7 - A disclaimer and a word about conventions
Static text is resourced in .properties and .txt files in the properties (and, in the case of the LMM server, templates) directories for the LMM and Delivery servers and the Offline Learning Client (under source\resources). These directories contain resource bundles for the various languages that th...
Page 8 - Chapter 1: Customizing the user interface 3
Acronyms and abbreviations Acronym or Abbreviation What it stands for CSS Cascading Style Sheet DS Delivery Server DUC Offline Learning Client (Disconnected Use Client) EAR (file) Enterprise Archive (file) JSP JavaServer Page LDAP Lightweight Directory Access Protocol LMM Learning Management Module ...
Page 10 - default user preference settings component; Chapter 2: Changing settings 5
Chapter 2 Changing settings through the user interface or XML You can customize the application by changing various of the settings that are established when you first install and configure the system. There are three ways to do this: • Edit one or more of the XML files in which initial system value...
Page 12 - To add a role to the system; Chapter 3: Controlling access to features 7
Chapter 3 Controlling access to features through permissions You can limit or expand users’ access to the application’s features and functionality by setting the permissions that define the roles that you assign to those users. These roles can either be ones that come prepackaged with the applicatio...
Page 13 - To modify permissions settings for an existing role; categories you can select from the category drop-down box.; To assign a role to a user; To automatically assign a role to a user
5. Enter the name of the new role and a description, and then click Save. This adds the role to the role list. 6. Click the name of the new role in the list. This displays the Role Details page. 7. Check the permissions you want to grant to users assigned this role in the various categories you can ...
Page 14 - Chapter 3: Controlling access to features 9
7. Click Continue. The application displays a dialog box from which you can assign roles by clicking Assign Roles. When you click Assign Roles, the application displays a list of the roles defined in the system. Select one or more of these to assign to the selected user(s). 8. Click Save to complete...
Page 16 - The Anatomy of a Help topic; Chapter 4: Customizing Help 11
Chapter 4 Customizing Help Every Help topic consists of four files, all of which are editable: • The file that defines the layout of the graphical bar displayed at the top of every Help window. Student and Course Administrator Help topics have slightly different headers. • The file that defines the ...
Page 18 - Learning Management System; Chapter 4: Customizing Help 13
<td width="46" class="logo-textbg"><a href="#PageContent"><img src="transparent.gif" width="2" height="20" alt="skip to page content" border="0"></a><img src="transparent.gif" width="44" height...
Page 20 - Chapter 4: Customizing Help 15
<tr> <td><img src="transparent.gif" width="1" height="1" alt="" border="0"></td> <td><a href="http://doc.notes.net/cct/LearningSpace.nsf/LSCore?OpenForm" class="nav-text" target="_ ">Feedback on Help?...
Page 21 - Editing an existing Help topic
You can ignore or remove the <META> tags at the beginning of the file. These are used in generating the Index. Otherwise, you can edit this file as you would any other standard HTML file. Editing an existing Help topic Open the _b.html, edit it, and save your work. Replacing a context-sensitiv...
Page 22 - Adding your own Help topic; and the subdirectory in which you store the files.; Chapter 4: Customizing Help 17
Note: You can replace a Help file with one in another directory by specifying the appropriate relative path and file name. For example, you might change the helpPage parameter in preferences.jsp to <jsp:param name="helpPage" value="courseadmin/ch_mypreferences.html"/> or, assum...
Page 24 - Overview; Chapter 5: Customizing JavaServer Pages 19
Chapter 5 Customizing JavaServer Pages You can customize the Learning Management System application by customizing its JavaServer Pages. This chapter contains the following information: Overview • LMS JSP tag libraries • The Anatomy of a JSP Making global changes • Applying customization sets • Chan...
Page 25 - LMS JSP tag libraries; The anatomy of a TLD file
a user makes a request or performs an action, the server handles the action, and then retrieves the appropriate JSP to display the response in HTML. You can find documentation defining the JSP 1.2 specification, on which the LMS JSPs are based, at http://java.sun.com/products/jsp/. The servers in th...
Page 26 - The following XML-formatted text is an excerpt from the lms.tld:; Chapter 5: Customizing JavaServer Pages 21
Referencing the url tag in a JSP The following code is excerpted from the catalogManageCurriculumEntryManage.jsp: <script language="javascript"> function openUserSearchPopup() { var href = "<lms:url>/searchUserPopup.do?formName=<%= formName %></lms:url>"; <...
Page 28 - The Anatomy of a JSP; Learning Management System server; Defining a page as a JSP
<attribute> <name>useCustomDsPath</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>useCustomLmmPath</name> <required>false</required> <rtexprvalue>true</rtexprvalue&...
Page 31 - The final section of code includes the adminContentPage.jsp:
current navigation mode, is equal to “studenthome.” If it is, the jsp:include tag within the logic:match tag is executed. <bean:define id="navKey" value="<%=com.lotus.elearn.navigation.NavigationUtil.getNavKey(request) %>"/> <logic:match name="navKey" value=...
Page 32 - Chapter 5: Customizing JavaServer Pages 27
<td class="formBoxBg" width="15"><lms:spacer width="15" height="1" /></td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </body> </html:html> The content of the adminContentPage.j...
Page 33 - Delivery server; Including tag library descriptor files
specified with a value of “contentPage,” the returned value is stored in a pageContext object variable that can be referenced later in the page as a variable called “contentPage.” If no value is returned by the navigationControllerBean, the invalidForm.jsp page displays. Otherwise, the appropriate p...
Page 34 - var; Chapter 5: Customizing JavaServer Pages 29
Including JavaScript source code The next piece of code includes the JavaScript code from the ds>js>delivery.js file in the page so that the functions in the code can be called from the current page. <script language="JavaScript" src="js/delivery.js"></script> Popul...
Page 35 - Defining resizable frames
Defining resizable frames The final chunk of code defines the sizes of the resizable frames on the page: <frameset onload="load()" rows="44,*" frameborder="yes" border="4" framespacing="4"> <frame name="system" src="<delivery:action>...
Page 36 - Making global changes; Chapter 5: Customizing JavaServer Pages 31
</frameset> </html> The body of the delivery:action tag identifies the action used to display the frame. The body maps to the action path in the Struts-config.xml file on the Delivery server. The JSP defined in the path attribute of the forward tag is the JSP to display in the frame if t...
Page 37 - Images; Applying customization sets; The Edit Customization Set window displays.; Changing the application style
• Images Applying customization sets When you create a customization set, you create a new branch in the application directory to house the files that contain alternative resources for the application, including graphics, style sheets, and .properties files. For details, see “Creating customization ...
Page 38 - Editing existing CSS files; Chapter 5: Customizing JavaServer Pages 33
adminTemplate.jsp page, which is the page that defines the format for most of the pages on the Learning Management System server. For more information on the adminTemplate.jsp, see “The Anatomy of an LMS JSP.” The file directory containing the CSS files is structured as follows: [serverName]>css&...
Page 39 - Adding your own CSS files; Replacing CSS files; Copy your custom CSS file into the; Changing the font size or font style of the application
Adding your own CSS files You can add your own CSS files for use in the application. You can reference styles from custom files in addition to the styles included in the CSS files that come with the LMS application by default. To add a CSS file: 1. Copy your custom CSS file into the [serverName]>...
Page 40 - Updating page text; lmm: Represents the Learning Management System server.; Chapter 5: Customizing JavaServer Pages 35
To increase the default font size, change the “font-size:” value from xx-small to small or medium. To change the font style, replace the values in the “font-family:” setting with the fonts you want the application to use. Several of the classes in the CSS specify specific font sizes and styles that ...
Page 41 - Adding and replacing graphics
A number of the tags in the lms custom tag library, such as the button or img tags, contain attributes that reference .properties file entries to supply language-specific text on the page. One tag, the message tag, is specifically designed to retrieve .properties file entries. For example, the title...
Page 42 - To replace graphics:; Replacing the application logo
To replace graphics: • Replace the existing image file in the [serverName]>images directory with the image you prefer to use. Retain the original image’s file name. Replacing the application logo The standard IBM Lotus Learning Management System logo which displays in the header of the applicatio...
Page 43 - To edit the alternate text for the logo image, follow these steps:; Changing individual JSPs; You can make the following changes to individual JSPs:; Changing the style of an individual JSP; Replacing a reference to a CSS style
<td width="93%" class="systemLogoPlacement" valign="top"> <img src="<delivery:logoURL resource="images/lmsBrandingLogo.gif"/>" alt="<delivery:message key="ds.application.title"/>" width="209" height="22">...
Page 44 - Changing the functionality of an individual JSP; Editing existing JSP tags; Specifying the next page to display
} To customize the Help icon to align left instead of right, either: • Replace the class attribute with static HTML to define the alignment of the text as follows: <td align=”left”> This option works for quick fixes, but requires that you edit each individual setting any time you want to updat...
Page 45 - This contains a list of attributes associated with the tag.; Editing form Bean values with the lms:hidden tag
Submitting a form If you remove the nav attribute and add an onClick attribute, you completely change the functionality of the button. This code, for the Login button on the loginForm JSP for the Learning Management System server, executes a JavaScript submitForm() function when the button is clicke...
Page 46 - Removing JSP tags; Chapter 5: Customizing JavaServer Pages 41
If no value attribute were supplied, the hidden input tag would retrieve a value for the destination property from the form Bean. The following lms:hidden tag, which is used in the catalogCourseMasterDetail.jsp keeps a copy of the current form’s keywords in the form Bean by supplying values for the ...
Page 48 - Chapter 5: Customizing JavaServer Pages 43
</logic:notPresent> </logic:notPresent> </logic:equal> This code, which follows the check for drop-down box field, defines how to display the content of the drop-down box field, if present. Displaying the content of the drop down box requires denoting which of the available options...
Page 50 - You can perform these types of searches in the user interface:; Customizing user searches; Adding LDAP attributes to User Search pages; attribute; Chapter 6: Customizing Search 45
Chapter 6 Customizing Search You can perform these types of searches in the user interface: • User Search The User Search page appears when you roster or manage users in the Users module, when you enroll users or change their results in the Course Management module, when you supply contact informati...
Page 51 - HealthPlanChoice = Employee's Health Plan; Removing fields from User Search pages
attribute HealthPlanChoice, the attribute link would look like this: <!--================================================================ User Settings ================================================================ --> <user component="com.lotus.elearn.user.UserMgrImpl" anonymousA...
Page 52 - Customizing Offerings Catalog searches; Adding custom fields to the Offerings Catalog; Customizing course management and resource searches; Chapter 6: Customizing Search 47
Customizing Offerings Catalog searches The Learning Management System allows you to create a pool of custom fields that can be applied to course offerings to add more details. Adding custom fields to the Offerings Catalog The custom field editor appears when you click Edit at the bottom of a Course ...
Page 53 - Removing fields from the Search pages; Instructor searches: searchInstructors.jsp
Removing fields from the Search pages If you want to remove fields from the Search pages, edit the appropriate .jsp to remove the code for the text and text box that you want to remove. • Course searches: searchCourses.jsp • Location searches: searchLocation.jsp • Room searches: searchRoom.jsp • Ins...
Page 54 - Creating a customization set; Chapter 7: Customization sets 49
Chapter 7 Customization sets You can create what are in effect alternative versions of the application and send specified users to one or another of these rather than to the default interface when they log in. To do this, you copy the directories containing the files you want to change (or replace) ...
Page 56 - Chapter 7: Customization sets 51
2. Make whatever changes you want to the JavaServer Pages, Cascading Style Sheets, image files, properties files, and templates in the SalesCS directory hierarchy. 3. When you’ve finished, replicate your work (except for the templates folder) on the Delivery server (or servers). 4. Install your cust...
Page 58 - Chapter 7: Customization sets 53
Table of sample matching strings Type Example matches User Fulano de Tal/Cambridge/IBM cn=Fulano de Tal,ou=Cambridge,o=IBM cn=Jan Doe,ou=West5,ou=Weston,o=IBM */Cambridge/IBM *,ou=Cambridge,o=IBM * A person (Fulano de Tal) at IBM in Cambridge Same as above A person (Jan Doe) at the West5 office of I...
Page 59 - Installing a customization set on the Offline Learning Client
• Use text unchecked, the customization set uses the files in the LMM properties directory; checked, the files in the customization set’s properties directory are to be used. 6. Reboot the server(s) to complete the process of defining and assigning the customization. Installing a customization set...
Page 60 - Chapter 7: Customization sets 55
file, inserting the custom files in the appropriate locations, overwriting any files in the default installation that have custom counterparts. Finally, if you changed lmsBrandingAbout.gif and included it in the Zip file (and the user entered the path to the Zip file at install time), the user will ...
Page 62 - The Users page; Chapter 8: Creating a tab 57
Chapter 8 Creating a tab You can create a custom tabbed page to display along with the standard tabbed pages ― Home, Student Catalog, Users, and so on. What you have to do to accomplish this depends on the sort of content you want the page to have. At a minimum, you need to do the following: 1. Crea...
Page 63 - users; assign roles and profiles to each user.
navigationTab.users = Users users.manageUsers.task = Manage Users The navigationTab.users and users.manageUsers.task resources in turn are specified in the <label> and <title> attributes, respectively, in the definition of the Users module in ...classes/navigation.xml (which will be desc...
Page 64 - Chapter 8: Creating a tab 59
block. (The table’s summary attribute refers to a resourced string that text-to-speech software can read, summarizing the contents of the table.) The permissionCheck tag encapsulates Java code that looks to see if the current user has the permission (or permissions) specified in the tag’s permission...
Page 66 - In the present example, the tag is passed three parameters:; rosterUsers; users.rosterUsers.description = Add users to the Learning; Chapter 8: Creating a tab 61
<required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>tooltipKey</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>permissionNa...
Page 68 - [the page displayed when you click the Users tab]; Chapter 8: Creating a tab 63
< label >users.rosterUsers.roster</ label > < title >users.rosterUsers</ title > < permissions >Roster_Users</ permissions > < helpPage >courseadmin/ch_add_users.html</ helpPage > <!-- users.rosterUsers.search --> < trail > < name >se...
Page 69 - [the message box displayed when
the user clicks Continue in the User search page and rostering has been successful] <trail> fail</trail> [the message box displayed when the user clicks Continue in the User search page and rostering has been unsuccessful] </trail> [group search, roster from file, auto-roster trail...
Page 71 - yes; breadCrumbsInvisible
If you don’t want to display the breadcrumbs for a given JSP, you can include the <breadCrumbsInvisible> tag in the <trail>…</trail> or <step>…</step> block and set it to yes . For example, you could suppress the breadcrumbs in the roster users confirmation box shown ab...
Page 72 - icon to; Adding custom permissions; role; is a collection of permissions, some of which control; navigation items; (that is, pages to which you can navigate, such as the Users tab or the; checked methods
The <title> tag: title bar text The <title> tag tag specifies the string in ApplicationResources.properties whose definition is displayed in the JSP’s title bar. The <permissions> tag: permission to display the page The <permissions> tag specifies the name of the permission (...
Page 73 - An integer that uniquely identifies the permission.
PERMISSION table Field Datatype Allow Nulls Values oid CHAR(20) N nnnnnnnnnnnnnn00PERM name VARCHAR(128) N X_Y perm_id INTN N n description VARCHAR(255) Y A description of what the permission allows a user to do category INTN Y -1 = checked method, 0 = Home, 1 = Student Catalog, 2 = Course Catalog, ...
Page 74 - Permission to see Home module; Chapter 8: Creating a tab 69
Sample PERMISSION records OID 0000000000000000PERM PERM_ID 0 NAME Home_Module DESCRIPTION Permission to see Home module CATEGORY 0 STATUS A UPDATETIME OID 0000000000000100PERM PERM_ID 1 NAME Home_Weeks_Activities DESCRIPTION View this week’s activities CATEGORY 0 STATUS A UPDATETIME OID 000000000000...
Page 75 - permission’s description.
CASCADED_PERMISSION table Field Datatype Allow Null Values child_oid CHAR(20) N nnnnnnnnnnnnnn00PERM parent_oid CHAR(20) N mmmmmmmmmmmmmm 00PERM As mentioned earlier, if a user has been granted the parent permission, he or she is automatically granted the child permission. For example, a user who ha...
Page 76 - Example; Chapter 8: Creating a tab 71
<module> <name> users </name> <target> /userManagementInit.do </target> <content> users.jsp </content> <label> navigationTab.users </label> <title> users.manageUsers.task </title> <permissions> User_Management </permissions&g...
Page 78 - Chapter 8: Creating a tab 73
</lms:permissionCheck> <%-- ----------------------------------------------------------------------- END Hello ----------------------------------------------------------------------- --%> <%-- ----------------------------------------------------------------------- START Goodbye -------...
Page 80 - Chapter 8: Creating a tab 75
<tr> <td width="95%"><lms:spacer type="standard" /></td> <td width="1"> <div class="btnCommonPadding"> <lms:button captionKey="button.done" tooltipKey="button.done" nav="Greetings"/> </div> </t...
Page 82 - Chapter 8: Creating a tab 77
The second linked page (customGoodbye.jsp) looks like this: <%--------------------------------------------------------------------- customGoodbye.jsp Copyright (c) 2003, IBM Corporation. All rights reserved. Created: 05-30-02 The goodbye page for the auto greetings trail. ------------------------...
Page 83 - When this customGoodbye.jsp is displayed, it will look like this:
<table border="0" cellpadding="0" cellspacing="0" border="0" width="100%"> <tr> <td width="95%"><span class="hdrGeneral"><lms:message key="customTab.goodbye.goodbyeMessage"/></span></td> <td ...
Page 84 - IBM Lotus Learning Management System Administrator; Chapter 8: Creating a tab 79
2. Create Help files You need to associate a Help topic with each JSP so that when the user clicks ? to display context- sensitive Help, the application will not display the Page Not Found screen. You could, of course, send the user to the index or table of contents or some other existing Help topic...
Page 87 - Edit ApplicationResources.properties
INSERT INTO PERMISSION (OID, PERM_ID, NAME, DESCRIPTION, CATEGORY, STATUS) VALUES ('000000000042100PERM', 421,'Custom_Tab', 'Access Greetings page',7, 'A'); INSERT INTO PERMISSION (OID, PERM_ID, NAME, DESCRIPTION, CATEGORY, STATUS) VALUES ('000000000042200PERM', 422,'Say_Hello', 'Display Hello mesag...
Page 88 - navigation; Chapter 8: Creating a tab 83
Say_Hello.name = Say Hello Say_Goodbye = Display Goodbye message Say_Goodbye.name = Say Goodbye 5. Edit navigation.xml You need to add a <module>…</module> block to navigation.xml to display the custom (Greetings) tab and the custom pages associated with it ( customTab.jsp, customHello.j...
Page 89 - studenthome; name; Assign permissions
<content>customGoodbye.jsp</content> <label>customTab.goodbye.label</label> <title>customTab.goodbye.title</title> <helpPage>courseadmin/ch_customtab.html</helpPage> </trail> </module> <!-- ===/// studenthome ///=== --> < module &g...
Page 90 - assigned that role can do.; Chapter 8: Creating a tab 85
To create a role and assign it to users: 1. Open the Users page and click Manage Roles. 2. Click Add Role. 3. Enter the name of the new role (for example, Greetings) and a description of what users assigned that role can do. 4. Click on the name of the role when it appears in the Roles page. 5. Sele...
Page 92 - Index; changing globally, 35; Chapter 8: Creating a tab 87
Index abbreviations, 2 acronyms, 2 catalog, 47 context-sensitive Help, 16 course offerings, 47 CSS files adding custom, 34 editing, 34 replacing, 34 custom fields, 47 customization sets, 49 applying, 32 creating, 49 installing on the Offline Learning Client, 54 Delivery Server activity.jsp file, 30 ...
Page 93 - resourcing globally, 35
Tag library descriptor files(TLD files), 20 text resourcing globally, 35 users, 45 XML settings files, 5 88 IBM Lotus Learning Management System Release 1 Customization Guide