IBM Web Content Manager - developerWorks Lotus
IBM Web Content Manager - developerWorks Lotus
IBM Web Content Manager - developerWorks Lotus
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Version 7 Release 0<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
ii<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<strong>Content</strong>s<br />
Overview . . . . . . . . . . . . . . 1<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> . . . . . . . . . 1<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> new features and<br />
improvements . . . . . . . . . . . . . . 2<br />
Documentation resources . . . . . . . . . . 4<br />
Accessibility features . . . . . . . . . . . 6<br />
Types of websites . . . . . . . . . . . . . 6<br />
Intranet portal . . . . . . . . . . . . . 6<br />
E-business site . . . . . . . . . . . . . 8<br />
Brochureware site . . . . . . . . . . . 10<br />
E-library site . . . . . . . . . . . . . 11<br />
Partner site . . . . . . . . . . . . . 12<br />
<strong>Web</strong> content library default items . . . . . . . 13<br />
Planning a website . . . . . . . . . 15<br />
Defining the project . . . . . . . . . . . 15<br />
Human resource planning . . . . . . . . . 17<br />
The project manager . . . . . . . . . . 17<br />
The business analyst . . . . . . . . . . 18<br />
The architecture and design team . . . . . . 18<br />
The deployment team . . . . . . . . . . 21<br />
The development team . . . . . . . . . 25<br />
The website creation team . . . . . . . . 26<br />
The content acquisition team . . . . . . . 28<br />
The maintenance team. . . . . . . . . . 28<br />
Creating an analysis document . . . . . . . . 30<br />
Designing a prototype website using HTML . . . 31<br />
Creating a design document . . . . . . . . . 33<br />
Server architecture . . . . . . . . . . . 33<br />
Security architecture . . . . . . . . . . 33<br />
Information architecture . . . . . . . . . 37<br />
Design architecture . . . . . . . . . . . 38<br />
Authoring architecture. . . . . . . . . . 39<br />
<strong>Content</strong> acquisition architecture . . . . . . 41<br />
Delivery architecture . . . . . . . . . . 41<br />
Maintenance architecture . . . . . . . . . 42<br />
Road map to building a web content system . . . 43<br />
Deploying the authoring environment . . . . 43<br />
Building the content authoring system . . . . 44<br />
Importing and creating content . . . . . . . 45<br />
Deploying the delivery environment . . . . . 45<br />
Final steps. . . . . . . . . . . . . . 46<br />
Installing and migrating . . . . . . . 47<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> . . 49<br />
Configuring a web content authoring environment 49<br />
Installing the authoring portlet . . . . . . . 49<br />
Additional authoring portlet configuration<br />
options . . . . . . . . . . . . . . . 50<br />
<strong>Web</strong> content authoring options . . . . . . . 51<br />
Configuring authoring portlet search . . . . . 54<br />
Importing large files and images . . . . . . 55<br />
Increasing time-outs . . . . . . . . . . 56<br />
Configuring remote server access for links . . . 57<br />
Setting up support for federated documents . . 58<br />
Configuring a web content staging environment . . 59<br />
Configuring a web content delivery environment . . 60<br />
Setting up site analysis for the web content<br />
viewer . . . . . . . . . . . . . . . 60<br />
XML configuration interface parameters for the<br />
JSR 286 web content viewer . . . . . . . . 63<br />
Caching options . . . . . . . . . . . . 65<br />
Configuring pre-rendering . . . . . . . . 70<br />
Reserved authoring portlet . . . . . . . . . 73<br />
Configuring the reserved authoring portlet . . . 74<br />
Additional configuration options . . . . . . . 75<br />
Controlling access to hosts specified in a URL . . 75<br />
<strong>Web</strong> content substitution variables. . . . . . 76<br />
Resetting the web content event log . . . . . 77<br />
Enabling connect tags . . . . . . . . . . 78<br />
Remove authoring configuration task. . . . . 78<br />
Enabling email . . . . . . . . . . . . 78<br />
Configuring syndication . . . . . . . . . . 79<br />
Syndication properties . . . . . . . . . . 79<br />
Disabling automatic syndication . . . . . . 80<br />
Changing the syndication interval . . . . . . 81<br />
Enabling search for web content . . . . . . . 81<br />
Indexing web content . . . . . . . . . . 81<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> search<br />
options . . . . . . . . . . . . . . . 83<br />
Configuring the Search and Browse portlet to<br />
search for web content. . . . . . . . . . 84<br />
Configuring Search Center to search for web<br />
content . . . . . . . . . . . . . . . 85<br />
Crawling web content with search seedlists. . . 85<br />
Managing tagging and rating for web content . . . 90<br />
Using tagging and rating scopes with web<br />
content . . . . . . . . . . . . . . . 90<br />
Synchronizing scopes for web content . . . . 91<br />
Setting up a portal site . . . . . . . . 95<br />
Site wizard, sample sites, and templates . . . . . 95<br />
Sample sites and New Site Wizard. . . . . . 95<br />
Exploring the sample site templates . . . . . 97<br />
Portal page structure . . . . . . . . . . . 98<br />
Themes. . . . . . . . . . . . . . . 99<br />
Theme policies . . . . . . . . . . . . 102<br />
Theme extension points . . . . . . . . . 115<br />
Screens . . . . . . . . . . . . . . 117<br />
Skins . . . . . . . . . . . . . . . 117<br />
Aggregation . . . . . . . . . . . . . 120<br />
Working with pages . . . . . . . . . . . 121<br />
Pages, and shared, derived, and hidden pages 121<br />
Adding pages . . . . . . . . . . . . 126<br />
Creating shared pages . . . . . . . . . 128<br />
Creating derived pages . . . . . . . . . 128<br />
Creating page templates . . . . . . . . . 128<br />
Creating pages from a page template . . . . 129<br />
Working with Page Builder . . . . . . . . . 129<br />
iii
Creating top level page tabs . . . . . . . 131<br />
Moving page tabs . . . . . . . . . . . 131<br />
Creating child pages . . . . . . . . . . 131<br />
Moving child pages . . . . . . . . . . 131<br />
Adding content. . . . . . . . . . . . 132<br />
Changing page style . . . . . . . . . . 136<br />
Changing page layout . . . . . . . . . 139<br />
Working with page builder navigation . . . . 140<br />
Hiding content . . . . . . . . . . . . 143<br />
Sharing pages . . . . . . . . . . . . 143<br />
Page builder drag-and-drop . . . . . . . 147<br />
Page builder menus . . . . . . . . . . 149<br />
Page builder iWidgets . . . . . . . . . 153<br />
Using a different Dojo version. . . . . . . 155<br />
Hints and tips for page builder . . . . . . 156<br />
Customizing pages . . . . . . . . . . . 156<br />
Layout and content . . . . . . . . . . 157<br />
Locking content on a page . . . . . . . . 160<br />
Connections between portlets . . . . . . . 161<br />
Themes and skins . . . . . . . . . . . 162<br />
Managing portlets on a page . . . . . . . . 163<br />
Adding portlets to a page by using the Portlet<br />
Palette. . . . . . . . . . . . . . . 164<br />
Accessible alternative for adding a portlet to a<br />
page . . . . . . . . . . . . . . . 164<br />
Rearranging portlets on a page . . . . . . 165<br />
Accessible alternatives for rearranging portlets<br />
on a page . . . . . . . . . . . . . 165<br />
Restricting the movability of portlets on a page 166<br />
Creating a category . . . . . . . . . . 166<br />
Searching for portlets. . . . . . . . . . 167<br />
Limiting search results . . . . . . . . . 167<br />
Rearranging categories in the Portlet Palette . . 168<br />
Moving portlets to another category . . . . . 168<br />
Copying a portlet to multiple categories . . . 169<br />
Renaming a category in a palette . . . . . . 170<br />
Setting the category titles for other languages 170<br />
Resetting the Palette to the default settings . . 171<br />
Deleting a category . . . . . . . . . . 171<br />
Deleting a portlet from a Palette category . . . 172<br />
Modifying Palette settings . . . . . . . . 172<br />
Access control for the Palette . . . . . . . 173<br />
Using portlet wires . . . . . . . . . . . 175<br />
Working with portlet wires . . . . . . . . 175<br />
Selecting the matching mode . . . . . . . 176<br />
Adding a wire . . . . . . . . . . . . 176<br />
Deleting a wire . . . . . . . . . . . . 177<br />
Defining global targets . . . . . . . . . 177<br />
Designing and setting up a portal site . . . . . 177<br />
Designing a site using Page Builder themes and<br />
skins . . . . . . . . . . . . . . . 178<br />
Building a web content system. . . . 209<br />
<strong>Web</strong> content library management. . . . . . . 209<br />
Creating web content libraries . . . . . . . 209<br />
Deleting a web content library. . . . . . . 210<br />
Disabling a web content library . . . . . . 211<br />
Unlocking a library . . . . . . . . . . 211<br />
Defining roles within a library. . . . . . . 211<br />
Restoring items in a library. . . . . . . . 213<br />
Label a set of items in a library . . . . . . 214<br />
Setting root access for all web content libraries 214<br />
<strong>Web</strong> content authoring interface strategies. . . . 215<br />
Custom portal pages for authoring . . . . . 215<br />
Authoring system access strategies . . . . . 215<br />
Authoring portlet customization . . . . . . 216<br />
Working with authoring templates . . . . . 219<br />
Custom authoring interfaces . . . . . . . 221<br />
<strong>Web</strong> content inline editing strategies. . . . . 222<br />
Using the authoring portlet. . . . . . . . . 225<br />
Working with the authoring portlet . . . . . 225<br />
Creating items . . . . . . . . . . . . 232<br />
Using elements . . . . . . . . . . . . 293<br />
Working with element designs. . . . . . . 393<br />
Creating web content tags . . . . . . . . 402<br />
Previewing items . . . . . . . . . . . 426<br />
Managing items . . . . . . . . . . . 427<br />
Storing web content . . . . . . . . . . . 441<br />
Components. . . . . . . . . . . . . 441<br />
<strong>Content</strong> items . . . . . . . . . . . . 442<br />
Site areas and site frameworks . . . . . . 443<br />
Working with web content . . . . . . . . . 446<br />
Creating links and navigation . . . . . . . 446<br />
Storing text and HTML . . . . . . . . . 450<br />
Storing files and images . . . . . . . . . 452<br />
Selection elements . . . . . . . . . . . 455<br />
Personalized content . . . . . . . . . . 457<br />
Page navigation element. . . . . . . . . 458<br />
Using custom caching . . . . . . . . . 459<br />
URL generation using PathCmpnt and<br />
URLCmpnt tags . . . . . . . . . . . 463<br />
Personalizing federated documents . . . . . 464<br />
Adding tagging and rating to web content . . 467<br />
Profiling strategies. . . . . . . . . . . . 468<br />
Profiling methods . . . . . . . . . . . 468<br />
Planning a taxonomy . . . . . . . . . . 469<br />
Presenting web content . . . . . . . . . . 470<br />
Presentation templates . . . . . . . . . 470<br />
Template maps . . . . . . . . . . . . 473<br />
Item management features . . . . . . . . . 474<br />
Working with folders . . . . . . . . . . 474<br />
Change management features . . . . . . . 475<br />
Managing versions of items . . . . . . . 490<br />
Delivering web content . . . . . . . 491<br />
Accessing web content via a servlet . . . . . . 491<br />
Displaying content with web content viewers . . 492<br />
<strong>Web</strong> content viewers . . . . . . . . . . 492<br />
Adding a web content viewer portlet . . . . 494<br />
Editing the settings of a web content viewer<br />
portlet. . . . . . . . . . . . . . . 494<br />
Customizing error messages . . . . . . . 500<br />
Friendly URLs and web content viewers . . . 501<br />
Performing remote rendering with WSRP and<br />
the JSR 286 web content viewer . . . . . . 506<br />
Coordination with other JSR 286 portlets . . . 507<br />
Linking web content viewers . . . . . . . 507<br />
Adding HTML meta tags for Search Engine<br />
Optimization . . . . . . . . . . . . 509<br />
<strong>Web</strong> content viewer best practices . . . . . 513<br />
Working with web content pages . . . . . . . 515<br />
Creating a web content page . . . . . . . 515<br />
iv<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Using page-based access control with web<br />
content pages . . . . . . . . . . . . 516<br />
Creating a web content page with the XML<br />
configuration interface . . . . . . . . . 517<br />
Previewing content on <strong>Web</strong> content pages . . . 518<br />
Dynamic web content page selection . . . . 519<br />
Setting up a <strong>Web</strong> content fallback page . . . . 519<br />
<strong>Content</strong> mappings. . . . . . . . . . . 520<br />
Pre-rendered delivery . . . . . . . . . . 527<br />
Pre-rendering a website . . . . . . . . . 528<br />
Accessing the pre-rendered site . . . . . . 529<br />
Administering . . . . . . . . . . . 531<br />
<strong>Web</strong> content administration functions . . . . . 531<br />
<strong>Web</strong> content libraries . . . . . . . . . . 531<br />
Users, Groups and Roles . . . . . . . . 532<br />
Syndication concepts . . . . . . . . . . 540<br />
Working with syndicators and subscribers. . . . 549<br />
Creating a syndication relationship . . . . . 549<br />
Editing a Syndicator . . . . . . . . . . 551<br />
Editing a subscriber . . . . . . . . . . 552<br />
Manually syndicating items . . . . . . . 553<br />
Working with pending items . . . . . . . 553<br />
Working with failed items . . . . . . . . 553<br />
Monitoring syndication . . . . . . . . . 554<br />
<strong>Web</strong> content feed management . . . . . . . 555<br />
Creating a feed configuration . . . . . . . 555<br />
Creating a feed job . . . . . . . . . . 556<br />
Working with feeds . . . . . . . . . . 556<br />
Maintaining web content . . . . . . 559<br />
Using the web content member fixer task . . . . 559<br />
Using the Update Security task . . . . . . . 563<br />
Using the workflow update tool . . . . . . . 565<br />
Clearing item history . . . . . . . . . . . 566<br />
Clearing version history . . . . . . . . . . 567<br />
Exporting and importing a web content library . . 568<br />
Cloning a web content repository. . . . . . . 572<br />
Cloning preparation . . . . . . . . . . 572<br />
Cloning data . . . . . . . . . . . . 573<br />
Personalizing your content . . . . . 575<br />
Personalization Overview . . . . . . . . . 575<br />
How a site is personalized . . . . . . . . . 577<br />
Personalization terms. . . . . . . . . . . 578<br />
Resources, resource instances, and resource<br />
collections . . . . . . . . . . . . . 578<br />
User resources . . . . . . . . . . . . 579<br />
<strong>Content</strong> resources . . . . . . . . . . . 579<br />
Attribute Based Administration . . . . . . 580<br />
Rules . . . . . . . . . . . . . . . 581<br />
<strong>Content</strong> spots . . . . . . . . . . . . 597<br />
Rule spot mappings . . . . . . . . . . 598<br />
Campaigns . . . . . . . . . . . . . 598<br />
Application object . . . . . . . . . . . 599<br />
Request Context . . . . . . . . . . . 599<br />
Query framework . . . . . . . . . . . 600<br />
Using rules . . . . . . . . . . . . . . 600<br />
The Personalization interface . . . . . . . 600<br />
Personalization rules . . . . . . . . . . 602<br />
The <strong>Web</strong> <strong>Content</strong> resource collection. . . . . 611<br />
The Portal User resource collection . . . . . 613<br />
LikeMinds Recommendations . . . . . . . . 615<br />
LikeMinds Recommendation Engine architecture 616<br />
How LikeMinds generates recommendations 617<br />
The LikeMinds Recommendation Engines . . . 618<br />
The LikeMinds utilities . . . . . . . . . 620<br />
Configuring LikeMinds . . . . . . . . . 620<br />
MovieSite Sample . . . . . . . . . . . 636<br />
Using the LikeMinds utilities . . . . . . . 639<br />
Filtering LikeMinds recommendations . . . . 640<br />
Feedback and analytics . . . . . . . . . . 640<br />
Feedback subsystem overview. . . . . . . 641<br />
Enable logging . . . . . . . . . . . . 642<br />
Feedback properties file . . . . . . . . . 643<br />
Rule logging. . . . . . . . . . . . . 645<br />
Logging beans . . . . . . . . . . . . 645<br />
Log<strong>Manager</strong>. . . . . . . . . . . . . 652<br />
Listeners and persistence . . . . . . . . 652<br />
Classes and APIs for writing custom listeners 657<br />
Reports . . . . . . . . . . . . . . 663<br />
Feedback database schema . . . . . . . . 664<br />
Blogs and wikis . . . . . . . . . . 677<br />
Working with blogs . . . . . . . . . . . 677<br />
Learn about the template libraries used by blogs<br />
and blog libraries . . . . . . . . . . . 677<br />
Adding a blog or blog library to a page . . . 678<br />
Adding existing blogs or blog libraries to a page 679<br />
Assigning blog access to users. . . . . . . 679<br />
Viewing blogs and blog posts . . . . . . . 680<br />
Deleting blogs or blog libraries . . . . . . 681<br />
Working with wikis . . . . . . . . . . . 681<br />
Learn about the template libraries used by wikis 682<br />
Adding a wiki to a page. . . . . . . . . 682<br />
Adding existing wikis to a page . . . . . . 683<br />
Assigning wiki access to users. . . . . . . 683<br />
Deleting wikis . . . . . . . . . . . . 684<br />
Purging deleted wiki pages. . . . . . . . 685<br />
Developing . . . . . . . . . . . . 687<br />
The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. . . . . . 687<br />
API Overview . . . . . . . . . . . . 687<br />
Using the API . . . . . . . . . . . . 688<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> JSP tags . . . . . . 689<br />
<strong>Web</strong> content library management APIs . . . . 692<br />
Syndication APIs . . . . . . . . . . . 694<br />
Converting an <strong>IBM</strong> API web content viewer to the<br />
JSR 286 API . . . . . . . . . . . . . . 695<br />
Using remote actions . . . . . . . . . . . 696<br />
Creating a custom launch page . . . . . . . 704<br />
Creating custom plug-ins . . . . . . . . . 705<br />
Creating a rendering plug-in class . . . . . 705<br />
Creating a custom workflow action class . . . 709<br />
Creating a Text Provider class . . . . . . . 710<br />
Creating a file upload validation class . . . . 711<br />
Creating a context processor class . . . . . 713<br />
Creating a content page resolution filter class 714<br />
Deploying custom plug-in applications . . . . 721<br />
Helper class samples for web content context. . . 722<br />
<strong>Content</strong>s<br />
v
PortletWCMContextHelper . . . . . . . . 722<br />
PortalWCMContextHelper . . . . . . . . 724<br />
WCMContextHelper . . . . . . . . . . 728<br />
Displaying data from external sources . . . . . 730<br />
Creating websites for different localities . . . . 731<br />
Enabling Java messaging services for web content 732<br />
Working with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> Integrator . . . 732<br />
Feed format overview . . . . . . . . . 733<br />
RSS Namespace Extension for <strong>Web</strong> content . . 735<br />
Handling embedded links . . . . . . . . 761<br />
Example feeds . . . . . . . . . . . . 765<br />
RSS Namespace Extension for the Feed Service 768<br />
Using <strong>Web</strong>DAV with <strong>Web</strong> content . . . . . . 772<br />
<strong>Web</strong> content items in the <strong>Web</strong>DAV tree. . . . 773<br />
Metadata and access control for <strong>Web</strong> content<br />
items in <strong>Web</strong>DAV . . . . . . . . . . . 775<br />
Creating taxonomies and categories with<br />
<strong>Web</strong>DAV . . . . . . . . . . . . . . 777<br />
Managing content with site areas in <strong>Web</strong>DAV 778<br />
Creating components with <strong>Web</strong>DAV. . . . . 778<br />
Creating presentation templates in <strong>Web</strong>DAV . . 781<br />
Managing metadata and access control settings<br />
for authoring templates with <strong>Web</strong>DAV . . . . 782<br />
Troubleshooting . . . . . . . . . . 783<br />
Tools for troubleshooting and diagnostics . . . . 783<br />
<strong>IBM</strong> Support Assistant . . . . . . . . . 783<br />
Data collection and symptom analysis . . . . 784<br />
Manual creation of aspect-enabled JAR files . . 786<br />
Portal version and history information . . . . . 787<br />
Logging and tracing . . . . . . . . . . . 788<br />
<strong>Web</strong>Sphere Portal run-time logs . . . . . . 788<br />
Verbose garbage collection in Java Virtual<br />
Machine (JVM) logs . . . . . . . . . . 792<br />
<strong>Web</strong>Sphere Application Server tracing and log<br />
files . . . . . . . . . . . . . . . 792<br />
System event logging. . . . . . . . . . 792<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tracing files . . . . . 795<br />
Contact support . . . . . . . . . . . . 798<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> terminology 799<br />
Reference . . . . . . . . . . . . . 801<br />
Conventions. . . . . . . . . . . . . . 801<br />
Directory structure . . . . . . . . . . . 801<br />
Terms of use . . . . . . . . . . . . . 807<br />
Notices and trademarks . . . . . . . . . . 808<br />
Glossary . . . . . . . . . . . . . . . 810<br />
A . . . . . . . . . . . . . . . . . 810<br />
B . . . . . . . . . . . . . . . . . 810<br />
C . . . . . . . . . . . . . . . . . 811<br />
D . . . . . . . . . . . . . . . . . 812<br />
E . . . . . . . . . . . . . . . . . 812<br />
F . . . . . . . . . . . . . . . . . 813<br />
G . . . . . . . . . . . . . . . . . 813<br />
H . . . . . . . . . . . . . . . . . 813<br />
I. . . . . . . . . . . . . . . . . . 813<br />
J. . . . . . . . . . . . . . . . . . 813<br />
L . . . . . . . . . . . . . . . . . 814<br />
M . . . . . . . . . . . . . . . . . 814<br />
N . . . . . . . . . . . . . . . . . 815<br />
O . . . . . . . . . . . . . . . . . 815<br />
P . . . . . . . . . . . . . . . . . 815<br />
R . . . . . . . . . . . . . . . . . 817<br />
S . . . . . . . . . . . . . . . . . 818<br />
T . . . . . . . . . . . . . . . . . 819<br />
U . . . . . . . . . . . . . . . . . 819<br />
V . . . . . . . . . . . . . . . . . 819<br />
W . . . . . . . . . . . . . . . . . 820<br />
X . . . . . . . . . . . . . . . . . 821<br />
Index . . . . . . . . . . . . . . . 823<br />
vi<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Overview<br />
<strong>Lotus</strong> <strong>Web</strong> <strong>Content</strong> Management is included with <strong>Web</strong>Sphere Portal to provide a robust web content<br />
management solution. It includes an authoring interface that can be customized and extended, workflow,<br />
versioning, taxonomy, and much more.<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> is used to create, manage, and deliver content for your <strong>Web</strong> site. You can create<br />
content using the <strong>Web</strong> content authoring portlet, or create your own customized authoring interface. <strong>Web</strong><br />
content stored in external content management systems can also be referenced within a <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> system. You can deliver your <strong>Web</strong> content using <strong>Web</strong> content viewer portlets, the <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> servlet or pre-render your site to HTML.<br />
<strong>Web</strong> site creation<br />
In a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> solution, the layout and design elements of a <strong>Web</strong> site are managed<br />
separately from the content of a <strong>Web</strong> site. This allows you to change the layout and design of a <strong>Web</strong> page<br />
without changing the content, and change the content without having to update the layout and design.<br />
Many design features of your <strong>Web</strong> site, such as navigation, are generated automatically by using<br />
predefined elements and components.<br />
v “Presenting web content” on page 470<br />
<strong>Web</strong> content authoring<br />
One of the primary uses of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> is to build a <strong>Web</strong> content authoring system for your<br />
<strong>Web</strong> content creators. In a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system, the design and layout of your <strong>Web</strong> site are<br />
separated from the content displayed within a <strong>Web</strong> site. This allows <strong>Web</strong> content authors to create the<br />
content for your site without having to understand how to build a <strong>Web</strong> site. The <strong>Web</strong> content authoring<br />
systems you create are designed to deliver different <strong>Web</strong> content authoring experiences to different types<br />
of users.<br />
v “<strong>Web</strong> content authoring interface strategies” on page 215<br />
Accessing external content<br />
The <strong>Web</strong> content used in a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> can also be stored and managed in external content<br />
management systems. The <strong>Web</strong> <strong>Content</strong> Integrator is used to import content into a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
system using the RSS feed format. <strong>Content</strong> from federated content systems can be linked directly into a<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system. You can also use <strong>Web</strong>DAV to import content from a file system into a <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> system.<br />
v “Working with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> Integrator” on page 732<br />
v “Using <strong>Web</strong>DAV with <strong>Web</strong> content” on page 772<br />
v “Setting up support for federated documents” on page 58<br />
Managing <strong>Web</strong> content<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> includes a set of features to help you maintain and manage your <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> system. This includes version control, change management and approval, multi-item projects<br />
and user-defined folders to group sets of <strong>Web</strong> content items.<br />
v “Item management features” on page 474<br />
1
Preinstalled <strong>Web</strong> content libraries<br />
A set of preinstalled <strong>Web</strong> content libraries are supplied to allow you to add blog and wiki features to<br />
your <strong>Web</strong> sites. Use blogs, blog libraries, and wikis to tap into the power of the community and to<br />
change the way you work.<br />
v “Blogs and wikis” on page 677<br />
Delivering <strong>Web</strong> content<br />
<strong>Web</strong> content can be delivered to your <strong>Web</strong> site viewers using <strong>Web</strong> <strong>Content</strong> Viewer portlets, a servlet or as<br />
pre-rendered HTML files.<br />
v “Delivering web content” on page 491<br />
Planning your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system<br />
This information center includes many topics designed to help you plan and manage your <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> system. Use these topics to ensure that your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system is designed for<br />
optimal performance and ease of use, and to ensure that your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system is<br />
sufficiently planned and resourced.<br />
v “Human resource planning” on page 17<br />
v “Planning a website” on page 15<br />
v Server topologies<br />
v <strong>Web</strong> <strong>Content</strong> Management topologies<br />
v “Road map to building a web content system” on page 43<br />
Configuring and administering <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
When installing a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system, you configure the servers in your system differently<br />
depending on their role in your system. Once configured, there are also a set of administration functions<br />
that you use to manage <strong>Web</strong> content libraries, syndication, and feeds.<br />
v “Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>” on page 49<br />
v “Administering” on page 531<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> new features and improvements<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> version 7.0 includes new features such as folders and projects, and various<br />
improvements to existing features.<br />
<strong>Content</strong> authoring improvements<br />
The authoring portlet has been updated to improve usability and make it easier to navigate and find<br />
items. Improvements include:<br />
v a fresh new look and feel<br />
v the ability to store your favorite items and locations<br />
v an improved recent items view<br />
v the ability to view items from all libraries<br />
v improved globalization features<br />
See “Working with the authoring portlet” on page 225 for further information.<br />
2 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Organize your work using folders<br />
You can now organize your design work by creating folders within the authoring template, presentation<br />
template, and component views of the authoring portlet. Using folders allows you to organize these item<br />
types into logical groupings to make it easier to find items when you need them.<br />
v “Working with folders” on page 474<br />
File resource based content items<br />
Authoring templates can now be configured to store file resources as content items. This is useful when<br />
you want to store a file, such as a PDF file, and render it directly on a page but would also like to have<br />
the PDF file listed in navigational components such as menus and navigators.<br />
v “Define item properties” on page 238<br />
Taxonomy based option selection elements<br />
Option selection elements can now be populated with categories from an existing taxonomy. The<br />
categories selected in option selection elements can also be used to profile content items. This enables you<br />
to add multiple option selection elements to an authoring template to make the process of profiling a<br />
content item easier for content creators.<br />
v “Using an option selection element” on page 345<br />
Improved <strong>Web</strong> content tag support<br />
The format of <strong>Web</strong> content tags has been changed to use square brackets for easier readability and better<br />
integration into rich text fields. New "tag helper" functions have been added to the authoring portlet to<br />
make it simpler to add <strong>Web</strong> content tags to your HTML designs.<br />
v “Creating web content tags” on page 402<br />
Enhanced change management features<br />
The change management features of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> have been extended to include:<br />
v the ability to create multiple drafts of a single item<br />
v the ability to create drafts without the need for a workflow<br />
v improved workflow controls including date and time offsets of workflow actions<br />
v bi-directional workflow controls<br />
See “Working with draft items” on page 427 for further information.<br />
Collaborative content management using projects<br />
You can now create, edit, workflow, preview, and syndicate changes to multiple items within a project.<br />
When all items in a project are ready to be published, you can publish them together in a single<br />
operation.<br />
See “Working with projects” on page 487 for further information.<br />
Improved JSR 286 <strong>Web</strong> content viewers<br />
The JSR 286 <strong>Web</strong> content viewer used for rendering local and remote <strong>Web</strong> content has been enhanced:<br />
v Support for friendly URLs for <strong>Web</strong> content. Friendly URLs for <strong>Web</strong> content are a convenient way for<br />
users to create bookmarks to content items or for external applications to provide links directly to<br />
content items in the portal.<br />
Overview 3
v Automated migration from the deprecated traditional <strong>Web</strong> content viewer to the JSR 286 <strong>Web</strong> content<br />
viewer.<br />
v Support for tagging and rating.<br />
See “Delivering web content” on page 491 for further information.<br />
<strong>Web</strong> content page enhancements<br />
<strong>Web</strong> content pages now provide the following additional features:<br />
v Improved performance through page-based access control, which delegates access control of content<br />
items displayed on the <strong>Web</strong> content page to the page itself. When page-based access control is enabled<br />
for a <strong>Web</strong> content page, a user who is authorized to view the page is also automatically authorized to<br />
view the content associated with the page.<br />
v Robust content mapping support that can be managed and automated through tools such as the XML<br />
configuration interface, the Portal Scripting Interface, and the REST API for content mappings.<br />
See “Working with web content pages” on page 515 for further information.<br />
Easier configuration<br />
The process of configuring your <strong>Web</strong> content environments has been improved through the use of the<br />
<strong>Web</strong>Sphere ® Application Server resource environment provider so you can edit <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
system properties using the <strong>Web</strong>Sphere Application Server administration console.<br />
v Setting service configuration properties<br />
v <strong>Web</strong> <strong>Content</strong> Management configuration services<br />
Improved serviceability<br />
The logging and tracing features of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> have been improved to enable problem<br />
determination without the need to install specific debugging modules from <strong>IBM</strong> support. This support<br />
includes the use of the <strong>Web</strong>Sphere Application Server public APIs for FFDC logging.<br />
Java messaging service support<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> provides support for the notification of events such as item state changes or<br />
services starting and stopping. These notifications can be delivered as messages to the Java messaging<br />
service.<br />
See “Enabling Java messaging services for web content” on page 732 for further information.<br />
Documentation resources<br />
The starting point for information is the product documentation. Previously the product documentation<br />
was delivered using an information center framework. For <strong>Web</strong>Sphere Portal 7.0, the product<br />
documentation is delivered in the <strong>Web</strong>Sphere Portal Family wiki. There are still other sites and resources<br />
available to you when working with <strong>Web</strong>Sphere Portal, but this consolidation is intended to make finding<br />
information easier. It is also intended to drive improvements into the content and let the community edit<br />
and comment on the documentation. Knowing where to look for information can save you time and<br />
money. Learn more about primary and secondary resources for <strong>Web</strong>Sphere Portal and <strong>Lotus</strong> <strong>Web</strong> <strong>Content</strong><br />
Management documentation and supplemental content.<br />
There are two primary sources for content: the <strong>Web</strong>Sphere Portal Family wiki and <strong>Web</strong>Sphere Portal<br />
Support site. An excellent secondary source is <strong>developerWorks</strong>, where you can find examples and<br />
tutorial-based articles.<br />
4 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Each content source links to the other sources to help you navigate between the resources. Each content<br />
source has a specific objective and is intended to be used with the other sources.<br />
The product documentation delivered in the wiki (on the Product Documentation tab) is developed by<br />
<strong>IBM</strong> to help you take advantage of features based on expected usage patterns. You can contribute to the<br />
content to reflect your experience with the product. The wiki content accessed from the Home tab is<br />
developed by the community, both inside and outside of <strong>IBM</strong>. The intent is to share experiences with the<br />
product and based on actual usage patterns and use cases. The Support content is developed by <strong>IBM</strong><br />
Support to help you avoid and diagnose issues with the intent of being as responsive as possible.<br />
<strong>Web</strong>Sphere Portal Wiki<br />
The wiki includes:<br />
v Product Documentation tab which includes:<br />
– Overview of the product with new feature highlights, product features, and accessibility<br />
– Planning information for deployment<br />
– Installation instructions targeted to single server for proof-of-concepts or development servers,<br />
stand-alone production, and clustered production environments<br />
– Configuration options that are typically done one time, or infrequently, and have global effect on the<br />
portal<br />
– Administration tasks for day to day usage<br />
– Integration instructions<br />
– Development information to help you develop portlets and composite applications<br />
– Troubleshooting information with logging and tracing information<br />
– Messages to help you diagnose and troubleshoot issues<br />
v Supplemental guides, such as the Performance and Tuning Guide<br />
v <strong>IBM</strong> Redbooks<br />
v Best Practices<br />
v Deployment scenarios<br />
v Multimedia offerings, such as task-based demonstrations and videos<br />
v Reference cards<br />
Key points to remember about the wiki:<br />
v Information previously delivered in the information center is now delivered from the Product<br />
Documentation tab of the wiki.<br />
v The content is experience driven<br />
v You can edit articles, add comments, and author your own articles<br />
v The wiki is monitored by <strong>IBM</strong><br />
v You can subscribe to RSS feeds for new articles, comments, and recent edits<br />
<strong>Web</strong>Sphere Portal Support page<br />
The Support page includes:<br />
v Technotes written in response to issues with the product or the documentation<br />
v Fix pack downloads including instructions for applying fixes<br />
v Troubleshooting information<br />
v Flashes for high priority issues<br />
Key points to remember about the Support page:<br />
Overview 5
v You can subscribe to updates and new Support content using MyNotifications<br />
v You can download tools, such as the <strong>IBM</strong> Support Assistant<br />
Accessibility features<br />
Accessibility features help users who have a physical disability, such as restricted mobility or limited<br />
vision, to use software products successfully.<br />
This version of <strong>IBM</strong> ® <strong>Web</strong>Sphere Portal:<br />
v Supports installation through a command line interface known as console mode. This is the accessible<br />
equivalent of installing by using the graphical user interface.<br />
v Supports interfaces commonly used by screen readers and screen magnifiers (Windows only)<br />
v Supports use of screen-reader software and digital speech synthesizers to hear what is displayed on the<br />
screen.<br />
v Can be operated using only the keyboard<br />
v Allows the user to request more time to complete timed responses<br />
v Supports customization of display attributes such as color, contrast, and font size<br />
v Communicates all information independently of color<br />
v Supports the attachment of alternative input and output devices<br />
v Supports alternatives to audio information<br />
v Supports adjustable volume control<br />
v Does not flash the screen at rates that could induce epileptic seizures<br />
v Provides documentation in an accessible format<br />
Note: For best results when using a screen reader to view <strong>Web</strong>Sphere Portal, use Freedom Scientific<br />
JAWS 11 or higher and Firefox 3.5 or higher.<br />
The documentation includes the following features to aid accessibility:<br />
v All documentation is available in HTML formats to give the maximum opportunity for users to apply<br />
screen-reader software technology.<br />
v All images in the documentation are provided with alternative text so that users with vision<br />
impairments can understand the contents of the images.<br />
When appropriate, the documentation for specific product features contains additional information about<br />
accessibility.<br />
See the <strong>IBM</strong> Human Ability and Accessibility Center for more information about the commitment that<br />
<strong>IBM</strong> has to accessibility:<br />
Types of websites<br />
Different types of websites will require different solutions and use different applications and features.<br />
This section contains examples of different websites and the types of applications and features required to<br />
deliver them.<br />
Intranet portal<br />
An intranet portal site is designed to allow information to be quickly disseminated to employees, to make<br />
common internal business processes more efficient and to provide a sense of community within an<br />
organization.<br />
The site provides access to:<br />
6 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v news about what is happening within the organization.<br />
v alerts that contain information that employees should be aware of and potentially action.<br />
v forms for working with various internal processes such as leave, purchases, and travel.<br />
v a policies and procedures library with online versions of all policy and procedure documentation.<br />
v organizational communities with collaborative features like blogs and forums.<br />
v a search system to enable employees to find content.<br />
The intranet portal also has a personalized home page that is dynamically built using a set of rules that<br />
retrieve content based on the current user's role, department, and location. By appropriately tagging the<br />
content, and then matching this content with the current user, the content that is displayed can<br />
appropriate for the user.<br />
A number of components are used together to make this intranet portal work:<br />
v <strong>Web</strong>Sphere Portal is used to provide a platform for the integration of content and applications that<br />
form the intranet portal.<br />
v The overall theme and top-level navigation of the intranet is also managed using <strong>Web</strong>Sphere Portal.<br />
v <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> provides the micro-level layout of the content within the portal, and is also used<br />
to directly build the news, alerts and communities content.<br />
v The forms are online applications built using the Forms/Lists system, being pulled into the site using<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
v Policies and Procedures are document libraries managed using <strong>IBM</strong> FileNet <strong>Content</strong> <strong>Manager</strong>.<br />
v A custom feed producer would be written to allow the <strong>Web</strong> <strong>Content</strong> Integrator to consume a feed from<br />
<strong>IBM</strong> FileNet <strong>Content</strong> <strong>Manager</strong> and <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> would be used to present the documents in<br />
a website.<br />
v Personalization is used associate content with users, dynamically generating the content that is<br />
displayed in the personalized home page<br />
v A third-party discussion system is used to deliver collaborative forums in the communities section of<br />
the site using a custom portlet.<br />
v Community areas could also be based on <strong>Lotus</strong> ® Quickr ® team rooms<br />
v <strong>Web</strong>Sphere Portal search is used with the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> categorization to provide both a<br />
simple text search and a more advanced category-based search.<br />
The size of an intranet portal tends to scale with the size of the organization. A large organization has<br />
more information to disseminate, more business processes, more communities of employees. This means<br />
that the content and the user population tend to grow at the same rate.<br />
Overview 7
Related concepts:<br />
“Designing and setting up a portal site” on page 177<br />
<strong>Web</strong>Sphere Portal 7 provides improved page builder and improved client side rendering and has a new<br />
default portal theme, the Page Builder theme. Themes define how your portal site will look. After<br />
installation, a default theme is deployed and you can either customize that theme or create your own.<br />
The new themes approach introduced in 7 involves less editing of JSPs and allows you to mix iWidgets<br />
and portlets on the same portal page and take advantage of both client side and server side rendering<br />
mode. <strong>Web</strong>Sphere Portal 7 continues to support other themes, including your custom themes. If you have<br />
an existing portal site you can continue to use your existing themes or you can migrate your themes to<br />
the new standard.<br />
“Road map to building a web content system” on page 43<br />
To build a web content system you need to deploy hardware, configure servers, design an authoring<br />
system, configure a delivery environment and enable syndication. Get an overview of the steps required<br />
to build your web content system. Keep in mind the analysis and design documents developed during<br />
the planning phase of a project as you review the road map.<br />
“Working with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> Integrator” on page 732<br />
The <strong>Web</strong> <strong>Content</strong> Integrator is a solution for integrating externally managed <strong>Web</strong> content with<br />
<strong>Web</strong>Sphere Portal. Through the use of standard content syndication feed technologies based on RSS 2.0,<br />
the <strong>Web</strong> <strong>Content</strong> Integrator provides a loosely-coupled mechanism for transferring published content and<br />
metadata to the portal after they have been approved in the source system. Once the content and<br />
metadata have been transferred to the portal, it is possible to use the built-in content management<br />
features of <strong>Web</strong>Sphere Portal to secure, personalize, and display the content to users.<br />
“Personalizing your content” on page 575<br />
Personalization allows a portal or website to choose which content should appear for a particular user.<br />
The <strong>Web</strong>Sphere PortalPersonalization component selects content for users, based on information in their<br />
profiles and on business rules. Using Portal Personalization, business experts can classify site visitors into<br />
segments and target relevant content to each segment. For example, a site using Personalization might<br />
show different news articles to managers than to regular employees or different information to valued<br />
customers. Personalization offers analytic capabilities to record site usage patterns and includes the<br />
LikeMinds recommendation engine, which provides collaborative filtering capabilities. Collaborative<br />
filtering uses statistical techniques to identify groups of users with similar interests or behaviors.<br />
Inferences can be made about what a particular user might be interested in, based on the interests of the<br />
other members of the group.<br />
Related information:<br />
<strong>Lotus</strong> Quickr<br />
FileNet <strong>Content</strong> <strong>Manager</strong><br />
E-business site<br />
An e-business site is an externally facing site designed to market a company's products and services to<br />
consumers and allow them to purchase these items online. The focus of the site is on helping a<br />
consumers match their needs to the appropriate product or service and maximizing their purchases.<br />
The site provides:<br />
v press releases about the latest news relating the company's products and services.<br />
v a promotions area with information about products and services including sales, special package deals,<br />
and discounts.<br />
v a products and services catalog area with the entire catalog displayed as a searchable taxonomy.<br />
v a shopping area where users can see:<br />
– a searchable list of available products and services available for purchase online.<br />
– a summary of the items they are intending to purchase.<br />
– an area to calculate tax, shipping and other costs.<br />
8 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
– an area to purchase these items online using mail order, or using a follow-up call from a<br />
salesperson.<br />
– an area to track orders they have already initiated.<br />
v articles where the organization can help customers using articles discussing their products and services.<br />
v a support area with technical documentation, contact numbers, support request forms, FAQs, and<br />
downloads.<br />
v a service for subscribing to a newsletter where the user is sent a regular update highlighting new<br />
promotions, products or articles.<br />
The home page of the site is used to highlight the latest promotions, and to give a strong sense of the<br />
brand of the organization. Throughout the site, collaborative filtering is used to help suggest products<br />
and services to consumers based on their purchasing and navigational activity. A discussion system may<br />
also be used to allow users to build a community where they can comment on and rate various products<br />
and services.<br />
A number of components are used together to build the e-business site:<br />
v <strong>Web</strong>Sphere Portal is used to provide a platform for the integration of content and applications that<br />
form the e-business site.<br />
v The overall theme and top-level navigation of the intranet is also managed using <strong>Web</strong>Sphere Portal.<br />
v <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> provides the micro-level layout of the content within the site, and is also used<br />
to directly build the press releases, FAQs, articles, and promotional content.<br />
v The catalog and shopping areas are being run using <strong>Web</strong>Sphere Commerce.<br />
v Personalization is used to suggest products to users based on collaborative filtering, and to email the<br />
newsletter.<br />
v A third-party discussion system is used to deliver collaborative forums in the communities section of<br />
the site using a custom portlet.<br />
An e-business site can generate a large amount of traffic with a relatively small amount of content.<br />
Overview 9
Related concepts:<br />
“Designing and setting up a portal site” on page 177<br />
<strong>Web</strong>Sphere Portal 7 provides improved page builder and improved client side rendering and has a new<br />
default portal theme, the Page Builder theme. Themes define how your portal site will look. After<br />
installation, a default theme is deployed and you can either customize that theme or create your own.<br />
The new themes approach introduced in 7 involves less editing of JSPs and allows you to mix iWidgets<br />
and portlets on the same portal page and take advantage of both client side and server side rendering<br />
mode. <strong>Web</strong>Sphere Portal 7 continues to support other themes, including your custom themes. If you have<br />
an existing portal site you can continue to use your existing themes or you can migrate your themes to<br />
the new standard.<br />
“Road map to building a web content system” on page 43<br />
To build a web content system you need to deploy hardware, configure servers, design an authoring<br />
system, configure a delivery environment and enable syndication. Get an overview of the steps required<br />
to build your web content system. Keep in mind the analysis and design documents developed during<br />
the planning phase of a project as you review the road map.<br />
“Personalizing your content” on page 575<br />
Personalization allows a portal or website to choose which content should appear for a particular user.<br />
The <strong>Web</strong>Sphere PortalPersonalization component selects content for users, based on information in their<br />
profiles and on business rules. Using Portal Personalization, business experts can classify site visitors into<br />
segments and target relevant content to each segment. For example, a site using Personalization might<br />
show different news articles to managers than to regular employees or different information to valued<br />
customers. Personalization offers analytic capabilities to record site usage patterns and includes the<br />
LikeMinds recommendation engine, which provides collaborative filtering capabilities. Collaborative<br />
filtering uses statistical techniques to identify groups of users with similar interests or behaviors.<br />
Inferences can be made about what a particular user might be interested in, based on the interests of the<br />
other members of the group.<br />
Related information:<br />
<strong>IBM</strong> <strong>Web</strong>Sphere Commerce<br />
Brochureware site<br />
A brochureware site is an externally facing site that acts as an organization's presence on the World Wide<br />
<strong>Web</strong>. The overriding focus is on representing the organization's brand to its potential customers.<br />
This type of site is relatively static and does not need the aggregation capabilities of <strong>Web</strong>Sphere Portal<br />
and is instead delivered using both the servlet delivery and pre-rendering features of <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>. The site is also designed to be easily indexed by search engines like Google.<br />
This site would include:<br />
v information about the organization including its ethics, goals, mission, and history.<br />
v a news area where the organization can talk about what they are doing now and into the future.<br />
v a contact area with lists of locations, phone numbers, and online contact forms where users may<br />
submit queries, ask for follow-up calls.<br />
v a job opportunities area where an organization can advertise positions<br />
v a partners area where partners of the organization are listed with information about them and their<br />
relationship with the organization, and links to partner websites and partner contact details<br />
v information about the organization's products and services including case studies and testimonials<br />
The components in this site are limited with <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> providing all the presentation,<br />
navigation, and content.<br />
A brochureware site can generate a large amount of traffic with a relatively small amount of content.<br />
10 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related concepts:<br />
“Road map to building a web content system” on page 43<br />
To build a web content system you need to deploy hardware, configure servers, design an authoring<br />
system, configure a delivery environment and enable syndication. Get an overview of the steps required<br />
to build your web content system. Keep in mind the analysis and design documents developed during<br />
the planning phase of a project as you review the road map.<br />
E-library site<br />
An online library site is dedicated to providing access to a large amount of content. The prime example is<br />
a news site, where new content is created throughout the day, every day of the week and is published<br />
online and then archived as it becomes out of date. Other examples include journals, analyst reports, and<br />
software libraries.<br />
Users would typically have to register for these sites, and may then be sent e-mails on a regular basis<br />
summarizing the latest content. On a news site the latest news may be free, but users may have to pay<br />
for access to archived content. On other types of "library" sites, you may have to pay for access to any of<br />
the content.<br />
A number of components are used together to deliver an e-library site:<br />
v <strong>Web</strong>Sphere Portal is used to provide a platform for the integration of content and applications that<br />
form the e-business site.<br />
v The overall theme and top-level navigation of the intranet is also managed using <strong>Web</strong>Sphere Portal.<br />
v <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> provides the micro-level layout of the content within the site, and is also used<br />
to directly build content.<br />
v For e-libraries where the content is presented as documents, then <strong>IBM</strong> FileNet <strong>Content</strong> <strong>Manager</strong> would<br />
be used to store and manage the documents.<br />
v A custom feed producer would be written to allow the <strong>Web</strong> <strong>Content</strong> Integrator to consume a feed from<br />
<strong>IBM</strong> FileNet <strong>Content</strong> <strong>Manager</strong> and <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> would be used to present the documents in<br />
a website.<br />
An e-library site may have a large audience and a large amount of content.<br />
Overview 11
Related concepts:<br />
“Designing and setting up a portal site” on page 177<br />
<strong>Web</strong>Sphere Portal 7 provides improved page builder and improved client side rendering and has a new<br />
default portal theme, the Page Builder theme. Themes define how your portal site will look. After<br />
installation, a default theme is deployed and you can either customize that theme or create your own.<br />
The new themes approach introduced in 7 involves less editing of JSPs and allows you to mix iWidgets<br />
and portlets on the same portal page and take advantage of both client side and server side rendering<br />
mode. <strong>Web</strong>Sphere Portal 7 continues to support other themes, including your custom themes. If you have<br />
an existing portal site you can continue to use your existing themes or you can migrate your themes to<br />
the new standard.<br />
“Road map to building a web content system” on page 43<br />
To build a web content system you need to deploy hardware, configure servers, design an authoring<br />
system, configure a delivery environment and enable syndication. Get an overview of the steps required<br />
to build your web content system. Keep in mind the analysis and design documents developed during<br />
the planning phase of a project as you review the road map.<br />
“Working with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> Integrator” on page 732<br />
The <strong>Web</strong> <strong>Content</strong> Integrator is a solution for integrating externally managed <strong>Web</strong> content with<br />
<strong>Web</strong>Sphere Portal. Through the use of standard content syndication feed technologies based on RSS 2.0,<br />
the <strong>Web</strong> <strong>Content</strong> Integrator provides a loosely-coupled mechanism for transferring published content and<br />
metadata to the portal after they have been approved in the source system. Once the content and<br />
metadata have been transferred to the portal, it is possible to use the built-in content management<br />
features of <strong>Web</strong>Sphere Portal to secure, personalize, and display the content to users.<br />
Related information:<br />
FileNet <strong>Content</strong> <strong>Manager</strong><br />
Partner site<br />
The audience for a partner site are the partners of an organization. The site provides information and<br />
applications that are not applicable to the broader audience of consumers. A partner site would typically<br />
require a login but would not use an automated registration system. The business partners would be<br />
known to the company and given a login to access the partner site.<br />
A partner site may include the following areas:<br />
v a news area focused on partners. Larger organizations working in multiple areas of business could<br />
personalize the news area to suit each partner.<br />
v a promotions area detailing special deals for partners.<br />
v online services, providing useful tools and resources for partners to use, such as calculators, forms, and<br />
catalogs.<br />
v a billing area where partners can see the current bill status for services contracted from the<br />
organization.<br />
v a community area where partners may post information about themselves, and also interact to help<br />
each other and receive help from the organization.<br />
A number of components are used together to deliver a partner site:<br />
v <strong>Web</strong>Sphere Portal is used to provide a platform for the integration of content and applications that<br />
form the intranet portal.<br />
v The overall theme and top-level navigation of the intranet is also managed using <strong>Web</strong>Sphere Portal.<br />
v <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> provides the micro-level layout of the content within the portal, and is also used<br />
to directly build the news and promotions content.<br />
v Various <strong>IBM</strong> products plus third-party applications are used to build and deploy the online services<br />
area.<br />
v The catalog and billing services in the site is run using <strong>Web</strong>Sphere Commerce.<br />
12 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v A third-party discussion system is used to deliver collaborative forums in the communities section of<br />
the site using a custom portlet.<br />
v Personalization is being used to filter content throughout the site to ensure that the appropriate content<br />
and inline services are reaching the appropriate partners.<br />
A partner site is likely to have a limited audience but a large amount of content.<br />
Related concepts:<br />
“Designing and setting up a portal site” on page 177<br />
<strong>Web</strong>Sphere Portal 7 provides improved page builder and improved client side rendering and has a new<br />
default portal theme, the Page Builder theme. Themes define how your portal site will look. After<br />
installation, a default theme is deployed and you can either customize that theme or create your own.<br />
The new themes approach introduced in 7 involves less editing of JSPs and allows you to mix iWidgets<br />
and portlets on the same portal page and take advantage of both client side and server side rendering<br />
mode. <strong>Web</strong>Sphere Portal 7 continues to support other themes, including your custom themes. If you have<br />
an existing portal site you can continue to use your existing themes or you can migrate your themes to<br />
the new standard.<br />
“Road map to building a web content system” on page 43<br />
To build a web content system you need to deploy hardware, configure servers, design an authoring<br />
system, configure a delivery environment and enable syndication. Get an overview of the steps required<br />
to build your web content system. Keep in mind the analysis and design documents developed during<br />
the planning phase of a project as you review the road map.<br />
“Personalizing your content” on page 575<br />
Personalization allows a portal or website to choose which content should appear for a particular user.<br />
The <strong>Web</strong>Sphere PortalPersonalization component selects content for users, based on information in their<br />
profiles and on business rules. Using Portal Personalization, business experts can classify site visitors into<br />
segments and target relevant content to each segment. For example, a site using Personalization might<br />
show different news articles to managers than to regular employees or different information to valued<br />
customers. Personalization offers analytic capabilities to record site usage patterns and includes the<br />
LikeMinds recommendation engine, which provides collaborative filtering capabilities. Collaborative<br />
filtering uses statistical techniques to identify groups of users with similar interests or behaviors.<br />
Inferences can be made about what a particular user might be interested in, based on the interests of the<br />
other members of the group.<br />
Related information:<br />
<strong>IBM</strong> <strong>Web</strong>Sphere Commerce<br />
<strong>Web</strong> content library default items<br />
When you create a web content library, you can choose to include a set of default web content items in<br />
the new library. These can be used as a starting point for your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system and web<br />
site.<br />
Default items<br />
The following items are created when you select Include default items in the new library when you<br />
create a library.<br />
Workflow items:<br />
v A workflow named Express Workflow with a single workflow stage named Publish Stage<br />
using the publish action named Publish.<br />
v A workflow named Three Stage Workflow using the following workflow stages:<br />
– Draft Stage<br />
– Publish Stage using the publish action named Publish.<br />
– Expire Stage using the expire action named Expire.<br />
Overview 13
Authoring template:<br />
The authoring template is named Article and contains a single rich text element named Body and<br />
uses the Express Workflow as the default workflow for content items created using this<br />
authoring template.<br />
Presentation template:<br />
The presentation template is named Simple Article Layout.<br />
Site area and content items:<br />
v The content items named Sample Article and Sample Article 2 are stored in the site area<br />
named Articles.<br />
v The site area named Articles contains a template map between the authoring template is<br />
named Article and the presentation template named Simple Article Layout.<br />
Components:<br />
v The authoring tool named Article Toolbar is used to add New and Edit functions to the<br />
rendered page. It is referenced in the presentation template named Simple Article Layout.<br />
v The menu named Articles List is used to display a list of content items on the rendered page.<br />
It is referenced in the presentation template named Simple Article Layout.<br />
Access controls<br />
As the web content library default items are configured to inherit their access settings from the library<br />
they are stored in, users are not able to access these items until you have configured the access settings of<br />
the library.<br />
Using the default items<br />
The default items are best displayed using a web content viewer portlet:<br />
1. Go to Administration > Manage Pages.<br />
2. Select Create New Page From.<br />
3. Under <strong>Web</strong> <strong>Content</strong> Mappings, select the site area named Articles from your web content library.<br />
4. Complete the rest of the form and click OK.<br />
5. Edit the page layout of the new page and add a <strong>Web</strong> <strong>Content</strong> Viewer (JSR 286) portlet to the page.<br />
6. The content item named Sample Article is displayed on the page.<br />
14 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Planning a website<br />
Before building a website, it is best practice to take time to analyze, plan, and design the website that<br />
you want to build, the web content system that you need to manage the website, the infrastructure<br />
required for the system, and the roles and users required to build the website and install infrastructure.<br />
Defining the project<br />
It is important to have an understanding of the objectives, deliverables, and scope of a web content<br />
system. Your project definition outlines the what, why, and who of the project and can be used<br />
throughout the life of your web content system.<br />
You define the following information in your project plan:<br />
Background<br />
Define the background information for the project. This information can include why the project is being<br />
undertaken and any history of previous and current related projects.<br />
Mission<br />
What is the mission of the project Writing a mission statement can help in determining the requirements<br />
of the website.<br />
Objectives<br />
It is essential to determine the objectives of the project. These objectives can be provided by the project<br />
team, determined from meetings with the project stakeholders, and usability workshops with users. It is<br />
important that all stakeholders agree on the final objectives of the site. Each objective should be clear and<br />
concise. There should be no room for assumptions or varied interpretations.<br />
Business objectives<br />
These objectives define what the business wants to achieve. They focus on concerns such as profit<br />
and brand value.<br />
Examples of business objectives for an internet site include:<br />
v Reduce costs of distributing press releases and sales materials<br />
v Reduce the number of phone calls taken by the support team<br />
v Strengthen existing customer loyalty<br />
v Discover potential customers online<br />
Examples of business objectives for an intranet include:<br />
v Provide specialized and tailored content to key groups within the company<br />
v Ensure that employees feel valued<br />
v Reduce business costs by making staff more productive by improving their core tasks<br />
Operational objectives<br />
Operational objectives can be grouped according to short-term and long-term objectives.<br />
Examples of operational objectives include:<br />
v Provide information to company employees<br />
v Provide information to customers<br />
v Develop skills within the company to administer a website<br />
15
v Develop single sign-on functionality<br />
User objectives<br />
These objectives define the needs of the user of the website and are crucial to developing the site<br />
objectives, structure, and functionality.<br />
Examples of a user objective for an internet site include:<br />
v Make it easy for me to find what I want<br />
v Make the information understandable and relevant<br />
v Let me know where I am in the site<br />
v Retain my privacy<br />
Examples of a user objective for an intranet include:<br />
v Find up to date, relevant information as quickly as possible<br />
v Keep me informed of latest news and updates<br />
v Help me perform core business functions such as completing time-sheets and applying for<br />
leave<br />
v Reduce my frustrations<br />
v Let me publish information<br />
v Help me feel connected, supported, and valued<br />
Site objectives<br />
Site objectives are derived from the business, operational, and user objectives. They may be the<br />
result of the intersection of the business, operational and user objectives, or they may be<br />
additional objectives that result from analysis.<br />
Examples of site objectives for an internet site include:<br />
v Provide clear and easy to understand navigation that enables users to find information quickly<br />
v Provide a search feature<br />
v Write content for the web so that it is easy to read and understand<br />
v Provide an FAQ section addressing the most frequently asked questions of the support team<br />
v Provide a framework that structures content for the user and not the business division<br />
Examples of site objectives for an intranet include:<br />
v Provide clear and easy to understand navigation that enables users to find information quickly<br />
v Support key common tasks such as time-sheet entry<br />
v Provide a customized news section<br />
v Provide an FAQ section addressing the most frequently asked questions of the support team<br />
v Provide a framework that structures content for the user and not the business division<br />
v Enable staff to enter content that is then put through a workflow before being published on the<br />
intranet<br />
Project teams<br />
Define the role of each of the teams involved in the project and the organization of the teams. Some<br />
project team examples include:<br />
Executive sponsors<br />
The owners and drivers of the project<br />
Project team<br />
Responsible for the day-to-day management, analysis, and construction of the new site<br />
Reference group<br />
Business unit representatives consulted to ensure that their needs are addressed<br />
16 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Focus group<br />
User representatives consulted to ensure that the new site is user focused<br />
Deliverables<br />
Document all the deliverables of the project. Give a description of what the deliverable are and the<br />
expected timeframe for delivery.<br />
Human resource planning<br />
These roles are examples of the type of work performed by the people who create and manage a website.<br />
A single person can be responsible for more than one of the roles outlined in this section. The roles you<br />
implement in your organization to support your website are determined by the size and complexity of<br />
the system being deployed. Not all the following roles are required for every website, but all aspects of<br />
these roles must be considered during any system deployment.<br />
The project manager<br />
Large complex deployments require a project manager to ensure that there are sufficient resources<br />
available to deploy a system, that the correct users have been assigned to the project and that the tasks<br />
required to deploy the system occur at the correct time in the overall deployment process.<br />
Defining the project:<br />
It is important to have an understanding of the objectives, deliverables, and scope of a web<br />
content system. The project manager is responsible for creating a project plan to document the<br />
overall scope and goals of the project.<br />
v “Defining the project” on page 15<br />
Overseeing the development of a site prototype and design documents:<br />
After defining the project and creating an analysis document, the project manager is responsible<br />
for overseeing the development of a site prototype and design documents.<br />
v “Designing a prototype website using HTML” on page 31<br />
v “Creating an analysis document” on page 30<br />
Ensuring that the project has the optimum level of human and physical recourses:<br />
The project manager is responsible for ensuring that sufficient human and physical resources<br />
have been planned for the initial design, development, and ongoing maintenance of the website<br />
and related infrastructure.<br />
Project managing the deployment and installation of the hardware and software used to manage and<br />
deliver the website:<br />
The project manager is responsible for overseeing the deployment and installation of the<br />
hardware and software used to manage and deliver the website. The project manager monitors<br />
the progress of the overall deployment, and takes appropriate action to ensure that milestones are<br />
reached on time and on budget.<br />
v Installing<br />
Project managing the ongoing maintenance and upkeep of the hardware and software used to manage<br />
and deliver the website:<br />
The project manager also develops a plan for the ongoing monitoring and maintenance of the<br />
website and related infrastructure.<br />
v “Maintaining web content” on page 559<br />
Planning a website 17
Related information:<br />
Planning to install <strong>Web</strong>Sphere Portal<br />
“Planning a website” on page 15<br />
Before building a website, it is best practice to take time to analyze, plan, and design the website that<br />
you want to build, the web content system that you need to manage the website, the infrastructure<br />
required for the system, and the roles and users required to build the website and install infrastructure.<br />
The business analyst<br />
A business analyst is responsible for developing an analysis document.<br />
The business analyst is responsible for developing an analysis document. This document is used to record<br />
the information gathered from stakeholders that determine the design of the website, its content, and its<br />
features. The analysis document includes information on:<br />
v The types of users that will use the system<br />
v What features and applications will be required on the website<br />
v What existing content will need to be imported into the new web content system, and what new<br />
content will need to be created<br />
Related concepts:<br />
“Creating an analysis document” on page 30<br />
An analysis document is used to record the information gathered from stakeholders that determines the<br />
design of the website, its content, and its features.<br />
Related information:<br />
“Planning a website” on page 15<br />
Before building a website, it is best practice to take time to analyze, plan, and design the website that<br />
you want to build, the web content system that you need to manage the website, the infrastructure<br />
required for the system, and the roles and users required to build the website and install infrastructure.<br />
The architecture and design team<br />
Based on the data collected in the analysis document, the architecture and design team documents all the<br />
things required by the <strong>Web</strong>Sphere Portal system. The design documents the team develops are used by<br />
the deployment and development teams to deploy and manage the <strong>Web</strong>Sphere Portal system.<br />
The technical architecture team<br />
The technical architects are responsible for designing the overall server topology required for the entire<br />
system and the architecture of the servers that make up the system. The technical architecture team can<br />
include technical architects, database architects, security architects, performance engineers, and other<br />
resources as required.<br />
Determining a server architecture:<br />
The technical architect is responsible for designing a server architecture describing all the servers<br />
and related software required to deliver the website.<br />
v “Server architecture” on page 33<br />
v Server topologies<br />
v <strong>Web</strong> <strong>Content</strong> Management topologies<br />
Determining a database architecture:<br />
The database architect is responsible for designing a database architecture describing all the<br />
configuration settings required for the databases used in the system.<br />
v “Server architecture” on page 33<br />
v Database considerations<br />
v User registry considerations<br />
18 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Determining syndication strategies:<br />
The technical architect determines what syndication strategies are required between the different<br />
environments in the web content system.<br />
v “Server architecture” on page 33<br />
v “Syndication overview” on page 540<br />
Determining a security architecture:<br />
The security architect is responsible for designing a security architecture describing all groups<br />
and roles, and access levels required to ensure that different types of users have access only to<br />
the functions and content appropriate to their roles.<br />
v “Security architecture” on page 33<br />
v “Users, Groups and Roles” on page 532<br />
v Users and groups<br />
v Controlling access<br />
Determining a content acquisition architecture:<br />
The technical architect is responsible for designing a content acquisition describing the technical<br />
details of the methods to use when importing existing content in the new web content system.<br />
The content to import is based on the information collected in the analysis document.<br />
v “<strong>Content</strong> acquisition architecture” on page 41<br />
v “Creating an analysis document” on page 30<br />
v “The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API” on page 687<br />
v “Working with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> Integrator” on page 732<br />
v “Using <strong>Web</strong>DAV with <strong>Web</strong> content” on page 772<br />
Determining delivery strategies:<br />
The technical architect is responsible for determining which delivery methods are best suited for<br />
the types of websites being delivered.<br />
v “Delivery architecture” on page 41<br />
v “Types of websites” on page 6<br />
v “Delivering web content” on page 491<br />
Determining system maintenance strategies:<br />
The technical architecture team is also responsible for determining the ongoing maintenance<br />
strategies and procedures of the system.<br />
v “Maintenance architecture” on page 42<br />
Related information:<br />
<strong>Web</strong> <strong>Content</strong> Management topologies<br />
Installing <strong>Web</strong>Sphere Portal<br />
“Planning a website” on page 15<br />
Before building a website, it is best practice to take time to analyze, plan, and design the website that<br />
you want to build, the web content system that you need to manage the website, the infrastructure<br />
required for the system, and the roles and users required to build the website and install infrastructure.<br />
The information architect<br />
The information architect determines the overall informational structure of the website based on<br />
requirements gathered in the analysis document.<br />
Determining the website structure:<br />
The <strong>Web</strong> site structure designed by the information architect determines:<br />
v What Portal pages will need to be created if using portlet delivery.<br />
v What site areas will need to be created<br />
v “Working with pages” on page 121<br />
Planning a website 19
v “Site areas and site frameworks” on page 443<br />
Determining what content types are required:<br />
The content types required for each section in the website structure determine:<br />
v What authoring templates are required<br />
v What presentation templates are required<br />
v What template maps are required<br />
v “Working with authoring templates” on page 219<br />
v “Presentation templates” on page 470<br />
v “Template maps” on page 473<br />
Determining a content profiling architecture:<br />
The information architect determines what content profiling is required for features such as<br />
menus.<br />
v “Profiling strategies” on page 468<br />
Related concepts:<br />
“<strong>Web</strong> content administration functions” on page 531<br />
A web content administrator will need to maintain web content libraries, user roles, syndication<br />
relationships and external feed configurations.<br />
“Item management features” on page 474<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> includes a range of features that enable you manage the web content items used in<br />
your system.<br />
Related information:<br />
<strong>Web</strong> <strong>Content</strong> Management topologies<br />
Installing <strong>Web</strong>Sphere Portal<br />
“Presenting web content” on page 470<br />
The presentation of content items displayed in your website is determined by the presentation template<br />
used to display the content item.<br />
“Delivering web content” on page 491<br />
The type of delivery method you use to deliver web content to your viewers will depend on the type of<br />
content being delivered, and the type of viewers your website is intended for.<br />
The website designer<br />
A website designer is responsible for designing the layout and style of the web pages in a website. A<br />
graphic designer might also be employed to create graphics and color schemes for the website.<br />
Determining what themes, style sheets, and templates are required:<br />
The website designer determines what themes, style sheets, and presentation templates are<br />
required to deliver the website.<br />
v “Design architecture” on page 38<br />
v “Designing a prototype website using HTML” on page 31<br />
v Customizing the portal<br />
v “Creating a presentation template” on page 260<br />
Determining what elements and components are required:<br />
The page types and presentation templates required for your site determine:<br />
v What components are required<br />
v What elements are required for each authoring template<br />
v What elements are required to be stored in site areas<br />
v “Components” on page 441<br />
20 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Determining personalization strategies:<br />
The website designer determines what personalization strategies are required for the website.<br />
v “Personalization Overview” on page 575<br />
The authoring system architect<br />
The authoring system architect is responsible for determining the architecture of the authoring system<br />
used to create and manage web content.<br />
Designing the library architecture:<br />
The authoring system architect determines what libraries are required for the website.<br />
v “<strong>Web</strong> content libraries” on page 531<br />
Determining what authoring templates are required:<br />
The authoring system architect documents the configuration of each authoring template used in<br />
the authoring system and what template maps are required to link authoring templates and<br />
presentation templates.<br />
v “Working with authoring templates” on page 219<br />
v “Template maps” on page 473<br />
Designing a folder architecture:<br />
The authoring system architect determines what folders are required to store item-types within<br />
logical groupings.<br />
v “Working with folders” on page 474<br />
Design a change management model:<br />
The authoring system architect determines what workflows are required to manage approval<br />
processes and what items require a workflow.<br />
v “Change management features” on page 475<br />
Determine version control strategies:<br />
The authoring system architect determines what version control strategies are applied to the web<br />
content system.<br />
v “Managing versions of items” on page 490<br />
Related concepts:<br />
“<strong>Web</strong> content administration functions” on page 531<br />
A web content administrator will need to maintain web content libraries, user roles, syndication<br />
relationships and external feed configurations.<br />
“Item management features” on page 474<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> includes a range of features that enable you manage the web content items used in<br />
your system.<br />
Related information:<br />
“Presenting web content” on page 470<br />
The presentation of content items displayed in your website is determined by the presentation template<br />
used to display the content item.<br />
“Delivering web content” on page 491<br />
The type of delivery method you use to deliver web content to your viewers will depend on the type of<br />
content being delivered, and the type of viewers your website is intended for.<br />
The deployment team<br />
Based on the design documents developed by the technical design team, the deployment team builds and<br />
manages the <strong>Web</strong>Sphere Portal system.<br />
The database administrator<br />
A database administrator is responsible for deploying the database servers and data repositories based on<br />
the technical architecture developed by the database architect.<br />
Planning a website 21
The database administrator is responsible for installing all databases used by the website and related<br />
systems. The databases the administrator sets up are based on the technical architecture developed by the<br />
technical and database architects. The database administrator will need to become familiar with the user<br />
documentation of the data and user repositories used by the web content system.<br />
Related concepts:<br />
“Server architecture” on page 33<br />
Your technical architects define what web content environments are required for your system and the<br />
servers required for each environment. This information ensures that you have fully resourced the<br />
hardware required to support your web content system<br />
Related information:<br />
<strong>Web</strong> <strong>Content</strong> Management topologies<br />
Installing <strong>Web</strong>Sphere Portal<br />
Database considerations<br />
User registry considerations<br />
The <strong>Web</strong>Sphere Portal administrator<br />
A <strong>Web</strong>Sphere Portal administrator is responsible for the overall deployment and management of the<br />
servers in a <strong>Web</strong>Sphere Portal deployment based on the architecture developed by the technical architect.<br />
Installing and configuring <strong>Web</strong>Sphere Portal:<br />
The <strong>Web</strong>Sphere Portal administrator is responsible for installing and configuring all the instances<br />
of <strong>Web</strong>Sphere Portal used in the overall system.<br />
v Installing<br />
v Configuring<br />
Migration:<br />
The <strong>Web</strong>Sphere Portal administrator is responsible for migrating data and configuration settings<br />
from older versions of <strong>Web</strong>Sphere Portal.<br />
v Migrating<br />
Related concepts:<br />
“Security architecture” on page 33<br />
The security architecture describes what groups are required for your site and what access is required for<br />
different groups to the authoring portlet and rendered website.<br />
Related information:<br />
<strong>Web</strong> <strong>Content</strong> Management topologies<br />
Installing <strong>Web</strong>Sphere Portal<br />
The web content administrator<br />
A web content administrator is responsible for configuring the web content servers within a <strong>Web</strong>Sphere<br />
Portal system.<br />
<strong>Web</strong> content authoring environments<br />
In a web content authoring environment, a web content administrator performs the following tasks:<br />
Create new pages<br />
An administrator might need to create new pages to display additional authoring portlets used<br />
by different users, or for displaying web content viewer portlets to preview sites within.<br />
v “Working with pages” on page 121<br />
v “Custom portal pages for authoring” on page 215<br />
Configure an authoring portlet<br />
Each authoring portlet in an authoring environment needs to be configured to ensure that it has<br />
been configured correctly for the users using each authoring portlet.<br />
22 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v “Authoring portlet settings” on page 216<br />
Configure a web content viewer portlet<br />
Each web content viewer portlet in an authoring environment needs to be configured to display<br />
the content that is being previewed.<br />
v “<strong>Web</strong> content viewers” on page 492<br />
v “Displaying content with web content viewers” on page 492<br />
Create web content libraries<br />
The web content administrator creates a set of web content libraries based on the<br />
recommendations of the web content architect.<br />
v “<strong>Web</strong> content libraries” on page 531<br />
v “<strong>Web</strong> content library management” on page 209<br />
Clone a web content repository<br />
Before enabling syndication, a web content administrator, with a database administrator, clones a<br />
web content repository from the authoring environment to other environments.<br />
v “Cloning a web content repository” on page 572<br />
Manage syndication<br />
Syndication relationships are normally created on subscriber servers. As you typically syndicate<br />
only out from an authoring environment to other environments, you would not normally create a<br />
syndication relationship from an authoring environment, but a web content administrator might<br />
need to manage syndication settings and configurations from time to time.<br />
v “Syndication overview” on page 540<br />
v “Working with syndicators and subscribers” on page 549<br />
v “Syndication tuning” on page 545<br />
Create and manage feed configurations and jobs<br />
Sometimes web content is stored and maintained in external systems. You use the <strong>Web</strong> <strong>Content</strong><br />
Integrator to consume content from external systems using feeds.<br />
v “<strong>Web</strong> content feed management” on page 555<br />
Tune an authoring environment configuration settings<br />
Authoring environment configuration settings can be tuned for specific features.<br />
v “Configuring a web content authoring environment” on page 49<br />
<strong>Web</strong> content delivery environments<br />
In a web content delivery environment, a web content administrator performs the following tasks:<br />
Create new pages<br />
An administrator might need to create new pages when displaying content using web content<br />
viewer portlets.<br />
v “Working with pages” on page 121<br />
Configure a web content viewer portlet<br />
Each web content viewer portlet in a delivery environment needs to be configured to display the<br />
correct content.<br />
v “<strong>Web</strong> content viewers” on page 492<br />
v “Displaying content with web content viewers” on page 492<br />
Manage syndication<br />
A web content administrator creates syndication relationships to the delivery environment from<br />
the web content staging and authoring environments.<br />
v “Syndication overview” on page 540<br />
v “Working with syndicators and subscribers” on page 549<br />
Planning a website 23
v “Syndication tuning” on page 545<br />
Tune a delivery environment configuration settings<br />
Delivery environment configuration settings can be tuned for specific features.<br />
v “Configuring a web content delivery environment” on page 60<br />
In a UAT environment:<br />
A user acceptance testing environment is set up like authoring and delivery environments depending on<br />
the type of UAT being performed. The tasks required to set up the UAT environment are the same as<br />
those for the authoring and delivery environments.<br />
Related concepts:<br />
“Delivery architecture” on page 41<br />
Your technical architect and information architect need to define what delivery methods are most<br />
appropriate for the website you are delivering.<br />
“Server architecture” on page 33<br />
Your technical architects define what web content environments are required for your system and the<br />
servers required for each environment. This information ensures that you have fully resourced the<br />
hardware required to support your web content system<br />
Related information:<br />
<strong>Web</strong> <strong>Content</strong> Management topologies<br />
Installing <strong>Web</strong>Sphere Portal<br />
The security administrator<br />
A security administrator is responsible for securing the overall system including access control strategies<br />
and firewalls.<br />
Implementing the security plan outlined in the security architecture document:<br />
The security administrator is responsible for deploying the security features and processes<br />
outlined in the security architecture document developed by the security architect.<br />
v Security and authentication considerations<br />
v “Security architecture” on page 33<br />
Managing the user registry:<br />
The security administrator maintains the security registry by running various update delete tasks.<br />
v Managing user data<br />
Managing users and groups:<br />
The security administrator maintains the users and groups stored in the user registry.<br />
v Users and groups<br />
Managing access control<br />
The security administrator manages access controls to pages, portlets, modules, and other<br />
applications.<br />
v Controlling access<br />
Additional security tasks<br />
There are various other tasks carried out by the security administrator depending on what<br />
environment is being used.<br />
v Enabling step-up authentication, the Remember me cookie, or both<br />
24 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related information:<br />
<strong>Web</strong> <strong>Content</strong> Management topologies<br />
Installing <strong>Web</strong>Sphere Portal<br />
The development team<br />
Based on the design documents developed by the technical design team, the development team is<br />
responsible for creating custom applications using the product API.<br />
The portlet developer<br />
The portlet developer is responsible for developing new portlets.<br />
The portlet developer is primarily responsible for creating custom portlets used to aggregate content and<br />
function from external applications. The portlets they develop are based on the portlets identified in the<br />
design document.<br />
Related concepts:<br />
“Design architecture” on page 38<br />
The design architecture describes what your website will look like, and what components will be needed<br />
to build your site. You will need to define presentation templates, components, and themes.<br />
The theme developer<br />
A theme developer is responsible for creating new themes based on the designs developed by the<br />
information architect and the graphic designer.<br />
The theme developer is primarily responsible for creating custom themes based on the <strong>Web</strong> site designs<br />
outlined in the design architecture and the HTML used in the website prototype. Themes are a set of<br />
JSPs, images, and style sheets packaged together in a common directory structure. They can either be<br />
packaged directly in the wps.war or inside a separate WAR file of their own, or with other themes, skins,<br />
and resources.<br />
Related concepts:<br />
“Design architecture” on page 38<br />
The design architecture describes what your website will look like, and what components will be needed<br />
to build your site. You will need to define presentation templates, components, and themes.<br />
“Designing a prototype website using HTML” on page 31<br />
Before you create a design document for your web content system, it can be useful to create a prototype<br />
of your site using HTML. This prototype should be based on the outline defined in your project plan and<br />
the data gathered in your analysis document. The site structure, design, and HTML code you develop for<br />
your prototype can be used as the basis for many of the items defined in your design document.<br />
Related information:<br />
Customizing the portal<br />
The web content developer<br />
A web content developer is responsible for extending <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> by using the <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> API, developing JSP components and creating web content plug-ins.<br />
The <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API<br />
You can use the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API to extend the functions of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
v “The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API” on page 687<br />
Custom authoring interfaces<br />
Custom authoring interfaces are used by content authors as an alternative to using the authoring<br />
portlet.<br />
v “Creating a custom launch page” on page 704<br />
v “Using remote actions” on page 696<br />
Planning a website 25
Custom plug-ins<br />
You can create custom plug-ins to add custom features to your site such as custom workflow<br />
actions and text providers for multi-locale sites.<br />
v “Creating custom plug-ins” on page 705<br />
Related concepts:<br />
“Design architecture” on page 38<br />
The design architecture describes what your website will look like, and what components will be needed<br />
to build your site. You will need to define presentation templates, components, and themes.<br />
The website creation team<br />
Based on the design documents developed by the technical design team, the website creation team is<br />
responsible for creating the website and related systems.<br />
The website creator<br />
A website creator is responsible for building a website by creating presentation templates, authoring<br />
templates, site areas, components and categories. The web site creator is also responsible for creating<br />
content management items such as folders and workflows. The items created by a website creator are<br />
based on the designs created by the information architect and graphic designer.<br />
Creating web content management items<br />
Before creating a website, the web content creator begins by creating any required content management<br />
items:<br />
Creating folders<br />
Folders are used to store item-types within logical groupings.<br />
v “Creating a folder” on page 232<br />
Creating workflows<br />
Workflows are required to manage the approval processes of items.<br />
v “Creating a publish action” on page 272<br />
v “Creating an expire action” on page 274<br />
v “Creating an e-mail action to notify users, groups, or both” on page 276<br />
v “Creating a custom action” on page 280<br />
v “Creating a version action” on page 282<br />
v “Creating an action to move an item in the workflow as a specified time” on page 284<br />
v “Creating a workflow stage” on page 287<br />
v “Creating a workflow” on page 290<br />
Creating projects<br />
Projects are used to manage the approval process of a collection of items.<br />
v “Creating a project” on page 268<br />
Creating a website<br />
To create a website the following <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items will need to be created:<br />
Site areas<br />
Site areas are used to define the site framework of a site. <strong>Content</strong> items that form part of the site<br />
framework will be stored within the site framework.<br />
v “Creating site areas” on page 234<br />
26 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Authoring templates<br />
Authoring templates are required for the different types of pages in a website. <strong>Content</strong> items<br />
created by content authors will be based in the authoring templates created by the website<br />
creator.<br />
v “Creating an authoring template” on page 237<br />
Presentation templates<br />
Presentation templates determine the layout of the pages in a website and are linked to authoring<br />
templates by the template maps defined in site areas.<br />
v “Creating a presentation template” on page 260<br />
Elements and components<br />
Elements are added to authoring templates and site areas to store different types of content.<br />
Components are used to create single elements that can be reused across a website.<br />
v Adding elements to an item<br />
v “Creating components” on page 258<br />
v “Building a web content system” on page 209<br />
v “Working with element designs” on page 393<br />
Categories<br />
Categories are used to profile items that have been configured to allow content profiling.<br />
v “Creating a category for a taxonomy” on page 266<br />
Related concepts:<br />
“Information architecture” on page 37<br />
The information architecture describes the information structure of the site and how users will navigate<br />
through the site.<br />
“Design architecture” on page 38<br />
The design architecture describes what your website will look like, and what components will be needed<br />
to build your site. You will need to define presentation templates, components, and themes.<br />
The web content author<br />
A web content author is responsible for creating web content for the sites developed and managed using<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
<strong>Content</strong> authors create content either by accessing an authoring portlet, or by using a custom content<br />
authoring interface.<br />
Creating content items<br />
Presentation templates determine the layout of the pages in a website and are linked to authoring<br />
templates by the template maps defined in site areas.<br />
v “Creating content items” on page 253<br />
Working with elements and components<br />
Elements are added to authoring templates and site areas to store different types of content.<br />
Components are used to create single elements that can be reused across a website.<br />
v Adding elements to an item<br />
v “Creating components” on page 258<br />
v “Building a web content system” on page 209<br />
v “Working with element designs” on page 393<br />
v Adding elements to an item<br />
v “Creating components” on page 258<br />
The web content manager<br />
A web content manager is responsible for performing ongoing site maintenance activities.<br />
Planning a website 27
Moving, linking and copying items:<br />
From time to time a web content manager will need to redesign the structure of a website by<br />
moving or copying items.<br />
v “Managing site framework items” on page 436<br />
v “Managing a taxonomy” on page 435<br />
v “Copying other items to a different library” on page 439<br />
v “Moving other items between libraries” on page 439<br />
Managing authoring templates:<br />
From time to time a web content manager will need to reapply or change the authoring template<br />
used by a content item.<br />
v “Managing authoring templates” on page 433<br />
Restoring items:<br />
From time to time a web content manager will need to restore an item to a previously saved<br />
version.<br />
v “Restoring an item” on page 440<br />
Editing user profiles:<br />
Profiling information specific to a web content system can be added to a user profile to allow you<br />
to personalize content for a specific set of users.<br />
v “Editing user profiles” on page 440<br />
Managing access controls<br />
From time to time a web content manager will need to reapply or change the access controls of a<br />
set of items.<br />
v “Batch-editing access controls” on page 441<br />
The content acquisition team<br />
Based on the content identified in the analysis document, the content acquisition team is responsible for<br />
importing content from legacy systems into the new website. The team consists of a mixture of<br />
administrators and developers. Team members need to be experts in both legacy products and<br />
<strong>Web</strong>Sphere Portal<br />
The <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API:<br />
You can use the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API to import content into <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
v “The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API” on page 687<br />
<strong>Web</strong> content feeds<br />
You use the <strong>Web</strong> <strong>Content</strong> Integrator to consume content from external systems using feeds.<br />
v “Working with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> Integrator” on page 732<br />
Using <strong>Web</strong>DAV for web content:<br />
With <strong>Web</strong>DAV for <strong>Web</strong>Sphere Portal, you can use standard operating system tools to create,<br />
modify, and delete web content rather than the standard authoring portlet.<br />
v “Using <strong>Web</strong>DAV with <strong>Web</strong> content” on page 772<br />
Related concepts:<br />
“<strong>Content</strong> acquisition architecture” on page 41<br />
The content acquisition architecture is used to define what existing content will be imported into your<br />
web content system, how it will be imported, and what content will need to be created.<br />
The maintenance team<br />
Based on the maintenance architecture developed by the technical design team, the maintenance team is<br />
responsible for the ongoing monitoring and maintenance of the overall system.<br />
28 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The database administrator<br />
After all databases have been setup, the database administrator is then responsible for the ongoing<br />
monitoring and maintenance of all databases in the system.<br />
The <strong>Web</strong>Sphere Portal administrator<br />
The <strong>Web</strong>Sphere Portal administrator is responsible for ongoing maintenance of the <strong>Web</strong>Sphere Portal<br />
servers in the system.<br />
v Administering<br />
The web content administrator<br />
Manage syndication:<br />
Syndication relationships are normally created on subscriber servers. As you typically syndicate<br />
only out from an authoring environment to other environments, you would not normally create a<br />
syndication relationship from an authoring environment, but a web content administrator might<br />
need to manage syndication settings and configurations from time to time.<br />
v “Syndication overview” on page 540<br />
v “Working with syndicators and subscribers” on page 549<br />
v “Syndication tuning” on page 545<br />
Manage feed configurations and jobs:<br />
Sometimes web content is stored and maintained in external systems. You use the <strong>Web</strong> <strong>Content</strong><br />
Integrator to consume content from external systems using feeds.<br />
v “<strong>Web</strong> content feed management” on page 555<br />
Maintain an authoring system:<br />
From time to time a web content administrator needs to perform some maintenance tasks.<br />
v “Maintaining web content” on page 559<br />
The security administrator<br />
Managing the user registry:<br />
The security administrator maintains the security registry by running various update delete tasks.<br />
v Managing user data<br />
Managing the users and groups:<br />
The security administrator maintains the users and groups stored in the user registry.<br />
v Users and groups<br />
Managing access control:<br />
The security administrator manages access controls to pages, portlets, modules, and other<br />
applications.<br />
v Controlling access<br />
Additional security tasks:<br />
There are various other tasks carried out by the security administrator depending on the<br />
environment being used.<br />
v Enabling step-up authentication, the Remember me cookie, or both<br />
The performance engineer<br />
The performance engineer is responsible for ensuring that all the hardware and software in the system<br />
are tuned for maximum performance and reliability.<br />
v Troubleshooting<br />
Planning a website 29
Related concepts:<br />
“Maintenance architecture” on page 42<br />
There are a set of tasks that you need to plan for that will maintain the health and integrity of your web<br />
content system. Your technical architect and database architect need to define what maintenance<br />
procedures are required for your system, and when and how often they need to be run.<br />
Creating an analysis document<br />
An analysis document is used to record the information gathered from stakeholders that determines the<br />
design of the website, its content, and its features.<br />
These are some examples of the analysis that can be undertaken when designing a web content system.<br />
User analysis<br />
To design a website that supports the needs of the company and the users, you must know who your<br />
audience is. It is important to determine your users at this early stage of the project. Some of the things<br />
you want to discover are:<br />
v Who they are<br />
v Who are the most important groups<br />
v What do they want to do on the site<br />
v What will make them return to the site<br />
v What is their level of experience with the web<br />
To help you understand your main user groups even further, you can develop personas and scenarios:<br />
Personas<br />
A persona is a fictional person who represents a major user group for your site. By using the<br />
information gathered about your users, create a person who represents each main user group.<br />
Give them:<br />
v A name and picture<br />
v Demographics, such as age, education, and family status<br />
v Job role and responsibilities<br />
v Their goals and tasks in relation to the site<br />
v A background on their computer and web usage<br />
Scenarios<br />
A scenario is a story of how users might experience the site. They help you visualize the site and<br />
its users. They can help you view the navigation process as a whole. Scenarios are also useful in<br />
validating the website design after it is finished and can be used in usability testing. Use your<br />
personas, and give them a task to accomplish on the site. Write a story about how the character<br />
uses the site to finish the given task. Be creative.<br />
Competitive Analysis<br />
If you are building a public website it is useful to look at what the competition is doing. Generate a list<br />
of competitors and document things you like and dislike about their Internet sites. For intranet sites<br />
where you cannot compare your site with those of competitors, you can instead ensure that your intranet<br />
meets current standards.<br />
30 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<strong>Web</strong>site requirements<br />
<strong>Web</strong>site requirements describe the features and functions of a website. They document what the site must<br />
have and also what users can do. The requirements are not used to describe how to build the website,<br />
which is detailed in the design document.<br />
For example:<br />
General features:<br />
v Search<br />
v Contact details<br />
Allow users to:<br />
v Purchase a product<br />
v Sign up for a newsletter<br />
v Fill out a time-sheet online<br />
Include the following content and site areas:<br />
v Press releases<br />
v Policies and guides<br />
v Links to related articles<br />
<strong>Content</strong> Inventory<br />
It is useful to identify the types of content that make up the site. As your new website might be a<br />
redesign of an existing site, identify what content exists and what new content needs to be written.<br />
Create a content inventory, and add any existing web pages and potential types of content that you can<br />
think of. Types of content include:<br />
v Static content such as copyright notices and privacy statements<br />
v Dynamic content such as latest news and product campaigns<br />
v Transactional content such as logon pages and registration pages for email newsletters<br />
When creating a content inventory you can collect the following information:<br />
v A brief description<br />
v Topic area or category<br />
v Priority<br />
v Format, such as a web page, a file, or on paper<br />
v Intended audience<br />
v Related content<br />
v Created date<br />
v Last modified date<br />
v Owner<br />
v Author<br />
v Expiration date<br />
Designing a prototype website using HTML<br />
Before you create a design document for your web content system, it can be useful to create a prototype<br />
of your site using HTML. This prototype should be based on the outline defined in your project plan and<br />
the data gathered in your analysis document. The site structure, design, and HTML code you develop for<br />
your prototype can be used as the basis for many of the items defined in your design document.<br />
Planning a website 31
By creating a prototype website using HTML, you get to see what your actual website will look like, plus<br />
you develop many of the features used by your web content system and website.<br />
Building the prototype<br />
v The prototype website should include example pages of each page type defined in your project plan<br />
and analysis document. It should also include the basic site structure of your proposed website.<br />
v The prototype should be a functional website. It should include functioning navigational features to<br />
enable you to browse through the prototype. Examples of real content are used to populate the<br />
prototype.<br />
v Take care to ensure that the HTML and other code you write to create the prototype meets coding best<br />
practices because much of the code you develop for the prototype will be reused in your <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> site.<br />
Using HTML to plan the design of your site<br />
A useful method to begin the design of your content management system is to use HTML to develop a<br />
prototype of your site. Do this task in consultation with the web content information architect.<br />
The HTML site should include:<br />
v The design for the main home pages of each section of your site<br />
v The design for content pages stored in each section<br />
v The navigation features of your site<br />
The HTML site can then be used to help you determine what web content items need to be created for<br />
your web content management system.<br />
For example, the design of each web page in the HTML mock-up can determine different parts of your<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> site:<br />
v The layout of each HTML page determines the layout of your presentation templates.<br />
v The design of the navigation features determines what menus and navigators you will need to create.<br />
32 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Other features of your design, such as images and style sheets, will determine what components need to<br />
be created and whether you need to develop a new <strong>Web</strong>Sphere Portal theme.<br />
Creating a design document<br />
After defining the project and creating an analysis document, you define the requirements of your web<br />
content system in a design document. The design document outlines what types of content will be<br />
needed for your site, how they will be structured, how content will be authored, and what the final<br />
website will look like.<br />
Server architecture<br />
Your technical architects define what web content environments are required for your system and the<br />
servers required for each environment. This information ensures that you have fully resourced the<br />
hardware required to support your web content system<br />
Environmental architecture<br />
Every <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system consists of at least one authoring environment and one delivery<br />
environment. The authoring environment is used to create and manage the individual items that make up<br />
your website. The delivery system is used to deliver the web content to your viewers. In addition to<br />
these environments, you might also require testing environments where you perform user acceptance<br />
testing (UAT).<br />
The technical architecture team documents the overall environmental architecture required for your <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> system including:<br />
v What authoring, delivery and UAT environments are required<br />
v What <strong>Web</strong>Sphere Portal servers or clustered are required in each environment<br />
v What database servers are required to store the data repositories used by each <strong>Web</strong>Sphere Portal server<br />
or cluster<br />
v What syndication relationships are required between each environment<br />
v What user repositories, such as LDAP, are required<br />
Server architectures<br />
The technical architecture team also documents a server architecture for each server described in the<br />
environmental architecture. A server architecture describes the detailed setup of each server, including:<br />
v What hardware is required for each server<br />
v What operating system is required for each server<br />
v What software is required<br />
v Configuration settings for all hardware, software, and operating systems<br />
v Other relationships such as remote data repositories, and user repositories<br />
Security architecture<br />
The security architecture describes what groups are required for your site and what access is required for<br />
different groups to the authoring portlet and rendered website.<br />
In this example, item type roles are applied to the following groups:<br />
Table 1. Groups<br />
Group<br />
WCMAdmins<br />
Details<br />
Members of this group require access to all features of the authoring portlet.<br />
Planning a website 33
Table 1. Groups (continued)<br />
Group<br />
SiteAdmins<br />
SiteDesigners<br />
<strong>Content</strong>Authors<br />
<strong>Content</strong>Approvers<br />
Details<br />
Members of this group require access to all features of the authoring portlet except<br />
workflow.<br />
Members of this group require access to content items, presentation templates, authoring<br />
templates, and components.<br />
Members of this group require edit access to content items only.<br />
Members of this group require contributor access to content items only.<br />
Library access<br />
The simplest method of setting library access is to grant contributor access to all your groups. This access<br />
gives all users and groups contributor access to the library and authoring portlet. Additional access is<br />
then granted to each group using resource permissions. You can also grant the Anonymous Portal User<br />
group user access to ensure all anonymous users can access the library if anonymous access is required<br />
for your website.<br />
Table 2. Library access<br />
Roles Allow propagation Allow inheritance User or group<br />
Administrator Yes Yes<br />
<strong>Manager</strong> Yes Yes<br />
Editor Yes Yes<br />
User No Yes Anonymous Portal User<br />
Contributor Yes Yes WCMAdmins<br />
SiteAdmins<br />
SiteDesigners<br />
<strong>Content</strong>Authors<br />
<strong>Content</strong>Approvers<br />
Resource permissions<br />
Set the following resource permissions for each role type:<br />
v The WCMAdmins group is assigned the administrator role for all resources.<br />
v The SiteAdmins group is assigned the manager role to all resources except workflow and workflow<br />
elements as they do not require access to these resources.<br />
v The other groups are assigned roles for each resource as outlined below.<br />
Authoring templates<br />
The SiteDesigners group is assigned editor access to authoring templates as they are required to<br />
create new authoring templates.<br />
Table 3. Authoring templates<br />
Roles Allow propagation Allow inheritance User or group<br />
Administrator Yes Yes WCMAdmins<br />
<strong>Manager</strong> Yes Yes SiteAdmins<br />
Editor Yes Yes SiteDesigners<br />
34 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 3. Authoring templates (continued)<br />
Roles Allow propagation Allow inheritance User or group<br />
User Yes Yes<br />
Contributor Yes Yes<br />
Components<br />
SiteDesigners are assigned editor access to components as they are required to create components.<br />
Table 4. Components<br />
Roles Allow propagation Allow inheritance User or group<br />
Administrator Yes Yes WCMAdmins<br />
<strong>Manager</strong> Yes Yes SiteAdmins<br />
Editor Yes Yes SiteDesigners<br />
User Yes Yes<br />
Contributor Yes Yes<br />
<strong>Content</strong><br />
Both the SiteDesigners and <strong>Content</strong>Authors groups are assigned editor access to content as they<br />
are required to create content items.<br />
The <strong>Content</strong>Approvers group is assigned Contributor access only, because they are not required<br />
to create new content items, but need approve access to content items during a workflow. You<br />
must also assign the <strong>Content</strong>Approvers group approve access in the properties section of any<br />
workflow stages that <strong>Content</strong>Approvers will use to approve content items.<br />
Table 5. <strong>Content</strong><br />
Roles Allow propagation Allow inheritance User or group<br />
Administrator Yes Yes WCMAdmins<br />
<strong>Manager</strong> Yes Yes SiteAdmins<br />
Editor Yes Yes SiteDesigners<br />
<strong>Content</strong>Authors<br />
User Yes Yes<br />
Contributor Yes Yes <strong>Content</strong>Approvers<br />
Presentation Templates<br />
The SiteDesigners group is assigned editor access to presentation templates as they are required<br />
to create new presentation templates.<br />
Table 6. Presentation templates<br />
Roles Allow propagation Allow inheritance User or group<br />
Administrator Yes Yes WCMAdmins<br />
<strong>Manager</strong> Yes Yes SiteAdmins<br />
Editor Yes Yes SiteDesigners<br />
User Yes Yes<br />
Contributor Yes Yes<br />
Site areas<br />
Planning a website 35
Only the WCMAdmins and SiteAdmins groups require access to site areas as these are the only<br />
groups that build site frameworks.<br />
Table 7. Site areas<br />
Roles Allow propagation Allow inheritance User or group<br />
Administrator Yes Yes WCMAdmins<br />
<strong>Manager</strong> Yes Yes SiteAdmins<br />
Editor Yes Yes<br />
User Yes Yes<br />
Contributor Yes Yes<br />
Taxonomy<br />
Only the WCMAdmins and SiteAdmins groups require access to taxonomies as these are the only<br />
groups that build taxonomies.<br />
Table 8. Taxonomy<br />
Roles Allow propagation Allow inheritance User or group<br />
Administrator Yes Yes WCMAdmins<br />
<strong>Manager</strong> Yes Yes SiteAdmins<br />
Editor Yes Yes<br />
User Yes Yes<br />
Contributor Yes Yes<br />
Workflow and workflow elements<br />
Only the WCMAdmins group requires access to workflow and workflow elements as this is the<br />
only group that creates workflows. The groups that use workflows do not require access to the<br />
Workflow and workflow elements resource permissions.<br />
Table 9. Workflows<br />
Roles Allow propagation Allow inheritance User or group<br />
Administrator Yes Yes WCMAdmins<br />
<strong>Manager</strong> Yes Yes<br />
Editor Yes Yes<br />
User Yes Yes<br />
Contributor Yes Yes<br />
Item-level security inheritance<br />
By default, each role's access is automatically inherited down to each item in a library. To prevent a user<br />
or group from automatically having inherited access to an item, you need to turn off inheritance on that<br />
item.<br />
The permissions set for item type do not automatically give you access to individual items. They give<br />
you access only to specific tasks and views within the authoring portlet.<br />
You can also assign specific access to individual groups or users on each item.<br />
36 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related concepts:<br />
“Users, Groups and Roles” on page 532<br />
Your content management system will require different types of users. You will need to create a different<br />
group for each type of user and then assign those groups different roles within your system.<br />
Related information:<br />
User registry considerations<br />
Information architecture<br />
The information architecture describes the information structure of the site and how users will navigate<br />
through the site.<br />
The site map<br />
The website structure designed by the information architect determines what pages and site areas will<br />
need to be created to give your site a hierarchical structure. The site map describes the structure of the<br />
site and determines what pages and site areas are required for your site. For example:<br />
v Home page<br />
– News Page<br />
– Products Page<br />
- Product Site Area 1<br />
- Product Site Area 2<br />
- Product Site Area 3<br />
– Downloads Page<br />
– Support Page<br />
<strong>Content</strong> types<br />
The content types identified by the information architect determine what authoring templates are<br />
required for your authoring system. For example, your site might require the following content types:<br />
v Section home pages<br />
v News articles<br />
v Employee profiles<br />
v Product information<br />
v Photo galleries<br />
v Legal disclaimers<br />
<strong>Content</strong> profiling and taxonomies<br />
The information architect is responsible for determining what taxonomies are required to allow users to<br />
profile content. This information determines what content will be displayed within menu components.<br />
This is an example of a taxonomy for a financial services company:<br />
v MetaBank taxonomy:<br />
– Financial<br />
- Banking Solutions<br />
- Interest Rates<br />
v Personal<br />
v Business<br />
v Corporate<br />
Planning a website 37
– News<br />
Related concepts:<br />
“Working with pages” on page 121<br />
Read about the different tasks associated with the Manage Pages portlet.<br />
“Site areas and site frameworks” on page 443<br />
Site areas are used to define a hierarchical site framework. <strong>Content</strong> items are saved within the site<br />
framework to give your content structure and context.<br />
“Working with authoring templates” on page 219<br />
An authoring template determines the design of a content form, defines what fields and elements appear<br />
on a content form and specifies default values for fields and elements.<br />
“Presentation templates” on page 470<br />
Presentation templates determine the structure of each web page in your site and which elements and<br />
components are displayed on each page.<br />
“Profiling strategies” on page 468<br />
You use the profiling features of <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to group content items into different types of<br />
content.<br />
Design architecture<br />
The design architecture describes what your website will look like, and what components will be needed<br />
to build your site. You will need to define presentation templates, components, and themes.<br />
Themes and style-sheets<br />
You list the themes, style-sheets and styles in the design architecture. These designs can be based on the<br />
styles developed for your prototype website.<br />
Page wireframes<br />
Page wireframes can be used to describe the basic structure of each page-type in your site and the<br />
elements used on each page.<br />
Presentation templates<br />
You list each presentation template required for your website plus its HTML in the design architecture.<br />
The HTML you developed for the prototype website can be used as the basis for the HTML in the design<br />
document. The presentation template design includes:<br />
v The HTML design of the presentation template<br />
v Access settings<br />
v Whether a workflow is required and, if so, which one<br />
Components and elements<br />
Each component and element required for your website is listed in the design architecture as well as<br />
additional information such as:<br />
v HTML design for any required component fields<br />
v Parameter selections for any component parameters<br />
v Access settings<br />
v Whether a workflow is required and, if so, which one<br />
38 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Personalization strategies<br />
The website designer also determines what content needs to be personalized for specific users. For<br />
example, you might want to display a personalized home page for each individual user based on the<br />
user profile. The personalization strategies documented in the design architecture will determine what<br />
rules, content spots, and campaigns need to be created when using the Personalization application.<br />
Related concepts:<br />
“Presentation templates” on page 470<br />
Presentation templates determine the structure of each web page in your site and which elements and<br />
components are displayed on each page.<br />
“Components” on page 441<br />
You use components to store elements that are used in more than one area of your website. For example,<br />
a company logo or a copyright notice.<br />
“Personalization Overview” on page 575<br />
Portal Personalization provides automatic customization of website content for individual users and user<br />
groups.<br />
Related information:<br />
Customizing the portal<br />
Authoring architecture<br />
The authoring architecture describes what types of content will be required for the site and what change<br />
management strategies will be applied when updating content and design. You will need to define what<br />
authoring templates are required for your system, what workflows will be used to manage changes and<br />
what folders will be used to group items in the authoring portlet.<br />
Library architecture<br />
The library architecture describes where you will store your web content items. For example, you could<br />
split your site between the items that control the look and feel of your site, such as presentation<br />
templates and components, from the content of your site. You could also separate your libraries into<br />
different team libraries such as "human resources" and "support".<br />
Authoring templates<br />
You will need a separate authoring template for each type of content item used by your site. The list of<br />
authoring templates defined in your authoring architecture is based on the different page types identified<br />
in the project plan, analysis document, and prototype website.<br />
The information specified for each authoring template includes:<br />
v For the authoring template itself:<br />
– Name<br />
– Display title<br />
– Description<br />
– Template type<br />
– Access settings<br />
v Default content form settings including:<br />
– Default presentation template, if required<br />
– Default style sheet, if required<br />
– <strong>Content</strong> form layout<br />
– Whether editors can manage elements<br />
– Actions to hide<br />
Planning a website 39
– Where to save content<br />
– Help text<br />
– Versioning strategy<br />
v Default content and fields for the content item:<br />
– Name and field display options<br />
– Display title and field display options<br />
– Description and field display options<br />
– Required elements<br />
- HTML design for any default element content<br />
- Default parameter selections for any component parameters<br />
- Field display options<br />
v Default content properties for each content item:<br />
– Any default profiling and field display options<br />
– Any default workflow parameters and field display options<br />
– Any default access settings and field display options<br />
– Field display options for the History section<br />
Workflows<br />
You use workflows to control the access to, verification of, and eventual approval of items. Only if an<br />
item is approved at all stages up to a published stage can it be viewed on your website. You can use a<br />
workflow to:<br />
v Review the accuracy of content<br />
v Review content for any legal implications<br />
v Review content to ensure it meets accessibility guidelines<br />
v Ensure that no malicious code such as cross scripting attacks have been added to content<br />
Each workflow, workflow stage and workflow action required for your web content system is listed in<br />
the authoring architecture.<br />
Folders<br />
Folders are used to group sets of item types into logical groupings. This is useful when you have large<br />
numbers of items in your library and want to distinguish between different groups of items within each<br />
item type view. Each folder required for your web content system is listed in the authoring architecture.<br />
For example, you could use a set of folders to groups different sets of image components:<br />
v Logos<br />
v Diagrams<br />
v Staff photos<br />
v Product photos<br />
Version management strategies<br />
You can configure your system to either automatically save a version of an item each time it is published,<br />
or allow users to select when to save a version of an item. The version management strategy for different<br />
item types are documented in the authoring architecture.<br />
40 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related concepts:<br />
“<strong>Web</strong> content libraries” on page 531<br />
Your web content system can contain multiple libraries. The number of libraries required is determined<br />
by the type of website you are creating, and the types of users who require access to each library.<br />
“Users, Groups and Roles” on page 532<br />
Your content management system will require different types of users. You will need to create a different<br />
group for each type of user and then assign those groups different roles within your system.<br />
“Working with folders” on page 474<br />
You use folders to group sets of item types into logical groupings.<br />
“Change management features” on page 475<br />
You can manage changes to web content items either by creating drafts, using workflows or adding items<br />
to projects.<br />
“Managing versions of items” on page 490<br />
You can configure your system to either automatically save a version of an item each time it is published,<br />
or allow users to select when to save a version of an item. You can restore items individually, or choose<br />
to restore a set of items within a library that either have the same label or were versioned at, or before, a<br />
specified date and time.<br />
<strong>Content</strong> acquisition architecture<br />
The content acquisition architecture is used to define what existing content will be imported into your<br />
web content system, how it will be imported, and what content will need to be created.<br />
The content acquisition architecture is based on the content inventory that was collected during the<br />
analysis phase of the project. For each piece of content identified in the content inventory you define the<br />
following information:<br />
v Will this content be imported into the web content system, or will it be created afresh.<br />
v If the content is to be imported, what tool will be used. For example, <strong>Web</strong>Dav or the <strong>Web</strong> <strong>Content</strong><br />
Integrator.<br />
Additionally, the type of items being created need to be identified. For example:<br />
v Reusable pieces of content are best created as components<br />
v <strong>Web</strong> page specific content is best created as a content item<br />
v <strong>Content</strong> specific to a particular section of a website is best saved within a site area<br />
Related concepts:<br />
“The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API” on page 687<br />
You can use the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API to extend functions of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
“Working with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> Integrator” on page 732<br />
The <strong>Web</strong> <strong>Content</strong> Integrator is a solution for integrating externally managed <strong>Web</strong> content with<br />
<strong>Web</strong>Sphere Portal. Through the use of standard content syndication feed technologies based on RSS 2.0,<br />
the <strong>Web</strong> <strong>Content</strong> Integrator provides a loosely-coupled mechanism for transferring published content and<br />
metadata to the portal after they have been approved in the source system. Once the content and<br />
metadata have been transferred to the portal, it is possible to use the built-in content management<br />
features of <strong>Web</strong>Sphere Portal to secure, personalize, and display the content to users.<br />
Related tasks:<br />
“Using <strong>Web</strong>DAV with <strong>Web</strong> content” on page 772<br />
With <strong>Web</strong>DAV for <strong>IBM</strong> <strong>Web</strong>Sphere Portal, you can use standard operating system tools to create, modify,<br />
and delete <strong>Web</strong> content rather than the standard authoring portlet.<br />
Delivery architecture<br />
Your technical architect and information architect need to define what delivery methods are most<br />
appropriate for the website you are delivering.<br />
Planning a website 41
The delivery architecture describes which delivery methods are required for your web content system.<br />
Pre-rendered delivery<br />
You can pre-render a complete website into HTML and save it to disk. The pre-rendered site can then be<br />
used as your live site and displayed to users using either <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> or a web server. You<br />
deploy a pre-rendered site when you are not using any <strong>Web</strong>Sphere Portal features, such as portlets, and<br />
your content is static and is updated only periodically.<br />
Servlet delivery<br />
Users can access content displayed via the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> servlet. A servlet-delivered website<br />
should be used when you don't need to use any <strong>Web</strong>Sphere Portal based features such as authoring tools.<br />
Local web content viewer delivery<br />
<strong>Web</strong> content viewers are portlets that display content from a web content library as part of a portal page.<br />
If your presentation is simple, a single web content viewer can be sufficient, but you can also use<br />
multiple web content viewers to aggregate content from different libraries and provide a richer<br />
experience for your users. A local web content view portlet is used to display content within your web<br />
content delivery environment.<br />
Remote web content viewer delivery<br />
A remote web content view portlet is used to display content on a remote <strong>Web</strong>Sphere Portal server or<br />
cluster.<br />
Related information:<br />
“Delivering web content” on page 491<br />
The type of delivery method you use to deliver web content to your viewers will depend on the type of<br />
content being delivered, and the type of viewers your website is intended for.<br />
Maintenance architecture<br />
There are a set of tasks that you need to plan for that will maintain the health and integrity of your web<br />
content system. Your technical architect and database architect need to define what maintenance<br />
procedures are required for your system, and when and how often they need to be run.<br />
Backup and restore strategies<br />
You should document backup and restore strategies for all the software and repositories in your web<br />
content system. This approach includes documenting procedures to back-up and restore:<br />
v Data repositories<br />
v Themes<br />
v Portlets<br />
v Page structures<br />
v Configuration settings<br />
v Custom application<br />
Applying updates<br />
The process and timing of software updates are defined in the maintenance architecture. This not only<br />
applies to <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> and <strong>Web</strong>Sphere Portal, but to all software products in your web content<br />
system.<br />
42 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
For example, you would document procedures to install cumulative fixes for <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> on a<br />
regular basis.<br />
Running maintenance tools<br />
You document the process and timing of running each maintenance tool. This documentation not only<br />
applies to <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> and <strong>Web</strong>Sphere Portal, but to all software products in your web content<br />
system.<br />
For example, you would document when and how often to run maintenance tools, such as the member<br />
fixer task, and when to clear item and version histories to maintain server performance.<br />
Related concepts:<br />
“Maintaining web content” on page 559<br />
You use these tools and features to ensure the efficient operation of your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system.<br />
Road map to building a web content system<br />
To build a web content system you need to deploy hardware, configure servers, design an authoring<br />
system, configure a delivery environment and enable syndication. Get an overview of the steps required<br />
to build your web content system. Keep in mind the analysis and design documents developed during<br />
the planning phase of a project as you review the road map.<br />
Deploying the authoring environment<br />
The first environment to deploy is your authoring environment. This environment can initially be used<br />
by a small team as a development environment, but can eventually be used as the authoring environment<br />
for all your users. The authoring environment is deployed based on the technical architecture defined in<br />
the project design documents.<br />
1. Based on the database architecture defined in the project design document, the database administrator<br />
deploys a database server for the authoring environment.<br />
v Database considerations<br />
2. Based on the security architecture defined in the project design document, the LDAP administrator:<br />
a. Creates a new LDAP server if one does not exist.<br />
b. Creates all the groups and users required for the web content system.<br />
v Managing user data<br />
v “Security architecture” on page 33<br />
3. Based on the server architecture defined in the project design document, the <strong>Web</strong>Sphere Portal<br />
administrator does the following:<br />
a. Installs a <strong>Web</strong>Sphere Portal server or cluster of servers.<br />
b. Configures the <strong>Web</strong>Sphere Portal server or cluster to use the database server setup by the database<br />
administrator.<br />
c. Configures <strong>Web</strong>Sphere Portal to use the LDAP server as its user repository.<br />
d. Configures various <strong>Web</strong>Sphere Application Server, <strong>Web</strong>Sphere Portal and <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
configuration properties to ensure the system is correctly setup for web content authoring and is<br />
tuned for optimal performance.<br />
v Installing<br />
v Configuring<br />
v “Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>” on page 49<br />
4. Based on the information architecture and security architecture defined in the project design<br />
document, the <strong>Web</strong>Sphere Portal administrator:<br />
a. Creates all the libraries required for the web content system.<br />
Planning a website 43
. Assigns users and groups to the roles and access permissions.<br />
c. Create all pages required by the web content system.<br />
d. Adds all required authoring portlets to the appropriate pages and configures the authoring<br />
portlets for use by different teams to create and manage web content items.<br />
e. Adds all required web content viewer portlets to the required pages for use as preview pages.<br />
v “<strong>Web</strong> content library management” on page 209<br />
v “Users, Groups and Roles” on page 532<br />
v “Security architecture” on page 33<br />
v “Working with pages” on page 121<br />
v Managing pages<br />
v “Authoring portlet settings” on page 216<br />
v “Displaying content with web content viewers” on page 492<br />
5. Final testing and tuning of the authoring environment is undertaken by all administrators.<br />
The authoring environment is now ready to use.<br />
Building the content authoring system<br />
Before you can start adding content to your web content system, you need to create all the items that will<br />
be used to manage and deliver your web content.<br />
1. Based on the design architecture defined in the project design document, the web content developer<br />
creates plug-ins and JSP code in preparation for the creation of the content authoring system.<br />
v “The web content developer” on page 25<br />
v “Design architecture” on page 38<br />
v “Developing” on page 687<br />
2. Based on the information architecture defined in the project design document, the website creator<br />
does the following:<br />
a. Creates site areas.<br />
b. Creates taxonomies and categories.<br />
v “The website creator” on page 26<br />
v “Information architecture” on page 37<br />
v “Creating site areas” on page 234<br />
v “Creating a taxonomy” on page 264<br />
v “Creating a category for a taxonomy” on page 266<br />
3. Based on the content authoring architecture defined in the project design document, the website<br />
creator does the following:<br />
a. Creates workflow actions, stages, and defines workflows.<br />
b. Creates authoring templates.<br />
v “The website creator” on page 26<br />
v “Authoring architecture” on page 39<br />
v “Creating items” on page 232<br />
4. Based on the design architecture defined in the project design document, the website creator does the<br />
following:<br />
a. Creates components.<br />
b. Creates presentation templates.<br />
v “The website creator” on page 26<br />
v “Design architecture” on page 38<br />
v “Creating components” on page 258<br />
44 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v “Creating a presentation template” on page 260<br />
5. Based on the information architecture defined in the project design document, the website creator<br />
edits site areas and defines template maps.<br />
v “The website creator” on page 26<br />
v “Information architecture” on page 37<br />
v “Template maps” on page 473<br />
6. If required, the web content developer also creates a custom content authoring interface based on the<br />
content authoring architecture defined in the project design document.<br />
v “The web content developer” on page 25<br />
v “Design architecture” on page 38<br />
v “Developing” on page 687<br />
7. The website creator then creates some test content to test the content authoring system, and previews<br />
the test content. Any defects found in the content authoring system are addressed and further changes<br />
made to improve performance and usability.<br />
Importing and creating content<br />
When the authoring system is ready, you then import and create the default content for your system. This<br />
is often managed by a separate team from the team that builds the web content authoring system.<br />
1. Based on data gathered during the analysis phase of the project, the content acquisition team<br />
identifies and prepares any existing content for import into the web content authoring system.<br />
v “The content acquisition team” on page 28<br />
v “<strong>Content</strong> acquisition architecture” on page 41<br />
2. The content acquisition team then imports existing content into the web content authoring system<br />
using features such as the <strong>Web</strong> <strong>Content</strong> Integrator, <strong>Web</strong>Dav or the web content API.<br />
v “Working with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> Integrator” on page 732<br />
v “Developing” on page 687<br />
3. The content acquisition team then create new content based on the information architecture defined in<br />
the project design document.<br />
v “Information architecture” on page 37<br />
4. The content acquisition team then test the authoring system, and preview the default content. Any<br />
defects found in the authoring system are addressed and further changes made to improve<br />
performance and usability.<br />
Deploying the delivery environment<br />
The delivery environment is used to deliver your website to your website viewers. The delivery<br />
environment is deployed based on the requirements defined in the project design document.<br />
1. Based on the database architecture defined in the project design document, the database administrator<br />
does the following:<br />
a. Deploys a database server for the delivery environment.<br />
b. Clones the data stored on the authoring database onto the delivery database.<br />
v Database considerations<br />
v “Cloning a web content repository” on page 572<br />
2. Based on the server architecture defined in the project design document, the <strong>Web</strong>Sphere Portal<br />
administrator does the following:<br />
a. Installs a <strong>Web</strong>Sphere Portal server or cluster of servers.<br />
b. Configures the <strong>Web</strong>Sphere Portal server or cluster to use the database server setup by the database<br />
administrator.<br />
Planning a website 45
c. Configures various <strong>Web</strong>Sphere Application Server, <strong>Web</strong>Sphere Portal and <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
configuration properties to ensure the system is correctly setup for web content delivery and is<br />
tuned for optimal performance.<br />
v Installing<br />
v Configuring<br />
v Managing user data<br />
v “Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>” on page 49<br />
3. Based on the information architecture and security architecture defined in the project design<br />
document, the <strong>Web</strong>Sphere Portal administrator:<br />
a. Create all pages required by the web content system.<br />
b. Adds all required web content viewer portlets to the appropriate pages.<br />
v “Working with pages” on page 121<br />
v Managing pages<br />
v “Displaying content with web content viewers” on page 492<br />
4. The <strong>Web</strong>Sphere Portal administrator configures and enables syndication.<br />
v “Syndication concepts” on page 540<br />
v “Working with syndicators and subscribers” on page 549<br />
5. Final testing and tuning of the delivery environment is undertaken by all administrators.<br />
The delivery environment is now ready to use.<br />
Final steps<br />
Once your environments have been installed, the authoring system completed, added default content to<br />
your site, and fully tested the system, you are ready to go live.<br />
1. Ensure your stakeholders are ready to use your <strong>Web</strong> site and authoring system:<br />
a. Ensure your content authors have had training on how to use the new web content authoring<br />
system.<br />
b. Ensure any legacy authoring or delivery systems are redirected to the new system.<br />
c. Launch marketing campaigns to bring visitors to the new website.<br />
2. Based on the maintenance architecture defined in the project design document, you perform regular<br />
monitoring and maintenance tasks to ensure your system is healthy and operating efficiently.<br />
v “Maintenance architecture” on page 42<br />
v “Maintaining web content” on page 559<br />
46 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Installing and migrating<br />
<strong>Lotus</strong> <strong>Web</strong> <strong>Content</strong> Management is installed using the <strong>Web</strong>Sphere Portal installation interface. Complete<br />
installation instructions are included in the <strong>Web</strong>Sphere Portal product documentation. Follow the<br />
installation instructions for <strong>Web</strong>Sphere Portal, then configure the authoring and delivery environments<br />
based on your needs and instructions provided in this documentation. Migration instructions are also<br />
included in the <strong>Web</strong>Sphere Portal product documentation; <strong>Lotus</strong> <strong>Web</strong> <strong>Content</strong> Management is migrated<br />
as part of the overall <strong>Web</strong>Sphere Portal migration process.<br />
47
48 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
Set up a content server by installing <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> in various<br />
deployments to provide robust and flexible environments for web content development and delivery.<br />
After you install the content server, there are additional configuration steps you need to complete,<br />
according to the role that the server plays in your web content environment.<br />
Configuration for <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> is managed through services defined as resource environment<br />
providers in <strong>IBM</strong> <strong>Web</strong>Sphere Application Server. For each service you can edit existing properties and<br />
add new properties through the <strong>Web</strong>Sphere Application Server administrative console.<br />
Configuring a web content authoring environment<br />
Set up the authoring environment by installing the authoring portlet and enabling other features required<br />
to support the authoring environment.<br />
Installing the authoring portlet<br />
Pages that include the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> authoring portlet and the local rendering portlet are created<br />
when you first install <strong>Web</strong>Sphere Portal. You only run the authoring portlet configuration task if you<br />
have previously uninstalled your authoring or local rendering portlets. The authoring portlet<br />
configuration task will automatically create <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> pages and install the authoring portlet<br />
and local rendering portlets.<br />
Installing on Windows, UNIX, and i<br />
1. Open a command prompt.<br />
2. Run the configure-wcm-authoring task from the wp_profile_root/ConfigEngine directory.<br />
Windows<br />
ConfigEngine.bat configure-wcm-authoring -DPortalAdminPwd=password<br />
-DWasUserid=username -DWasPassword=password<br />
UNIX<br />
./ConfigEngine.sh configure-wcm-authoring -DPortalAdminPwd=password<br />
-DWasUserid=username -DWasPassword=password<br />
i ConfigEngine.sh configure-wcm-authoring -DPortalAdminPwd=password<br />
-DWasUserid=username -DWasPassword=password<br />
3. Log out of the portal and log back in.<br />
4. Select <strong>Web</strong> <strong>Content</strong> from the product banner to access the authoring portlet.<br />
Cluster note: If the authoring portlet does not display after installing in a cluster, you might need to<br />
activate the portlet.<br />
Installing on z/OS ®<br />
1. Start the Customization Dialog.<br />
49
2. Navigate to the Configure <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> panel: Configure <strong>Web</strong>Sphere Portal > <strong>Web</strong>Sphere<br />
Portal for z/OS > Application Configuration Tasks > Configure <strong>Web</strong> <strong>Content</strong> Management.<br />
3. Select Deploy Authoring Portlets.<br />
4. Select Define variables.<br />
5. Select the option for the variables you want to define, and follow the panels to define the variables.<br />
6. Generate the customization jobs.<br />
7. Follow the Customization Dialog instructions for submitting the customization jobs.<br />
Cluster note: If the authoring portlet does not display after installing in a cluster, you might need to<br />
activate the portlet.<br />
Locale consistency<br />
The language displayed in the authoring portlet is determined by the region or locale of the user. There<br />
are, however, some elements of the authoring portlet that use <strong>Web</strong>Sphere Portal functions, such as date<br />
selection fields. These will be displayed using the locale of the <strong>Web</strong>Sphere Portal server. For this reason,<br />
the language and locales of the site being created, the client and server should be consistent.<br />
If your site contains content in different languages, then a separate <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> authoring<br />
applications should be setup for each language on different <strong>Web</strong>Sphere Portal Servers. These can then be<br />
combined into one site using a staging server.<br />
Note: If a user changes their locale, any currently opened <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> dialogs will be closed. A<br />
user will also have to start a new session before it is displayed using the new locale. It is best practice to<br />
have the client's correct locale set prior to using <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Additional authoring portlet configuration options<br />
Additional authoring portlet configuration options can be specified using the portlet administration view.<br />
To add additional authoring portlet configuration parameters:<br />
v Open the portal administration view.<br />
v Go to Administration > Portlet Management > Portlets.<br />
v Search for the web <strong>Content</strong> Authoring portlet.<br />
v Open the configuration view.<br />
You can add any of the following optional configuration parameters:<br />
Table 10. Additional authoring portlet configuration parameters<br />
Parameter<br />
htmlfield.rows<br />
htmlfield.columns<br />
htmlfield.embedded.rows<br />
htmlfield.embedded.columns<br />
Details<br />
Defines the number of rows to display in an HTML field used in an element<br />
design or presentation template. If not specified, the default setting of 15<br />
rows is used.<br />
Defines the width of an HTML field used in an element design or<br />
presentation template. The width is defined as the number of characters to<br />
display per row. If not specified, the default setting of 85 characters is used.<br />
Defines the number of rows to display in an HTML field used in an element<br />
design or presentation template, but not an HTML component. If not<br />
specified, the number of rows defined using htmlfield.rows is used.<br />
Defines the width of an HTML field used in an element design or<br />
presentation template, but not an HTML component. The width is defined<br />
as the number of characters to display per row. If not specified, the number<br />
of characters defined using htmlfield.columns is used.<br />
50 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 10. Additional authoring portlet configuration parameters (continued)<br />
Parameter<br />
htmlfield.htmlcomponent.rows<br />
htmlfield.htmlcomponent.columns<br />
htmlfield.presentation.rows<br />
htmlfield.presentation.columns<br />
EDIT_LIVE_CUSTOM_LICENCE<br />
Details<br />
Defines the number of rows to display in the HTML field used in an HTML<br />
component. If not specified, the number of rows defined using htmlfield.rows<br />
is used.<br />
Defines the width of the HTML field used in an HTML component. The<br />
width is defined as the number of characters to display per row. If not<br />
specified, the number of characters defined using htmlfield.columns is used.<br />
Defines the number of rows to display in the HTML field used in a<br />
presentation template. If not specified, the number of rows defined using<br />
htmlfield.rows is used.<br />
Defines the width of the HTML field used in a presentation template. The<br />
width is defined as the number of characters to display per row. If not<br />
specified, the number of characters defined using htmlfield.columns is used.<br />
Use this is enter a custom license key to use in place of the OEM license for<br />
Ephox EditLive using this format:<br />
Account ID,Domain,Expiration,License Key,Licensee,Product,Release<br />
Note: All users will need to logoff and login before any configuration changes will appear in the<br />
authoring portlet.<br />
<strong>Web</strong> content authoring options<br />
You can tailor the authoring behavior of your web content environment by changing configuration<br />
settings such as workflow, profiling, and version control.<br />
You define and manage authoring options in the WCM WCMConfigService service using the <strong>IBM</strong> <strong>Web</strong>Sphere<br />
Application Server administration console.<br />
Enabling workflows<br />
As default, the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application will workflow content items only. You can update<br />
the WCM WCMConfigService service to enable workflows for different items.<br />
To enable workflows, create a new property for the item type to which you want to apply workflow, and<br />
specify a value of com.aptrix.pluto.workflow.WorkflowControl for the property. You can enable<br />
workflow for the following item types:<br />
v <strong>Content</strong> items (control.<strong>Content</strong>)<br />
v Presentation templates (control.Style)<br />
v Authoring templates (control.Template)<br />
v Taxonomy items (control.Taxonomy)<br />
v Categories (control.Category)<br />
v Site items (control.Sites)<br />
v Site area items (control.SiteArea)<br />
v Library components (control.Cmpnt)<br />
For example to enable workflow for authoring templates, you would add the following property:<br />
v Property name: control.Template<br />
v Value: com.aptrix.pluto.workflow.WorkflowControl<br />
To disable workflow for an item type, you set the property to "false". For example, to disable workflow<br />
for authoring templates, you would do the following:<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 51
v Property name: control.Template<br />
v Value: false<br />
Note: If workflows are enabled for the following items, a workflow view will not be available in the<br />
item views navigator.<br />
v Site areas.<br />
v Taxonomies and categories.<br />
v Workflows, workflow stages, or workflow actions.<br />
Individual items can still be moved through workflow stages by accessing them through the normal item<br />
views and approving them.<br />
Note: Only content items can be moved through a workflow using the web content API. If you enable<br />
workflows for other item types, you will not be able to approve or reject these items using the API.<br />
Enabling profiling<br />
As default, the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application will profile content items only. You can update the WCM<br />
WCMConfigService service to enable profiling for different items.<br />
To enable profiling, create a new property for the item type to which you want to apply profiling, and<br />
specify a value of com.aptrix.pluto.taxonomy.ProfileControl for the property. You can enable workflow<br />
for the following item types:<br />
v <strong>Content</strong> items (control.<strong>Content</strong>)<br />
v Presentation templates (control.Style)<br />
v Authoring templates (control.Template)<br />
v Taxonomy items (control.Taxonomy)<br />
v Categories (control.Category)<br />
v Site items (control.Sites)<br />
v Site area items (control.SiteArea)<br />
v Library components (control.Cmpnt)<br />
For example to enable profiling for components, you would add the following property:<br />
v Property name: control.Cmpnt<br />
v Value: com.aptrix.pluto.taxonomy.ProfileControl<br />
To disable profiling for an item type, you set the property to "false". For example, to disable profiling on<br />
components, you would do the following:<br />
v Property name: control.Cmpnt<br />
v Value: false<br />
Version control options<br />
By default version control is enabled with the following properties:<br />
v versioningStrategy.AuthoringTemplate<br />
v versioningStrategy.Component<br />
v versioningStrategy.<strong>Content</strong><br />
v versioningStrategy.PresentationTemplate<br />
v versioningStrategy.Site<br />
v versioningStrategy.Taxonomy<br />
52 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v versioningStrategy.Workflow<br />
v versioningStrategy.Default<br />
You can use the following values to specify version control settings:<br />
always<br />
A version is saved every time a non-workflowed item is saved, or every time a workflowed item<br />
is published.<br />
manual<br />
Versions will only be saved when a user with at least editor access chooses to save a version. This<br />
setting causes the following changes in the interface:<br />
v The Save Version button is available in the read mode of non-workflowed items and in<br />
workflowed items in the published state.<br />
v The Save and Version button is available in the edit mode of non-workflowed items and in<br />
workflowed items in the published state.<br />
never Disable version control for an item type.<br />
If a version control strategy is not defined for an item type, then the version control strategy specified in<br />
by the versioningStrategy.Default property is used.<br />
Inheritance options<br />
By default, inheritance is automatically propagated down to each item. You can disable automatic<br />
inheritance by specifying the following property:<br />
v Property name: default.inherit.permissions.enabled<br />
v Value: false<br />
When this setting is specified, it is applied only to new items. The inheritance on existing items will<br />
remain unchanged.<br />
Hierarchical item locking options<br />
When a content item is being edited, it is locked. Other users are prevented from editing the content item<br />
until it is unlocked. Locking of site areas, taxonomies and categories is configurable and is not enabled by<br />
default. To enable locking for hierarchical item types, specify the following properties: change the<br />
following parameters to "true":<br />
Property name<br />
wcm.authoringui.lock.taxonomies<br />
wcm.authoringui.lock.categories<br />
wcm.authoringui.lock.siteareas<br />
Value<br />
true<br />
true<br />
true<br />
When locking is enabled for site areas you cannot create any children under the locked site area. For<br />
example, if a site area is locked, you will not be able to create any new site areas or content items under<br />
that site area until it is unlocked. This only applies to items located one level below a locked parent.<br />
Items located under a child of a locked parent are not affected.<br />
Defining valid mime types for the image element<br />
You define the mime types of files that are allowed to be uploaded into the image element using the<br />
imageresourcecmpnt.allowedmimetypes property and a list of mime types for the value. For example:<br />
v Property name: imageresourcecmpnt.allowedmimetypes<br />
v Value: image/gif,image/jpeg<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 53
This will prevent users uploading non-image files into the image element.<br />
Active content filtering<br />
Active content filtering provides the ability to strip specified HTML fragments from HTML entered in<br />
elements. This includes rich text and HTML elements. Active content filtering is configured using the<br />
active.content.filtering.enable property. By default, active content filtering is enabled.If enabled, this<br />
will prevent a user from introducing malicious code into a web site such as cross site scripting.<br />
For example, if a user entered this code into an HTML element:<br />
Welcome<br />
my link<br />
window.alert("boo 2!")<br />
Click the link for a surprise.<br />
It would be changed to this when saved:<br />
Welcome<br />
">my link<br />
v If the property is not specified, this setting will default to the false behavior.<br />
Importing large files and images<br />
Because importing large files into <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> can have a negative impact on<br />
performance, you can adjust several settings to ensure better performance when importing files.<br />
Before updating the settings for large file handling, review the following considerations:<br />
UNIX note: If you are running on a UNIX operating system, ensure that you have used the ulimit -f<br />
command to set the maximum size of files that can be created to be at least the size of the largest file you<br />
would need to upload to the content server. The command ulimit -f unlimited removes any limit on<br />
file size. When setting the size, also make sure the system has sufficient disk space to support the setting.<br />
Disk space requirements: When importing files, a temporary directory is used to store the files during<br />
the upload process. If the size of the uploaded files exceeds the available disk space for the temporary<br />
directory, the import operation fails. When uploading large files, ensure that there is sufficient disk space<br />
to accommodate the import. The location of the temporary directory is specified by the<br />
jcr.binaryValueFileDir property in the wp_profile_root/PortalServer/jcr/lib/com/ibm/icm/<br />
icm.properties file.<br />
1. Log in to the administrative console for <strong>IBM</strong> <strong>Web</strong>Sphere Application Server.<br />
2. Click Resources > Resource Environment > Resource Environment Providers > WCM<br />
WCMConfigService > Custom properties.<br />
Cluster note: If you are using this web content server as part of a cluster, ensure that you use the<br />
administration console for the deployment manager when manipulating configuration properties.<br />
3. For the resource.maxUploadSize property, specify a value in megabytes corresponding to the size of<br />
the largest file that you want to allow to be imported. For example, if you do not want to allow files<br />
larger than 34 MB to be imported, update the resource.maxUploadSize property to have a value of<br />
34. Although it is recommended that this value not exceed 100 MB, you cannot upload files larger<br />
than 512 MB.<br />
4. For the resourceserver.maxCacheObjectSize property, specify a value of 300 KB or less.<br />
5. Add the transaction.sync.remove property, and specify a value of true.<br />
6. Click Servers > Server Types > <strong>Web</strong>Sphere application servers > portal_server > Server<br />
infrastructure > Administration > Custom Properties<br />
7. Add the protocol_http_large_data_inbound_buffer property, and for the value specify the<br />
maximum file size in bytes. This value should correspond to the value you set for the<br />
resource.maxUploadSize property in the WCM WCMConfigService service.<br />
Note that the protocol_http_large_data_inbound_buffer property uses bytes. So if you specified a<br />
value of 34 MB for the resource.maxUploadSize property, you would specify a value of 35651584<br />
bytes for the protocol_http_large_data_inbound_buffer property.<br />
8. Click Resources > JDBC > Data sources > datasource_name > Custom properties<br />
9. Specify the fullyMaterializeLobData property with a value of false.<br />
10. Click Resource > JDBC > Data sources > datasource_name > Connection pool properties.<br />
11. Increase the maximum number of database collections allowed for the application server by<br />
increasing the value of the Maximum connections field to a value greater than the default 50<br />
connections.<br />
12. If you are working with files larger than 100 MB, increase the web containers transaction timeout<br />
setting.<br />
a. Click Servers > Server Types > <strong>Web</strong>Sphere application servers > portal_server > Container<br />
Services > Transaction service.<br />
b. Increase the value of the Total transaction lifetime timeout setting from the default setting of 120<br />
seconds.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 55
13. Increase the maximum number of threads allowed in the thread pool used by the web container.<br />
a. Click Servers > Server Types > <strong>Web</strong>Sphere application servers > portal_server > Thread pools<br />
> <strong>Web</strong>Container.<br />
b. Set the value of the Maximum Size field to 100 threads.<br />
14. If you are using <strong>IBM</strong> HTTP Server Version 7, increase the connection timeout value for connections<br />
to the application.<br />
a. Click Servers > Server Types > web servers > web_server > plug-in properties > Custom<br />
properties > New.<br />
b. In the name field, enter ServerIOTimeout.<br />
c. In the value field, enter the timeout value in seconds.<br />
The default value is 60 seconds. However, when working with large files, this default value is<br />
typically insufficient and can cause a false server error response to be sent, which in turn causes<br />
the portal to reissue the request. Specify a timeout value that is long enough to allow a failing<br />
request to receive a response, or enter -1 for an unlimited timeout value.<br />
15. Click Save to save your configuration changes.<br />
16. Restart the portal for the settings to take effect.<br />
Note: If the portal's policy cache manager indicates that a number of web container threads are hung, set<br />
the cacheinstance.com.ibm.wps.policy.services.PolicyCache<strong>Manager</strong>.lifetime property in the WP<br />
Cache<strong>Manager</strong>Service service to a value of -1. This setting reduces the database connections and load<br />
times and helps prevent threads from hanging.<br />
Increasing time-outs<br />
If users are experiencing timeout errors when saving items, you can increase the total transaction<br />
lifetime timeout setting of your <strong>Web</strong>Sphere Portal server.<br />
The total transaction lifetime timeout setting is changed using the <strong>Web</strong>Sphere Application Server<br />
administration console.<br />
Go to Servers > Server Types > <strong>Web</strong>Sphere application serversportal_server> Container Services ><br />
Transaction Service<br />
The total transaction lifetime timeout setting should be changed to the same amount on all the<br />
servers in your web content system.<br />
Alternatives to increasing server time-outs<br />
Increasing the total transaction lifetime timeout setting may not always be the best solution to server<br />
time-outs as increasing this setting too much may cause a drop in performance. Timeout errors generated<br />
when saving items occur when the current transaction finishes before the item has been saved. If the item<br />
you are saving contains large amounts of data, it may be better to redesign the item rather than change<br />
the total transaction lifetime timeout setting:<br />
Table 11. Alternatives to increasing server time-outs<br />
Option<br />
Authoring Templates<br />
Presentation templates and<br />
components<br />
Details<br />
If a large number of elements have been added to an authoring template, you may<br />
experience a timeout error when saving. Instead of using a single authoring template,<br />
create multiple authoring templates that contain only those elements required for a<br />
specific task.<br />
You may receive timeout errors when saving presentation templates or components<br />
that contain large amounts of HTML or rich text in their designs. You should instead<br />
create multiple HTML or rich text components and then reference these in the<br />
presentation templates or component designs.<br />
56 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 11. Alternatives to increasing server time-outs (continued)<br />
Option<br />
Site areas and content items<br />
Details<br />
You may receive timeout errors when saving site areas and content items that contain<br />
elements that use large amounts of HTML. You should instead create multiple HTML<br />
or rich text components and then reference these in element designs.<br />
If a large number of elements have been added to a site area or content item, you<br />
may also experience a timeout error when saving. In this case, you should reduce the<br />
number of elements stored in the site area or content item.<br />
Downloadable files<br />
Another alternative to creating web content containing large amounts of HTML or<br />
rich text is to provide information on your website in the form of downloadable files.<br />
These can be stored as file resource elements.<br />
Configuring remote server access for links<br />
Before you can add links to files and documents stored in remote content management systems into web<br />
content elements, you must configure your server with information about the remote system and the<br />
settings used to handle communication with the system.<br />
<strong>IBM</strong> <strong>Content</strong> <strong>Manager</strong> and SSL usage: <strong>IBM</strong> <strong>Content</strong> <strong>Manager</strong> Services for <strong>Lotus</strong> Quickr provides the<br />
capability to link to documents stored in <strong>IBM</strong> <strong>Content</strong> <strong>Manager</strong>. These links are generated according to<br />
the base service URL configured in <strong>IBM</strong> <strong>Content</strong> <strong>Manager</strong> Services for <strong>Lotus</strong> Quickr, as specified by the<br />
urlBaseService property in the cmpathservice.properties file. If you have enabled Secure Sockets Layer<br />
(SSL) encryption for your portal, verify that the base service URL reflects the https protocol and not the<br />
http protocol to ensure that links are generated correctly. Refer to the documentation for <strong>IBM</strong> <strong>Content</strong><br />
<strong>Manager</strong> Services for <strong>Lotus</strong> Quickr for details on how to update the urlBaseService property.<br />
To prevent linking to unsafe servers, you need to specify a list of allowed domains that your portal can<br />
access using the portal's AJAX proxy component. You can use the global AJAX proxy configuration to<br />
customize the outgoing HTTP traffic, such as applying specific HTTP timeout values or configuring an<br />
outbound HTTP proxy server. To do this, map the URL patterns for the ECM server to the<br />
federated_documents_policy dynamic policy using the WP ConfigService configuration service.<br />
1. Log in to the <strong>Web</strong>Sphere Application Server administrative console.<br />
2. Click Resources > Resource Environment > Resource Environment Providers.<br />
3. Click WP ConfigService.<br />
4. Under Additional Properties, click Custom Properties.<br />
5. Click New, and enter the property name<br />
wp.proxy.config.urlreplacement.federated_documents_policy.suffix, and set the string value to the<br />
URL pattern of the ECM server.<br />
For example, to enable the server to access information from the ECM server ecm.example.com on port<br />
10038 over HTTP, you would add the following property:<br />
wp.proxy.config.urlreplacement.federated_documents_policy.1=http://ecm.example.com:10038/*<br />
Note: The value of the property key suffix can be any value as long as it is unique within the set of<br />
keys mapping to the federated_documents_policy.<br />
6. Create additional properties as needed for any other ECM servers that you need to access through the<br />
server.<br />
7. Save your changes, and restart the portal server.<br />
If a user tries to access a server (for example, www.example.com) that has not been added to the list of<br />
allowed domains, the following message is displayed:<br />
Access to remote server www.example.com has not been granted. Please contact your system administrator.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 57
Related tasks:<br />
“Inserting a link to remote content” on page 396<br />
You can insert links to remote content into elements containing a rich text field using the Insert Link to<br />
Remote <strong>Content</strong> button. Only remote content that has been configured remote server access can be<br />
selected using this button.<br />
<strong>IBM</strong> DB2 <strong>Content</strong> <strong>Manager</strong> publication library<br />
Setting up support for federated documents<br />
Before you can access metadata from federated documents, you need to configure the federated<br />
documents feature. You can also tune the cache settings that are used with the federated documents<br />
feature.<br />
Single sign-on requirement: Before you can use the federated documents feature, you must enable single<br />
sign-on (SSO) in <strong>IBM</strong> <strong>Web</strong>Sphere Application Server between the portal server and the content<br />
management system.<br />
Important: If you are setting up single sign-on between <strong>IBM</strong> <strong>Lotus</strong> Quickr and your portal server, export<br />
the SSO key from the <strong>Lotus</strong> Quickr server and import it into the portal server, rather than the other way<br />
around.<br />
Configuring federated documents<br />
To retrieve metadata information for documents on remote content management systems, configure the<br />
federated documents feature with information about the remote system and the settings used to handle<br />
communication with the system.<br />
Because the federated documents feature uses the AJAX proxy component to access the remote content<br />
management system, you can use the global AJAX proxy configuration to customize the outgoing HTTP<br />
traffic, such as applying specific HTTP timeout values or configuring an outbound HTTP proxy server.<br />
You must list the individual content management servers to be accessed through the federated documents<br />
feature as allowed request targets in the AJAX proxy configuration, and enable LTPA cookie forwarding<br />
for those requests. To do this, map the URL patterns for the content management server to the<br />
federated_documents_policy dynamic policy using the WP ConfigService configuration service.<br />
1. Log in to the <strong>Web</strong>Sphere Application Server administrative console.<br />
2. Click Resources > Resource Environment > Resource Environment Providers.<br />
3. Click WP ConfigService.<br />
4. Under Additional Properties, click Custom Properties.<br />
5. Click New, and enter the property name<br />
wp.proxy.config.urlreplacement.federated_documents_policy.suffix, and set the string value to the<br />
URL pattern of the content management server.<br />
For example, to enable the federated documents feature to access information from the content<br />
management server ecm.example.com on port 10038 over HTTP, you would add the following<br />
property:<br />
wp.proxy.config.urlreplacement.federated_documents_policy.1=http://ecm.example.com:10038/*<br />
Note: The value of the property key suffix can be any value as long as it is unique within the set of<br />
keys mapping to the federated_documents_policy dynamic policy.<br />
6. Create additional properties as needed for any other content management servers that you need to<br />
access through the federated documents feature.<br />
7. Optional: The federated documents feature can also consume arbitrary ATOM feeds. To enable this,<br />
you can map the URL prefix of the ATOM feed to the default_policy dynamic policy.<br />
58 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
a. Click New, and enter the property name<br />
wp.proxy.config.urlreplacement.default_policy.suffix, and set the string value to the URL<br />
pattern of the server providing the ATOM feed.<br />
For example, to enable the federated documents feature to access ATOM feeds from the server<br />
www.example.com, you would add the following property:<br />
wp.proxy.config.urlreplacement.default_policy.1=http://www.example.com/*<br />
The value of the property key suffix can be any value as long as it is unique within the set of<br />
keys mapping to the default_policy dynamic policy.<br />
Important: To prevent security token forwarding to untrusted servers, be sure that you do not use<br />
the federated_documents_policy dynamic policy for those servers.<br />
b. Create additional properties as needed for any other ATOM feed servers that you need to access<br />
through the federated documents feature.<br />
8. Save your changes, and restart the portal server.<br />
Cache tuning for federated documents<br />
The federated documents feature uses the document list cache and the document data cache to manage<br />
information about the list of documents and the document data.<br />
v The document list cache contains the list of document identifiers contained in the rule selection result of<br />
a specific user and a specific selection rule.<br />
v The document data cache contains the metadata of a specific document.<br />
Both caches are activated by default with a default cache entry lifetime of 10 minutes.<br />
To tune these caches you can configure the Cache <strong>Manager</strong> Service (WP Cache<strong>Manager</strong>Service) in the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server administrative console. Properties for the document list cache are<br />
identified by cacheinstance.com.ibm.pzn.wcm.ecm.DocumentListCache, and properties for the document<br />
data cache are identified by cacheinstance.com.ibm.pzn.wcm.ecm.DocumentMetaDataCache.<br />
Updates occurring on the remote content management system might not immediately be reflected on the<br />
portal side if there is a corresponding entry found in the cache. The individual cache life time values<br />
determine the maximum time lag for corresponding updates.<br />
Note:<br />
v The time lag for new documents becoming visible and deleted documents being removed depends on<br />
the lifetime value for the configured document list cache.<br />
v The time lag for updates in the metadata describing a document (for example, changes to the<br />
document title) depends on the configured lifetime value for the document list cache.<br />
The user-specific document list cache is explicitly invalidated each time the user logs in, so that the most<br />
current list of available document identifiers is available upon login.<br />
Configuring a web content staging environment<br />
Configure the staging environment to emulate the web content delivery environment and allow for<br />
testing before deployment.<br />
You define and manage staging environment options in the WCM WCMConfigService service using the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server administration console.<br />
v If your staging server is to be used purely as a holding server where changes to your site are<br />
accumulated prior to syndicating these changes to a delivery environment, then you may only need to<br />
review the syndication settings of the staging server. In most cases you would ensure that automatic<br />
syndication is disabled.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 59
v If you are using your staging environment for user acceptance testing prior to syndicating to a delivery<br />
environment then you will need to ensure that all other settings configured on your staging server<br />
match those set on the delivery server.<br />
Configuring a web content delivery environment<br />
Set up your delivery environment by installing web content viewers and enabling any other required<br />
features.<br />
Setting up site analysis for the web content viewer<br />
To track usage data for the JSR 286 web content viewer, you can configure the portal for site analysis<br />
logging for the web content viewer.<br />
Enabling the web content viewer logger<br />
To take advantage of the site analysis logging available for the JSR 286 web content viewer, you need to<br />
configure the WP SiteAnalyzerLogService service and activate the SiteAnalyzerJSRPortletLogger service.<br />
Before you activate the SiteAnalyzerJSRPortletLogger logger, you must ensure that site analysis has been<br />
enabled for the portal in general, as described in Logging and analyzing server side site data.<br />
1. Log in to the <strong>Web</strong>Sphere Application Server administrative console.<br />
2. Click Resources > Resource Environment > Resource Environment Providers.<br />
3. Click WP SiteAnalyzerLogService.<br />
4. Activate the SiteAnalyzerJSRPortletLogger logger through the WP SiteAnalyzerLogService by defining<br />
the parameter SiteAnalyzerJSRPortletLogger.isLogging and by setting the parameter value to true.<br />
5. Save your changes, and restart the portal.<br />
Site analysis example for the web content viewer<br />
The site analysis log uses the NCSA Combined log format, which is a combination of NCSA Common log<br />
format and three additional fields: the referrer field, the user_agent field, and the cookie field. This<br />
example describes typical site analysis logging information for the JSR 286 web content viewer.<br />
The <strong>IBM</strong> <strong>Web</strong>Sphere Portal site analysis log is:<br />
wp_profile_root/logs/<strong>Web</strong>Sphere_Portal/sa_date_time.log<br />
where date_time is the date and time the file was created. The current (active) log file is named sa.log.<br />
Note: The WP SiteAnalyzerService might be configured to use different filenames.<br />
The following example displays a sample entry in the site analysis log as it is written by the web content<br />
viewer if the SiteAnalyzerJSRPortletLogger is enabled.<br />
9.37.3.88 - jdoe [22/Nov/2008:22:11:27 +0100] "GET /Portlet/5_8000CB1A00U6B02NVSPH1G20G1/<br />
<strong>Web</strong>_<strong>Content</strong>_Viewer_(JSR_286)/<strong>Web</strong>%20<strong>Content</strong>%2fTestSite01%2fTestSiteArea01<br />
%2fTest<strong>Content</strong>01PortletPID=5_8000CB1A00U6B02NVSPH1G20G1&PortletMode=view&PortletState=normal<br />
&RequestType=render&PUBLIC_CONTEXT=%2f<strong>Web</strong>%20<strong>Content</strong>%2fTestSite01 %2fTestSiteArea01<br />
%2fTest<strong>Content</strong>01 HTTP/1.1" 200 -1 "http://myserver.company.com/Page/<br />
6_8000CB1A00UR402F0JC25U1O25/MyPage" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;<br />
rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18" "JSESSIONID=0000JwIm04xm7btVLwzCj9Qo-uj:-1"<br />
The table describes each field of the log format:<br />
60 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 12. Explanation of each field in the log format<br />
Field in the Example<br />
9.37.3.88<br />
-<br />
jdoe<br />
[22/Nov/2008:22:11:27 +0100]<br />
Log Field Name and Explanation<br />
host<br />
rcf931<br />
The IP address of the HTTP client that sent the<br />
request.<br />
Important: If there is a reverse proxy server<br />
between the client and the portal, the IP address<br />
logged is that of the reverse proxy server rather<br />
than the HTTP client. To log the IP address of<br />
the HTTP client, you must remove the reverse<br />
proxy server from the environment.<br />
The identifier used to identify the client making<br />
the request. If the client identifier is not known,<br />
the field is set to the hyphen character (-).<br />
username<br />
The user ID for the client. If the user ID is not<br />
known, the field is set to the hyphen character<br />
(-).<br />
date:time timezone<br />
The date and time of the HTTP request.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 61
Table 12. Explanation of each field in the log format (continued)<br />
Field in the Example<br />
Log Field Name and Explanation<br />
"GET /Portlet/[...] HTTP/1.1"<br />
request The HTTP method, the URI of the requested<br />
resource, and the version of HTTP used by the<br />
client. The URI is composed of the following<br />
elements:<br />
v The identifier Portlet.<br />
v<br />
v<br />
v<br />
v<br />
The ID of the web content viewer instance<br />
that is requested.<br />
The administrative name of the web content<br />
viewer (Note: This name is always the same<br />
unless the portlet has been cloned.).<br />
The context path of the rendered <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> item encoded in UTF-8.<br />
A query string containing the following<br />
parameters:<br />
PortletPID<br />
The ID of the web content viewer<br />
instance that is requested.<br />
PortletMode<br />
The mode in which the portlet is<br />
rendered. Note that the web content<br />
viewer writes log entries only in its<br />
view mode.<br />
PortletState<br />
The portlet window state.<br />
RequestType<br />
The request type (note that the web<br />
content viewer writes log entries<br />
only for render requests).<br />
This is followed by a list of all request<br />
parameters that are available to the web<br />
content viewer instance as UTF-8 encoded<br />
key-value-pairs.<br />
200<br />
-1<br />
"http://myserver.company.com/Page/<br />
6_8000CB1A00UR402F0JC25U1O25/MyPage"<br />
"Mozilla/5.0 [...]"<br />
statuscode<br />
The HTTP status code for the request.<br />
bytes<br />
referrer<br />
The number of bytes of data transferred from<br />
the client as part of the request. A value of -1<br />
indicates that the number of bytes is unknown.<br />
The referrer in case of portlet site analysis log<br />
entries identifies the portal page on which the<br />
web content viewer instance is rendered.<br />
user_agent<br />
The type of web browser used by the client.<br />
62 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 12. Explanation of each field in the log format (continued)<br />
Field in the Example<br />
"JSESSIONID=0000JwIm04xm7btVLwzCj9Qo-uj:-1"<br />
Log Field Name and Explanation<br />
cookies<br />
The name and value of a cookie that was sent to<br />
the client browser as part of the request. If<br />
multiple cookies were sent, the list is delimited<br />
by the semicolon character.<br />
XML configuration interface parameters for the JSR 286 web content<br />
viewer<br />
As with other portlets in your portal, you can use the XML configuration interface (xmlaccess command)<br />
to deploy and configure the JSR 286 web content viewer. To simplify the configuration of the portlet with<br />
the XML configuration interface, the portlet parameters you can specify accept path values in addition to<br />
the standard IDs.<br />
By default JSR 286 web content viewer is configured with unique IDs. This has the advantage that the<br />
configuration does not break if an item is renamed of moved. However, when configuring a portlet with<br />
the XML configuration interface, it can be difficult to determine the unique ID of an item. When<br />
configuring the JSR 286 <strong>Web</strong> content viewer, you can reference web content items by their path, as well<br />
as by their IDs, by using the following parameters:<br />
AUTHORINGTEMPLATE_OVERRIDE<br />
Specifies the authoring templates of the profile section. The parameter can contain multiple<br />
values, separated by commas. The list can contain both ID and path values.<br />
CATEGORY_OVERRIDE<br />
Specifies the categories of the profile section. To list multiple categories, separate the categories by<br />
commas. You can use both ID values and path values.<br />
SITEAREA_OVERRIDE<br />
Specifies the site areas of the profile section. To list multiple site areas, separate the site areas by<br />
commas. You can use both ID values and path values.<br />
WCM_BROADCASTS_TO<br />
Specifies the link broadcasting setting for the web content viewer. Values include:<br />
v WCM_LINKING_DYNAMIC: Information about the web content item displayed in the web content<br />
viewer is used to dynamically determine to which page the context is broadcast.<br />
v WCM_LINKING_SELF: The context of the current <strong>Web</strong> content viewer is broadcast to other web<br />
content viewers on the same portal page.<br />
v WCM_LINKING_OTHER: The context of the current <strong>Web</strong> content viewer is broadcast to other web<br />
content viewers on another portal page, as specified by the WCM_PORTAL_PAGE_ID parameter.<br />
v WCM_LINKING_NONE: The context of the current <strong>Web</strong> content viewer is not broadcast to other web<br />
content viewers.<br />
WCM_COMPONENT_IDR<br />
Specifies a library component and is only used if content type Component is selected.<br />
WCM_CONTENT_COMPONENT<br />
Specifies the name of the element to be displayed, when the WCM_CONTENT_TYPE parameter has the<br />
value CONTENT_COMPONENT.<br />
WCM_CONTENT_CONTEXT_IDR<br />
Specifies the content render context. It can be a content item or site area, as specified by the<br />
WCM_CONTENT_CONTEXT_TYPE parameter.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 63
WCM_CONTENT_CONTEXT_TYPE<br />
Specifies the type of the configured content context. Values include:<br />
v CONTENT: Indicates that the content context is a content item.<br />
v PARENT: Indicates that the content context is a site area.<br />
WCM_CONTENT_TYPE<br />
Specifies the item to be displayed. Values include:<br />
v CONTENT: Indicates that the item to be displayed is a content item.<br />
v COMPONENT: Indicates that the item to be displayed is a component.<br />
v CONTENT_COMPONENT: Indicates that the item to be displayed is an element.<br />
WCM_DESIGN_IDR<br />
Specifies an alternate presentation template.<br />
WCM_LISTENS_TO<br />
Specifies how the web content viewer is configured to receive links broadcast from other web<br />
content viewers. Values include:<br />
v WCM_LINKING_OTHER: Information is received from any web content viewer broadcasting links.<br />
v WCM_LINKING_SELF: Information is received only from this web content viewer.<br />
v WCM_LINKING_NONE: No information from other web content viewers is received.<br />
WCM_PAGE_TITLE<br />
Used with the WCM_PAGE_TITLE_TYPE parameter, this parameter specifies the page title for the web<br />
content viewer. Values include:<br />
v The user-defined title for the page, if the WCM_PAGE_TITLE_TYPE parameter has a value of<br />
WCM_PAGE_TITLE_TYPE_GENERAL.<br />
v The name of the resource bundle containing the title for the page, if the WCM_PAGE_TITLE_TYPE<br />
parameter has a value of WCM_PAGE_TITLE_TYPE_RESBUN.<br />
WCM_PAGE_TITLE_TYPE<br />
Specifies how the page title is displayed for the web content viewer. Value include:<br />
v WCM_PAGE_TITLE_TYPE_DEFAULT: The default title defined in the portal's administration interface<br />
is used.<br />
v WCM_PAGE_TITLE_TYPE_GENERAL: A user-defined title is used, as specified by WCM_PAGE_TITLE<br />
parameter.<br />
v WCM_PAGE_TITLE_TYPE_RESBUN: The title is defined in a resource bundle, as specified by<br />
WCM_PAGE_TITLE parameter.<br />
v WCM_PAGE_TITLE_TYPE_DYN: The title is defined by the value of the Display title field for the<br />
content item that is displayed in the web content viewer.<br />
WCM_PORTAL_PAGE_ID<br />
Specifies the unique name or object ID of the page which is the target for link broadcasts, when<br />
the WCM_BROADCASTS_TO parameter is set to WCM_LINKING_OTHER.<br />
WCM_PORTLET_TITLE<br />
Used with the WCM_PORTLET_TITLE_TYPE parameter, this parameter specifies the portlet title for the<br />
web content viewer. Values include:<br />
v The user-defined title for the portlet, if the WCM_PORTLET_TITLE_TYPE parameter has a value of<br />
WCM_PORTLET_TITLE_TYPE_GENERAL.<br />
v The name of the resource bundle containing the title for the portlet, if the<br />
WCM_PORTLET_TITLE_TYPE parameter has a value of WCM_PORTLET_TITLE_TYPE_RESBUN.<br />
WCM_PORTLET_TITLE_TYPE<br />
Specifies how the portlet title is displayed for the web content viewer. Value include:<br />
v WCM_PORTLET_TITLE_TYPE_DEFAULT: The default title defined in the portal's administration<br />
interface is used.<br />
64 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v WCM_PORTLET_TITLE_TYPE_GENERAL: A user-defined title is used, as specified by<br />
WCM_PORTLET_TITLE parameter.<br />
v WCM_PORTLET_TITLE_TYPE_RESBUN: The title is defined in a resource bundle, as specified by<br />
WCM_PORTLET_TITLE parameter.<br />
v WCM_PORTLET_TITLE_TYPE_DYN: The title is defined by the value of the Display title field for the<br />
content item that is displayed in the web content viewer.<br />
When specifying a content path, you must begin with the forward slash character (/) followed by the<br />
library name, as indicated in the following examples of valid content paths:<br />
/mylib/myfolder/mysitearea/mycontent<br />
or<br />
/mylib/mypresentationtemplate<br />
Note: If you configure an item by its path rather than by its ID, the portlet configuration can become<br />
invalid if the item is renamed or moved. If an item has been configured by its path, the web content<br />
viewer displays a small path icon after the item when you are in the Edit Shared Settings or Configure<br />
mode.<br />
Important: When configuring an item by its path, you cannot build the path from the Display title fields<br />
of the items in the path. You must use the Name fields of the items when specifying the path.<br />
Caching options<br />
Both <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> generated <strong>Web</strong> pages and content from external data sources can be<br />
cached by the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application. If utilized correctly, <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> caching can<br />
dramatically increase the performance of a site.<br />
<strong>Web</strong> content cache types<br />
Learn about the types of caching used by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>, basic web content caching and<br />
advanced web content caching.<br />
Basic web content caching<br />
This is the simplest caching option. The first time a web page is rendered by the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
application, it is stored in a cache. Users then access this page from the cache until it expires. Only then is<br />
the web page rendered afresh. The main benefit of this scenario is improved performance. Basic caching<br />
should only be used on static content that does not require "real-time" access.<br />
Advanced web content caching<br />
There are two major differences between basic caching and advanced caching:<br />
v Advanced caching can cache pages based on different user profiles.<br />
v Cache parameters in connect tags and URL requests can be used to override your server's default<br />
advanced web content caching settings allowing you to set custom cache settings for individual web<br />
pages or components.<br />
Table 13. Advanced caching types<br />
Advanced caching type<br />
Site caching<br />
Session caching<br />
Details<br />
This is the same as the basic web content cache except that cache parameters in<br />
connect tags and URL requests can be used to override your server's default<br />
advanced web content caching settings.<br />
When session caching is enabled, a copy of each <strong>Web</strong> page a user visits is stored in<br />
the session cache. The User accesses the cached version of a web page until they start<br />
a new session, or until the cached web page is expired from the cache.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 65
Table 13. Advanced caching types (continued)<br />
Advanced caching type Details<br />
User caching<br />
When user caching is enabled, a copy of each <strong>Web</strong> page a user visits is stored in the<br />
user cache. The user accesses the cached version of a web page until the cached web<br />
page is expired from the cache.<br />
Secured caching<br />
Secured caching is used on sites where the item security features are used to grant<br />
different users access to different <strong>Web</strong> pages and components based on the groups<br />
they belong to.<br />
Personalized caching Personalized caching is used to cache web pages of users who have the same<br />
"personalization profile". This means that users who have selected the same<br />
personalization categories and keywords, and who belong to the same group, share a<br />
single cache.<br />
Default web content caching versus custom caching<br />
Cache parameters in connect tags and URL requests can be used to override your server's default<br />
advanced web content caching settings allowing you to set custom cache settings for individual web<br />
pages or components.<br />
In most cases, basic, site and session caching would only be used as your server's default web content<br />
cache. User, secured and personalized caching would mostly be used when using custom caching in<br />
connect tags and URL requests.<br />
Note:<br />
If basic caching is used as your default web content cache, custom caching cannot be used.<br />
Cache comparisons<br />
Table 14. Basic caching versus advanced caching<br />
Function Basic caching Advanced caching<br />
Memory usage per item: Medium High<br />
Performance improvement: Very High High<br />
Custom caching available: No Yes<br />
Connect tag processing: No Yes<br />
<strong>Web</strong> <strong>Content</strong> Viewer Portlet: No Yes<br />
Caching Personalization components:<br />
<strong>Web</strong> content caching can sometimes be used with Personalization components but will depend on the<br />
conditions set in the personalization rule, or the resources used to determine the rule results. Cache<br />
testing will be required to determine if the content returned by your personalization component can be<br />
cached using web content caching.<br />
Caching versus pre-rendering<br />
<strong>Content</strong> displayed in rendering portlets and through <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> can be cached. An<br />
alternative to caching is the use of the pre-rendering feature. View the differences between each strategy.<br />
A pre-rendered site can be viewed in two ways:<br />
Using a web server<br />
Viewing a pre-rendered site through a web server is similar to using basic caching because the<br />
displayed content is static and custom caching cannot be used.<br />
66 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Using <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
Viewing a pre-rendered site through <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> is similar to using advanced caching<br />
because content can be dynamic and custom caching can be used.<br />
Basic caching versus a pre-rendered site delivered with a web server<br />
At first glance, the pre-rendering feature and basic caching do the same thing. There are however, some<br />
major differences that will determine which feature is the best for you.<br />
The main difference between the two features is that the pre-rendering feature takes a snapshot of the<br />
entire site each time it is run. Basic caching only caches on a page-by-page basis. If performance is your<br />
main issue, then pre-rendering might be the answer. If not, then basic caching might be a better option.<br />
Table 15. Basic caching versus a pre-rendered site delivered with a web server<br />
Pre-rendered site delivered with a<br />
Function<br />
Basic caching<br />
web server<br />
Performance: Very fast Extremely fast<br />
Connect tag processing: Yes No<br />
Custom caching: Yes No<br />
Memory requirements: Low to Medium Memory requirements depends on<br />
the web server being used.<br />
Disk requirements: Low to Medium Potentially very high as the entire<br />
site must be able to fit on disk.<br />
Unexpected broken links:<br />
Yes<br />
No<br />
As some pages may be cached at<br />
different times, there is a small<br />
chance that not all the links on a<br />
cached page will be currently valid.<br />
The site is pre-rendered in a single<br />
batch, greatly reducing the chances of<br />
inconsistencies in the site.<br />
Advanced caching versus a pre-rendered site delivered using <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
These options are very similar. You may have to test both strategies before deciding which is best for<br />
your site.<br />
Table 16. Advanced caching versus a pre-rendered site delivered using <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
Function<br />
Performance:<br />
Advanced caching<br />
Fast when cached, but slower if the<br />
requested page has expired from the<br />
cache. (As tag processing has a cost,<br />
this depends on how many connect<br />
tags a page contains.)<br />
Connect tag processing: Yes No<br />
Custom caching: Yes No<br />
Memory requirements: Medium to high. Medium to high.<br />
Disk requirements: Medium to high. Medium to high.<br />
Unexpected broken links:<br />
Yes<br />
No<br />
Pre-rendered site delivered through<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
Fast, but as tag processing has a cost,<br />
this depends on how many connect<br />
tags a page contains.<br />
As some pages may be cached at<br />
different times, there is a small<br />
chance that not all the links on a<br />
cached page will be currently valid.<br />
The site is pre-rendered in a single<br />
batch, greatly reducing the chances of<br />
inconsistencies in the site.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 67
Expiring strategies<br />
Like caching strategies, a server's default expiring strategies can be set in the WCM WCMConfigService<br />
service using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console. Custom expiring parameters<br />
can also be set in connect tags and URL requests to override a server's default expiring strategies.<br />
Note:<br />
If basic caching is used as your default web content cache, custom expiring cannot be used.<br />
In most cases the expiry schedule is based around how often the source content is updated. So, if the<br />
source content is updated hourly, then each cache would be expired hourly. If the source content is<br />
updated daily, then each cache would be expired daily.<br />
Beyond these examples, a different expiry schedule would be used. If your web pages were only updated<br />
weekly, or monthly, you would still schedule your caches to expire daily. Otherwise, when your source<br />
content was updated, it could take up to a week for it to appear on your site.<br />
Caching expiries versus workflow expiries<br />
The expires parameter in a workflow is not related to the Expires parameter in <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> caching. A page that is set to expire at midnight as part of a workflow will only do so if it has<br />
not already been saved in a cache. The page will remain in the cache until expired by the <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> application regardless of the Expires setting in a workflow.<br />
Related concepts:<br />
“Cache expire parameters” on page 460<br />
You use the "expires" parameter in <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags and URLs to specify how long to<br />
maintain data in the cache before it is expired. Once data expires from a cache, the next request for the<br />
data will be retrieved from the original server. The expires parameter is not mandatory.<br />
<strong>Web</strong> content cache configuration<br />
You can tailor the caching behavior of your web content environment by changing configuration settings<br />
such as the default cache type and expire settings.<br />
You define and manage web content cache options in the WCM WCMConfigService service using the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server administration console.<br />
Setting the default web content cache type<br />
The default web content caching environment for your web content server is specified by the following<br />
properties:<br />
v connect.businesslogic.defaultcache<br />
v connect.moduleconfig.ajpe.contentcache.defaultcontentcache<br />
Table 17. Caching parameters<br />
Parameter defaultcache value defaultcontentcache value<br />
No caching: false None<br />
Basic cache: true Not specified<br />
Site caching: false Site<br />
Session caching: false Session<br />
User caching: false User<br />
Secured caching: false Secured<br />
Personalized caching: false Personalized<br />
68 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Additional default web content cache parameters<br />
<strong>Web</strong> content cache configuration settings are specified by the following properties in the WCM<br />
WCMConfigService service.<br />
Table 18. Cache properties per cache type<br />
Cache Type<br />
Basic cache:<br />
Properties<br />
connect.businesslogic.defaultcacheexpires<br />
connect.businesslogic.defaultcache<br />
Advanced cache: All<br />
connect.moduleconfig.ajpe.contentcache.defaultcontentcache<br />
connect.moduleconfig.ajpe.contentcache.contentcacheexpires<br />
Advanced cache: Session<br />
cache only<br />
connect.sessioncacheconfig.memcachesize<br />
Table 19. Cache properties details<br />
Cache Property<br />
Details<br />
contentcacheexpires This sets the default expiry for all advanced caches. It can be either a relative period<br />
or an absolute date and time.<br />
defaultcache<br />
If true, basic caching is enabled. If false or missing, advanced caching is enabled.<br />
defaultcacheexpires This sets the default expiry for the basic cache. It can be either a relative period or an<br />
absolute date and time.<br />
defaultcontentcache If the advanced cache is enabled, the default advanced cache is set here.<br />
resourceserver.browserCacheMaxAge This is used to define the maximum time an item will be stored in a web browser<br />
cache.<br />
resourceserver.maxCacheObjectSize This is used to define the maximum size of objects that can be cached in kilobytes. By<br />
default this is set to 300.<br />
Cache expire time formats<br />
When setting the cache expire settings listed above, you can specify either a relative time, or absolute<br />
time:<br />
v REL {integer-value}{units}<br />
v ABS {date-format-string}<br />
{units} =<br />
v d|D for days<br />
v m|M for months<br />
v s|S for seconds<br />
v h|H for hours<br />
{date-format-string} =<br />
v Mon, 06 Nov 2000 09:00:00 GMT<br />
v Monday, 06-Nov-00 09:00:00 GMT<br />
v Mon Nov 6 09:00:00 2000<br />
v 6 Nov 2000 9:00 AM<br />
Note: The last two formats assume GMT.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 69
Examples:<br />
v contentcacheexpires="REL 300S"<br />
v contentcacheexpires="ABS Mon, 06 Nov 2000 09:00:00 GMT"<br />
Data cache configuration<br />
Data caching is used to cache data retrieved by the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application from external<br />
sources using connect tags or by requests made through URLs.<br />
You define and manage data cache options in the WCM WCMConfigService service using the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server administration console.<br />
Specify the following properties for data cache options:<br />
connect.connector.httpconnector.defaultcache<br />
Used when no cache is specified in a request for data. Possible values are true or false. Iftrue,<br />
the data will be stored in the site cache.<br />
connect.connector.httpconnector.defaultcacheexpires<br />
The expiry date/time for items added to a cache (site or session) if the expiry date/time is not<br />
specified in the request.<br />
connect.connector.sqlconnector.defaultcache<br />
Determines whether to cache data by default or not. Possible values are true or false.<br />
Configuring pre-rendering<br />
You can enable pre-rendering so that content can be viewed either through a <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
application or as a standalone site that is accessed through a web server.<br />
You define and manage pre-rendering options in the WCM WCMConfigService service using the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server administration console.<br />
Enabling pre-rendering for sites viewed using <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
This option is used when you are accessing the pre-rendered site through <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. This<br />
will increase performance as static content is accessed from the pre-rendered site, but dynamic content<br />
will still be rendered through <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
To enable users to access the pre-rendered site through a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application, specify the<br />
connect.businesslogic.module.default.class property in the WCM WCMConfigService service using the<br />
<strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console.<br />
v Property name: connect.businesslogic.module.default.class<br />
v Value: com.aptrix.cacher.CacherModule<br />
Note: You cannot use the local rendering portlet (<strong>Web</strong> <strong>Content</strong> Viewer) when pre-rendering is set as the<br />
default module.<br />
Enabling pre-rendering for standalone sites<br />
This option is used when you are using <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to generate a pre-rendered site, but are<br />
not using <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to view the pre-rendered site. You will need to use a web server to view<br />
the pre-rendered site.<br />
Specify the connect.businesslogic.module.cacher.class property in the WCM WCMConfigService service<br />
using the <strong>Web</strong>Sphere Application Server administration console.<br />
v Property name: connect.businesslogic.module.cacher.class<br />
v Value: com.aptrix.cacher.CacherModule<br />
70 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Specify the following properties to configure caching. Default values are listed, although you can tailor<br />
these values as needed. Unless you explicitly set a value for a property, the default value is used.<br />
connect.moduleconfig.cacher.destdir<br />
Value: ${USER_INSTALL_ROOT}/PortalServer/wcm/ilwwcm/cacher<br />
Base directory under which each site cache will be created. There will be one subdirectory created<br />
for each site.<br />
Important: If the prerenderer is run with the connect.moduleconfig.cacher.overwritecache<br />
property set to true, any files in the connect.moduleconfig.cacher.destdir path that were not<br />
written in the last run of the prerenderer will be deleted. For this reason, ensure that the<br />
connect.moduleconfig.cacher.destdir path is only used for storing rendered content and that it<br />
does not contain any other data that cannot be recreated.<br />
connect.moduleconfig.cacher.tempdir<br />
Value: ${USER_INSTALL_ROOT}/PortalServer/wcm/ilwwcm/cacher/temp<br />
The temporary directory that is required to build the site cache prior to moving the data over to<br />
the base directory specified by the connect.moduleconfig.cacher.destdir property.<br />
connect.moduleconfig.cacher.delay<br />
Value: 1<br />
This is used to set the time, in seconds, between requesting a page while caching.<br />
connect.moduleconfig.cacher.busydelay<br />
Value: 5<br />
This is used to set the time, in seconds, of the busy delay setting. This is used if executing within<br />
the busy start to busy end period. Otherwise the delay setting is used.<br />
connect.moduleconfig.cacher.busystart/connect.moduleconfig.cacher.busyend<br />
Value: 9:00 am/5:00 pm<br />
These settings determine the times between which the busy delay setting will be used. Enter an<br />
absolute time as shown.<br />
connect.moduleconfig.cacher.overwritecache<br />
true The prerenderer will overwrite files in the destdir cache directory (then delete unneeded<br />
files). This results in a progressive change in site content as seen by the user. This is the<br />
default value.<br />
false The first time a site is pre-rendered, the cached site files will be added to the destination<br />
directory. As changes are made to the site through the authoring portlet, the new version<br />
of the site will gradually be cached in the temporary directory and the old site will<br />
remain in the destination directory. After the cacher has finished caching the site<br />
completely, the contents of the temporary directory are moved to the destination directory<br />
which will then contain both old and new versions of the cached site.<br />
Note: A value of false should not be used if a web server is used to display the<br />
pre-rendered data because some web servers lock the data directories.<br />
connect.moduleconfig.cacher.rendereruser<br />
Value: Anonymous.<br />
This determines the user to be used to render the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content. Either type<br />
Anonymous or Administrator or a specific user or group name.<br />
The site is pre-rendered based on this user's security rights. If the user specified here does not<br />
have access to a particular component it will not be pre-rendered.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 71
connect.moduleconfig.cacher.task.cacherurl<br />
Value: http://${WCM_HOST}:${WCM_PORT}/${WCM_CONTEXT_ROOT}/connect/<br />
The full URL to be used as the replacement for the connect servlet in pre-rendered pages. The<br />
URL should end with the string specified in connect.moduleconfig.cacher.task.servletpath<br />
property if it is not blank. The context of cacherurl is used when generating a URL with<br />
pre-rendering. This property is not used when a page belongs to a site that has not already been<br />
pre-rendered at a site level by the scheduled task or through a SRV=cacheSite request.<br />
connect.moduleconfig.cacher.task.servletpath<br />
Value: /connect<br />
The path of the substituted connect servlet defined in the<br />
connect.moduleconfig.cacher.task.cacherurl property. This property can be left blank if the<br />
cacherurl context should be used unchanged.<br />
connect.moduleconfig.cacher.defaultcontentname<br />
Value: index.html<br />
This sets the name of the default or home file used when accessing the pre-rendered site. This<br />
normally would be index.html.<br />
connect.moduleconfig.cacher.task.siteareas<br />
Value: LibraryA/SiteAreaA,LibraryB/SiteAreaB,SiteAreaC<br />
The site areas within a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> environment to cache are entered here, separated<br />
by commas. This property provides the option of specifying the library in addition to the site<br />
area. If the library is specified, the pre-renderer looks for the site area in that library. If no library<br />
is specified, the default library is used, as specified in the defaultLibrary property.<br />
connect.moduleconfig.cacher.task.interval.recurrence<br />
connect.moduleconfig.cacher.task.interval.startdelay<br />
The CacherModule can be set to run after a recurring number of minutes.<br />
recurrence:<br />
Value: 10.<br />
The recurring period in minutes for a recurring task.<br />
startdelay:<br />
Value: 1<br />
The delay in minutes prior to starting the first recurring task.<br />
connect.moduleconfig.cacher.task.scheduled.times<br />
Value: 3:00 am<br />
Alternately, the CacherModule can be set to run at certain times. Enter a series of absolute times,<br />
separated by commas.<br />
Important: When specifying time values, be sure you conform to the format H:MM am|pm,<br />
including the use of the colon (:) character and the space. Incorrectly specified values prevent<br />
pre-rendering from functioning properly.<br />
Pre-rendering resources<br />
connect.moduleconfig.cacher.useTieredResourceFolders<br />
Value: false<br />
All resources, such as images and file resources, are stored under the following folder:<br />
CACHER_DIR\LIBRARY\SITEAREA\resources<br />
By default, each individual resource is saved under its own folder. For example, a resource with<br />
the ID of "7961d78049717f29bc57fee5670e9d7b" will be stored under this folder:<br />
72 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
CACHER_DIR\LIBRARY\SITEAREA\resources\7961d78049717f29bc57fee5670e9d7b<br />
You can change this behavior so that resources are stored under a tiered set of sub-folders based<br />
on the first two characters of the resource ID by changing the value of<br />
connect.moduleconfig.cacher.useTieredResourceFolders to true. For example, a resource with<br />
the ID of "7961d78049717f29bc57fee5670e9d7b" will be stored under this folder:<br />
CACHER_DIR\LIBRARY\SITEAREA\resources\7\9\<br />
All other resources that whose IDs begin with "79" will also be stored under this folder. This is<br />
done to reduce the number of sub-folders under the "resources" folders.<br />
Reserved authoring portlet<br />
When working with the JSR 286 web content viewer or <strong>Web</strong> content pages, some scenarios involve web<br />
content authoring tasks accomplished with authoring tools components. Such authoring tasks are<br />
performed through a special instance of the authoring portlet that is reserved specifically for these tasks<br />
and is installed on page that is hidden from the page navigation available to typical users.<br />
The following tasks use the reserved authoring portlet:<br />
v Selecting a web content folder when creating or editing the properties of a web content page.<br />
v Configuring the JSR 286 web content viewer, such as selecting the content item to display.<br />
v Performing inline editing using authoring tools components rendered in the JSR 286 web content<br />
viewer.<br />
Typically authoring tasks are performed in a separate window that opens from the current page, but you<br />
can configure the behavior of authoring tools components to redirect users to the hidden page containing<br />
the reserved authoring portlet.<br />
Ensuring the availability of the reserved authoring portlet<br />
If either the authoring portlet instance or the hidden portal page are not available or if the user lacks the<br />
permission to access either of them, the authoring tasks requiring the reserved authoring portlet will fail,<br />
causing web content pages and the JSR 286 web content viewer to be unusable. For this reason, you must<br />
be careful when administering the reserved authoring portlet and the hidden portal page.<br />
The following conditions are essential for the proper function of the reserved authoring portlet:<br />
v Users performing any of the authoring tasks described above must have the User role on the hidden<br />
portal page.<br />
v Users performing any of the authoring tasks described above must have the User role on the reserved<br />
authoring portlet.<br />
v The reserved authoring portlet must be the only portlet located on the hidden portal page.<br />
v The unique name of the hidden portal page must be com.ibm.wps.hiddenpage.wcm.Authoring_Portlet.<br />
v The unique name of the portlet window of the authoring portlet instance on the hidden portal page<br />
must be com.ibm.wps.hiddenpage.wcm.control.Authoring_Portlet.<br />
Availability problems related to the reserved authoring portlet or the hidden portal page are usually<br />
identified by the following symptoms:<br />
v The SystemOut.log file for the portal server contains error messages referencing the authoring portlet<br />
or hidden page. For example:<br />
EJPDB0124E: The specified string [com.ibm.wps.hiddenpage.wcm.Authoring_Portlet] can<br />
neither be deserialized as an object ID nor resolved as a unique name.<br />
EJPDB0124E: The specified string [com.ibm.wps.hiddenpage.wcm.control.Authoring_Portlet]<br />
can neither be deserialized as an object ID nor resolved as a unique name.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 73
v When a separate window is launched from the current page to perform the authoring task, the new<br />
window displays the following message:<br />
Error 400: EJPPH0006E: The resolution of a URI failed. Refer to the stack trace for more<br />
detailed information.<br />
v When a separate window is launched from the current page to perform the authoring task, the new<br />
window is empty.<br />
v When the user is redirected to another portal page to perform the authoring task, the user is redirected<br />
to the default portal page instead of the page containing the reserved portlet.<br />
v When the user is redirected to another portal page to perform the authoring task, the user is redirected<br />
to an empty page.<br />
If any of these problems occur, verify that the conditions for proper operation of the reserved authoring<br />
portlet and hidden portlet page are fully implemented.<br />
Note: If the reserved authoring portlet or the hidden portlet page are removed inadvertently, you can<br />
deploy them again using the action-install-wcm-hidden-authoring configuration task.<br />
Configuring the reserved authoring portlet<br />
The reserved authoring portlet is essential to the proper operation of web content pages and the JSR 286<br />
web content viewer, so it is important that the configuration of the reserved authoring portlet reflect<br />
similar settings for performing authoring tasks as the configuration of other instances of the <strong>IBM</strong> <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> authoring portlet.<br />
1. Log in to the portal as an administrator.<br />
2. Click Administration in the tool bar.<br />
3. Under Portal User Interface in the navigation tree, click Manage Pages.<br />
4. Search for the page with the unique name of com.ibm.wps.hiddenpage.wcm.Authoring_Portlet.<br />
5. Click the Edit Page Layout icon (small pencil) for the page.<br />
6. Select Edit shared settings from the portlet menu, and specify any settings for the reserved authoring<br />
portlet. The available settings and the process for updating them is the same for the reserved<br />
authoring portlet as it is for any other instance of the authoring portlet.<br />
Note: Changes made to the reserved authoring portlet with the Edit shared settings mode affect only<br />
the reserved authoring portlet and no other instances of the authoring portlet. To ensure a consistent<br />
authoring experience, you can make the same changes to other authoring portlet instances using the<br />
Edit shared settings mode for each instance. Alternatively, you could make the same changes to every<br />
instance of the authoring portlet by using the Configure mode from a single instance. Changes you<br />
make in the Configure mode also affect the reserved authoring portlet.<br />
7. Save your changes.<br />
74 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related concepts:<br />
“Controlling the behavior of authoring tools components” on page 223<br />
Authoring tools components rendered in a JSR 286 web content viewer enable you to create, read, edit,<br />
delete, approve, or reject content items directly in the web content viewer, instead of requiring you to<br />
navigate to the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> authoring portlet to perform the same action. While the<br />
traditional web content viewer launches authoring actions in its portlet window, the JSR 286 <strong>Web</strong> content<br />
viewer either launches a pop-up window that opens from the current page or redirects the user to<br />
another portal page that contains the authoring portlet.<br />
Related reference:<br />
“Defining authoring tools” on page 294<br />
You can format an authoring tool element's look and feel in different ways, including displaying<br />
authoring tools as text-based links, or image based links.<br />
Additional configuration options<br />
These configuration options are available to address installation requirements for additional deployment<br />
scenarios.<br />
Controlling access to hosts specified in a URL<br />
By default, you can specify any host name in a URL used to retrieve content. However, you can restrict<br />
access to a specified list of host names by modifying the configuration of the WCM WCMConfigService<br />
service.<br />
1. Log in to the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console.<br />
2. Click Resources > Resource Environment > Resource Environment Providers > WCM<br />
WCMConfigService > Custom properties.<br />
Cluster note: If you are using this web content server as part of a cluster, ensure that you use the<br />
administration console for the deployment manager when manipulating configuration properties.<br />
3. Update the configuration to block access from unknown hosts. Specify the following property:<br />
v Property name: connect.connector.httpconnector.denyunknownhosts<br />
v Value: true<br />
4. For each host name for which you want to grant access, add a new property. Use the following format<br />
for new properties:<br />
v Property name: connect.connector.httpconnector.hosts.host_name, where host_name is the fully<br />
qualified host name of the server for which you want to permit access. For example:<br />
connect.connector.httpconnector.hosts.www.example.com<br />
v Value: true or false<br />
5. Optional: Specify a default cache expiration value for the host name you added by adding a new<br />
property. Use the following format for new properties:<br />
v Property name: connect.connector.httpconnector.hosts.host_name.defaultcacheexpires, where<br />
host_name is the fully qualified host name of the server for which you want to permit access. For<br />
example: connect.connector.httpconnector.hosts.www.example.com.defaultcacheexpires<br />
v Value: expiration_time. For example: REL 9000s<br />
6. Optional: Specify a default cache setting for the host name you added by adding a new property. Use<br />
the following format for new properties:<br />
v Property name: connect.connector.httpconnector.hosts.host_name.defaultcache, where<br />
host_name is the fully qualified host name of the server for which you want to permit access. For<br />
example: connect.connector.httpconnector.hosts.www.example.com.defaultcacheexpires<br />
v Value: true or false<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 75
Related concepts:<br />
“Cache expire parameters” on page 460<br />
You use the "expires" parameter in <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags and URLs to specify how long to<br />
maintain data in the cache before it is expired. Once data expires from a cache, the next request for the<br />
data will be retrieved from the original server. The expires parameter is not mandatory.<br />
<strong>Web</strong> content substitution variables<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> uses several substitution variables defined in the configuration for <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server.<br />
If you need to modify these variables, use the administrative console for the application server. If you are<br />
working with a managed cell or cluster, use the administrative console for the deployment manager<br />
when making changes.<br />
Table 20. <strong>Web</strong> content substitution variables<br />
Variable<br />
WCM_CONTEXT_ROOT<br />
Description<br />
The context root for the enterprise application for <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong>.<br />
Example: wps/wcm<br />
WCM_HOST<br />
The fully qualified host name of the machine running the<br />
portal.<br />
Example: www.example.com<br />
WCM_ILWWCM_HOME<br />
This is the directory where the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
application is installed<br />
Example: PortalServer_root/wcm<br />
WCM_PORT<br />
The port number used to access the portal.<br />
Example: 10038<br />
WCM_SCHEMA<br />
The database schema name of the JCR domain<br />
configured for use with <strong>IBM</strong> <strong>Web</strong>Sphere Portal.<br />
Example: jcr<br />
WCM_SEARCHSEED_CONTEXT_ROOT<br />
The context root for the Search Seed portlet.<br />
Example: wps/wcmsearchseed<br />
WCM_WEB_APP_HOME<br />
The directory path where the ilwwcm.war file is located.<br />
Example: was_profile_root/wp_profile/installedApps/<br />
node_name/wcm.ear/ilwwcm.war<br />
WCM_WPS_CONTEXT_ROOT<br />
The context root or base URI for the portal. All URLs<br />
beginning with this path will be reserved for the portal.<br />
Example: wps<br />
http://hostname.example.com:10038/wps/portal<br />
WCM_WPS_DEFAULT_HOME<br />
The default portal page. This is the page for users who<br />
are not logged in.<br />
Example: portal<br />
http://hostname.example.com:10038/wps/portal<br />
76 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 20. <strong>Web</strong> content substitution variables (continued)<br />
Variable<br />
WCM_WPS_PERSONALIZED_HOME<br />
Description<br />
The portal page for users who have already logged in to<br />
the portal. This page cannot be accessed by anonymous<br />
users.<br />
Example: myportal<br />
http://hostname.example.com:10038/wps/myportal<br />
Resetting the web content event log<br />
From time to time you may need to reset the web content event log. The event log can be reset only on a<br />
syndicator server. Any changes made by resetting the event log are then syndicated to its corresponding<br />
subscribers. In most cases you reset the event log on the server you have imported or migrated data onto,<br />
or on a syndicator to troubleshoot syndication problems in a syndication relationship.<br />
You must first enable the reset event log module by adding the following parameters to the WCM<br />
WCMConfigService service using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console:<br />
v<br />
connect.businesslogic.module.reseteventlog.class=com.ibm.workplace.wcm.services.eventlog.ResetEventLogModule<br />
v connect.businesslogic.module.reseteventlog.remoteaccess=true<br />
v connect.businesslogic.module.reseteventlog.autoload=false<br />
You should reset the web content event log under these circumstances:<br />
v The contents of the repository have been modified through an external mechanism such as a JCR<br />
import or some other custom application.<br />
v As a post migration step during migration prior to syndication.<br />
v In order to troubleshoot syndication problems such as items on the syndicator not being sent.<br />
Note:<br />
v Before resetting the web content event log you should edit the wkplc_dbtype.properties file and ensure<br />
the DbSafeMode property is set to false. This is located under wp_profile_root/ConfigEngine/<br />
properties<br />
v In clustered environments, you should only reset the event log on the primary node.<br />
v Any objects that were "purged" on the syndicator since the last syndication will not be purged on the<br />
subscriber. Purged objects are lost since the event log does not maintain records of objects that were<br />
deleted. To clean up purged items on a subscriber, you will need to go the subscriber and manually<br />
delete them.<br />
1. Open a command prompt.<br />
2. Run the run-wcm-admin-task-reset-event-log task from the wp_profile_root/ConfigEngine directory.<br />
Windows<br />
ConfigEngine.bat run-wcm-admin-task-reset-event-log -Dlibrary=library_name -Dfix=true<br />
UNIX ./ConfigEngine.sh run-wcm-admin-task-reset-event-log -Dlibrary=library_name<br />
-Dfix=true<br />
i ConfigEngine.sh run-wcm-admin-task-reset-event-log -Dlibrary=library_name -Dfix=true<br />
Note: If -Dfix=true is omitted, then the task will run in report-mode only.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 77
Related tasks:<br />
“Exporting and importing a web content library” on page 568<br />
You can export the contents of a web content library to disk and import this data into another web<br />
content server. This feature enables you to make a backup copy of a web content library, and can also be<br />
used to move data between servers. This function cannot be used to send updates, deletes and moves. It<br />
is only suitable for populating new items.<br />
Enabling connect tags<br />
Enable connect tags to reference web content components and apply customized caching to the<br />
components.<br />
1. Log in to the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console.<br />
2. Click Resources > Resource Environment > Resource Environment Providers > WCM<br />
WCMConfigService > Custom properties.<br />
Cluster note: If you are using this <strong>Web</strong> content server as part of a cluster, ensure that you use the<br />
administration console for the deployment manager when manipulating configuration properties.<br />
3. Specify connect.businesslogic properties to process connect tags from any host or from specific<br />
hosts.<br />
Process connect tags from any host<br />
Add the following property:<br />
v Property name: connect.businesslogic.processunknownhosts<br />
v Value: true<br />
Process connect tags from specific hosts<br />
Add the following property:<br />
v Property name: connect.businesslogic.processunknownhosts<br />
v Value: false<br />
For each host for which you want to enable processing, add a new property:<br />
v Property name: connect.businesslogic.hosts.hostname<br />
v Value: true<br />
4. Restart the server or cluster.<br />
Remove authoring configuration task<br />
The remove authoring configuration task will uninstall the authoring portlet and related portal pages.<br />
Running the configuration task:<br />
To remove the Authoring portlet:<br />
1. Stop the server.<br />
2. Open a command prompt.<br />
3. Run the remove-wcm-authoring task from the wp_profile_root/ConfigEngine directory.<br />
Windows<br />
ConfigEngine.bat remove-wcm-authoring -DWasPassword=password<br />
UNIX ./ConfigEngine.sh remove-wcm-authoring -DWasPassword=password<br />
i ConfigEngine.sh remove-wcm-authoring -DWasPassword=password<br />
Enabling email<br />
To use the email workflow action you must configure <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to use your SMTP server.<br />
1. Log in to the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console.<br />
78 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
2. Click Resources > Resource Environment > Resource Environment Providers > WCM<br />
WCMConfigService > Custom properties.<br />
Cluster note: If you are using this <strong>Web</strong> content server as part of a cluster, ensure that you use the<br />
administration console for the deployment manager when manipulating configuration properties.<br />
3. Specify connect.connector.mailconnect properties to use your SMTP server. Add the following<br />
properties:<br />
Default SMTP server<br />
v Property name: connect.connector.mailconnector.defaultsmtpserver<br />
v Value: mail.yourmailserver.com<br />
Default email address for "from" field<br />
v Property name: connect.connector.mailconnector.defaultfromaddress<br />
v Value: admin@yourmailserver.com<br />
Default email address for "reply-to" field<br />
v Property name: connect.connector.mailconnector.defaultreplytoaddress<br />
v Value: admin@yourmailserver.com<br />
4. If you use a secured SMTP server, you will also need to specify a user name and password to access<br />
the SMTP server: Add the following properties:<br />
Default user name<br />
v Property name: connect.connector.mailconnector.defaultusername<br />
v Value: username<br />
Default password<br />
v Property name: connect.connector.mailconnector.defaultpassword<br />
v Value: password<br />
5. Save your changes.<br />
6. Restart the portal for the new settings to take effect.<br />
Configuring syndication<br />
Syndication is used to synchronize web content between servers. You can configure when syndication is<br />
run, and how often it is run.<br />
Related concepts:<br />
“Syndication concepts” on page 540<br />
Syndication is used to synchronize web content data between a web content library on one server to a<br />
web content library on another server.<br />
“Working with syndicators and subscribers” on page 549<br />
Syndication is used to transport data from one instance of <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to another.<br />
Syndication properties<br />
You can tailor the syndication behavior of your web content environment by changing configuration<br />
settings such as the syndication interval and automatic syndication.<br />
You define and manage syndication options in the WCM WCMConfigService service using the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server administration console.<br />
Changing the syndication interval<br />
Although the frequency of syndication is set by default during installation, you can change the<br />
syndication interval to better suit the needs of your environment.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 79
For example, you might shorten the interval in an active authoring environment where users must<br />
collaborate heavily and rely on timely replication. Similarly you might lengthen the interval to avoid<br />
excessive replication of data that does not change often.<br />
Note: The syndication interval applies to all syndication operations and cannot be specified separately<br />
for different syndicator-subscriber pairs.<br />
To change the syndication interval, modify the deployment.itemChangedTaskDelay property. By default,<br />
the syndication interval is set to 30 seconds. Specify the number of seconds to use as the syndication<br />
interval, with a minimum of 0 seconds and a maximum of 65536 seconds. A value of 0 will prevent<br />
syndication from occurring. If you set the value to so short an interval that syndication cannot complete<br />
before the interval expires, syndication begins again when the previous syndication completes.<br />
Disabling automatic syndication<br />
In some cases you might choose to rely only on manual syndication to have complete control over when<br />
syndication occurs. To do this, you must disable automatic syndication. When automatic syndication is<br />
disabled, the syndication interval setting is ignored. This property should be set to the same value on<br />
both the syndicator and the subscriber.<br />
To disable automatic syndication, specify the following property:<br />
v Property name: connect.moduleconfig.syndication.inittasks<br />
v Value: false<br />
Configuring a subscriber-only server<br />
A syndicator server uses several processes to gather and queue content for syndication. These processes<br />
can sometimes impact server performance when run. However, a subscriber-only server does not require<br />
these processes, so you can improve performance on the subscriber-only server by disabling the<br />
processes.<br />
To do this, ensure that deployment.subscriberOnly property is set to true.<br />
Enabling secure syndication using SSL<br />
In order to enable and use SSL for syndication, the following properties must be changed in the WCM<br />
WCMConfigService to use the "https" protocol and the appropriate port.<br />
v deployment.itemDispatcherUrl<br />
v deployment.syndicatorUrl<br />
v deployment.subscriberUrl<br />
v<br />
Disabling automatic syndication<br />
In some cases you might choose to rely only on manual syndication to have complete control over when<br />
syndication occurs. To do this, you must disable automatic syndication.<br />
When automatic syndication is disabled, the syndication interval setting is ignored. You only change this<br />
setting on the syndicator server.<br />
1. To disable automatic syndication, log in to the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration<br />
console.<br />
2. Click Resources > Resource Environment > Resource Environment Providers > WCM<br />
WCMConfigService > Custom properties.<br />
80 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Cluster note: If you are using this web content server as part of a cluster, ensure that you use the<br />
administration console for the deployment manager when manipulating configuration properties.<br />
3. Specify the connect.moduleconfig.syndication.inittasks property.<br />
v Property name: connect.moduleconfig.syndication.inittasks<br />
v Value: false<br />
4. Save the changes.<br />
Changing the syndication interval<br />
Although the frequency of syndication is set by default during installation, you can change the<br />
syndication interval to better suit the needs of your environment.<br />
For example, you might shorten the interval in an active authoring environment where users must<br />
collaborate heavily and rely on timely replication. Similarly you might lengthen the interval to avoid<br />
excessive replication of data that does not change often.<br />
Note: The syndication interval applies to all syndication operations and cannot be specified separately<br />
for different syndicator-subscriber pairs.<br />
1. Log in to the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console.<br />
2. Click Resources > Resource Environment > Resource Environment Providers > WCM<br />
WCMConfigService > Custom properties.<br />
Cluster note: If you are using this web content server as part of a cluster, ensure that you use the<br />
administration console for the deployment manager when manipulating configuration properties.<br />
3. Change the value of the deployment.itemChangedTaskDelay property. By default, the syndication<br />
interval is set to 30 seconds.<br />
Specify the number of seconds to use as the syndication interval, with a minimum of 0 seconds and a<br />
maximum of 65536 seconds. A value of 0 will prevent syndication from occurring. If you set the value<br />
to so short an interval that syndication cannot complete before the interval expires, syndication begins<br />
again when the previous syndication completes.<br />
4. Save the changes.<br />
Enabling search for web content<br />
You use Portal Search to search for text displayed in web sites created by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Indexing web content<br />
In order to search for web content, your content must first be indexed by the <strong>Web</strong>Sphere Portal search<br />
engine. Once the content has been indexed, you can run searches using the search center or using a<br />
search component.<br />
Creating a content source for a site area<br />
The <strong>Web</strong>Sphere Portal search engine defines content sources that index your web content. All the child<br />
site areas and content items of the selected site area will be included in the index. Related content sources<br />
are grouped together in a search collection.<br />
1. Go to Administration > Search Administration > Manage Search.<br />
2. Select or create a new collection. The default search collection named <strong>Web</strong><strong>Content</strong>Collection is<br />
provided by default.<br />
3. Click New <strong>Content</strong> Source.<br />
4. Select WCM site as the content source type.<br />
5. Enter a name in the <strong>Content</strong> Source Name field.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 81
6. Enter the following URL in the Collect documents linked from this URL field:<br />
For a stand-alone server:<br />
http://hostname:port_number/seedlist/myserverSeedlistId=library/sitearea1/childsitearea2<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory&Action=GetDocuments<br />
You will need to replace hostname, port_number, library and site area with values<br />
appropriate for your site. If your library name or site area names contain spaces, you will<br />
need to replace the spaces with a "+" symbol. For example, the path library one/site area<br />
one would be instead be defined as library+one/site+area+one<br />
For a cluster:<br />
In this case you to use the host and port of the HTTP server:<br />
http://httpserver:port_number/seedlist/myserverSeedlistId=library/sitearea1/childsitearea2<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory&Action=GetDocuments<br />
You will need to replace httpserver, port_number, library and site area with values<br />
appropriate for your site. If your library name or site area names contain spaces, you will<br />
need to replace the spaces with a "+" symbol. For example, the path library one/site area<br />
one would be instead be defined as library+one/site+area+one<br />
For a virtual portal configured to use the URL Context as its access point:<br />
http://httpserver:port_number/seedlist/myserver/virtualPortalContextSeedlistId=library/sitearea1/childsitearea2<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory&Action=GetDocuments<br />
You will need to replace httpserver, port_number, virtualPortalContext, library and site<br />
area with values appropriate for your site. If your library name or site area names contain<br />
spaces, you will need to replace the spaces with a "+" symbol. For example, the path library<br />
one/site area one would be instead be defined as library+one/site+area+one<br />
For a virtual portal configured to use a different hostname as its access point:<br />
http://vphostname:port_number/seedlist/myserver/SeedlistId=library/sitearea1/childsitearea2<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory&Action=GetDocuments<br />
You will need to replace vphostname, port_number, library and site area with values<br />
appropriate for your site. If your library name or site area names contain spaces, you will<br />
need to replace the spaces with a "+" symbol. For example, the path library one/site area<br />
one would be instead be defined as library+one/site+area+one<br />
Note: The seedlist ID can be any of the following:<br />
v library<br />
v library/site area<br />
v library/site area/sub-site area/...<br />
v the JCRID of a site area<br />
7. If the content to be indexed is secured, go to the Security tab and enter the user name and password<br />
of the user that will be used to access the secured site. You must then click Create on the search tab<br />
itself.<br />
8. If your site uses remote actions, you will need to filter these out of your search index. Go to the Filter<br />
tab:<br />
a. Type a name in the Rule Name field<br />
b. Select Apply rule while Collecting documents<br />
c. Select the rule type of Exclude<br />
d. Select the rule basis of URL text<br />
e. Type *&wcmAuthoringAction=* in the URL text field<br />
f. Click Create in the Filter tab<br />
82 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
9. Click Create.<br />
If you have multiple parent site areas and want your searches to run across all site areas, you can create a<br />
content source for each of them in the same collection. If you don't want your searches to run across all<br />
parent site areas, create a separate collection for each parent site area or group of related parent site areas.<br />
Searching web content in a virtual portal<br />
Search services and search collections are separate for individual virtual portals and are not shared<br />
between individual virtual portals. You set up an individual search service and separate search collections<br />
for each virtual portal. These collections can be used to crawl and search the same set of documents.<br />
If you are using a website that is shared across virtual portals, then to search that website in a virtual<br />
portal environment you must:<br />
1. Create a new search collection for the virtual portal. You can create a new content source by copying<br />
the URL from your original search collection.<br />
2. Create a new search component, or copy an existing search component, and configure it to use the<br />
new virtual portal search collection created in step 1.<br />
3. Create a new search form, using an HTML component, configured to use the search component<br />
created in step 2.<br />
4. Create a new content item to display the HTML component created in step 3.<br />
You must perform these steps for each virtual portal in your system.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> search options<br />
You can edit the following search options to manage how the search service works with <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> search forms<br />
1. Edit the SearchService.properties file.<br />
File location:<br />
Windows<br />
wp_profile_root/PortalServer/wcm/shared/app/config/wcmservices<br />
UNIX wp_profile_root/PortalServer/wcm/shared/app/config/wcmservices<br />
i wp_profile_root/PortalServer/wcm/shared/app/config/wcmservices<br />
2. Specify values for the search parameters.<br />
Table 21. Parameters for the search service in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Parameter<br />
SearchService.DateFormatString<br />
SearchService.RecrawlInterval<br />
SearchService.BrokenLinksExpirationAge<br />
Details<br />
This is used to set the date format when entering dates<br />
in search forms and for displaying search results. Enter a<br />
supported Java date format string. If this property is not<br />
set, then the default format is MMM dd yyyy HH:mm:ss z.<br />
This is the "recrawl interval" in hours.<br />
This is the default "Broken links expiration age" in days.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 83
Table 21. Parameters for the search service in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. (continued)<br />
Parameter<br />
SearchService.MetaFields<br />
Details<br />
This is used to specify additional elements to crawl when<br />
searching for Metadata.<br />
The format for this parameter value is: elementName,key1<br />
To specify more than one Metadata field maps, use the<br />
following format:<br />
elementName1,key1;elementName2,key2;elementName3,key3<br />
For example, to crawl for Metadata in a text element<br />
named metaText:<br />
v SearchService.MetaFields=metaText,meta<br />
v<br />
v<br />
elementName is the name of element you would like to<br />
search for Metadata. Any valid element with that<br />
name in a searchable site area or content item will be<br />
crawled.<br />
key is the "key" that is specified in an element tag used<br />
as part of a search element design. In the example<br />
above, the key of "meta" has been used. To render the<br />
content of the metaText element in a search element<br />
design, you would use the following tag: <br />
SearchService.SearchSeed.ExcludeFileAttachments=false<br />
Note:<br />
v Only text elements and short text elements can be<br />
searched.<br />
v Only site areas that have been configured to be<br />
searchable will be crawled.<br />
Set this to "true" to prevent file resource component<br />
attachments from being included in the search results.<br />
If set to false, the files stored in file resource elements in<br />
content items can also be searched. Files stored in file<br />
resource elements in a site area can also be searched so<br />
long as a default content item has been selected.<br />
3. Save the SearchService.properties file.<br />
4. Restart the portal for the new settings to take effect.<br />
Configuring the Search and Browse portlet to search for web content<br />
You can use the Search and Browse portlet to search for web content by adding a web content search<br />
collection to the configuration of a new Search and Browse portlet.<br />
1. Go to Administration > Portlet Management > Portlets.<br />
2. Make a copy of the Search and Browse portlet.<br />
3. Open the configuration view of the new portlet.<br />
4. Edit the Collection Location parameter and enter the path to your web content search collection.<br />
Tip: The path to the collection can be obtained by copying the "Search collection location" from the<br />
"Search collection status information" of your web content search collection.<br />
5. Save the configuration changes to the portlet.<br />
84 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Configuring Search Center to search for web content<br />
You can use the Search Center to search for web content by adding a web content search collection to the<br />
Search Center.<br />
1. Go to Administration –> Search Administration –> Manage Search –>Search Scopes.<br />
2. Click New Scope.<br />
3. Click Select Locations and select your web content search collection.<br />
4. Complete the search scope and click OK.<br />
Crawling web content with search seedlists<br />
Portal Search supports the use of seedlists to make crawling websites and their metadata more efficient<br />
and to provide content owners fine-grained control over how content and metadata are crawled. You can<br />
configure the portal to use seedlist support when crawling content generated with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>.<br />
By default Portal Search is configured to use seedlist format 1.0 when indexing content for search<br />
collections. When used with web content, seedlist format 1.0 makes it possible to use the web content<br />
page type to render content found in the search results on the corresponding web content page. You can<br />
also include custom metadata fields from a web content item that will appear in the search seedlist but<br />
not in the HTML source.<br />
Search seedlist 1.0 can make access control information available in a way that makes pre-filtering of<br />
contents possible. Pre-filtering provides the fastest filtering approach because it takes place in the search<br />
index level. An additional advantage of pre-filtering is that remote secured content sources can be<br />
searched from the portal. The filtering mode is defined as part of the search service configuration<br />
parameters.<br />
Note: Support for generic seedlist 1.0 crawling is only available with <strong>IBM</strong> Omnifind Enterprise Edition<br />
Version 9.1 and later.<br />
Using the search seedlist 1.0 format<br />
As of version 6.1.5, Portal Search is configured to support the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> search seedlist<br />
1.0 format by default. Versions before 6.1.5 use <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> search seedlist format 0.9.<br />
Search seedlist 1.0 provides several features:<br />
v You can use the web content page type to render content found in the search results on the<br />
corresponding web content page.<br />
v You can include custom metadata fields from a web content item that appear in the search seedlist but<br />
not in the HTML source.<br />
v You can search within a specific library or site area, across all web content libraries, or across a list of<br />
libraries.<br />
v You can perform incremental crawling of libraries for faster seedlist processing. With incremental<br />
crawling, when a crawl requests new items, only items that have been added, changed, or deleted<br />
since the previous crawl are retrieved.<br />
Important:<br />
v The syntax of the seedlist URL has changed with seedlist format 1.0. Older search collections created<br />
using seedlist format 0.9 cannot be reused or migrated to the new format. Be sure that you index all<br />
your content again after updating the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> seedlist format from 0.9 to 1.0.<br />
v Search seedlist 1.0 uses the POC (piece of content) service to derive URLs to content. These URLs can<br />
be processed only by the JSR 286 web content viewer. Because of this support, the traditional web<br />
content viewer, based on the <strong>IBM</strong> Portlet API, is not supported when using search seedlist 1.0.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 85
Search seedlist 1.0 can make access control information available in a way that makes pre-filtering of<br />
contents possible. Pre-filtering provides the fastest filtering approach because it takes place in the search<br />
index level. An additional advantage of pre-filtering is that remote secured content sources can be<br />
searched from the portal. The filtering mode is defined as part of the search service configuration<br />
parameters.<br />
Enabling support for search seedlist 1.0:<br />
If you want to use Portal Search to crawl your web content and leverage features like web content pages<br />
you must enable seedlist 1.0 support for the Portal Search crawler.<br />
1. Log in to the portal as an administrator.<br />
2. Click Administration in the tool bar.<br />
3. Create a new search collection.<br />
a. Click Manage Search > Search Collections.<br />
b. Create a new search collection for your web content. Be sure that the new search collection uses<br />
the portal search service edited in the previous steps.<br />
4. Add the following custom properties to the WP ConfigService resource environment using the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server administration console:<br />
a. wcm.config.seedlist.version=1.0<br />
b. wcm.config.seedlist.servletpath=/seedlist<br />
c. wcm.config.seedlist.metakeys=, This is an optional step and is only<br />
required if you want to specify your own metadata.<br />
Using the custom metadata field search support:<br />
With the search seedlist 1.0 support, custom metadata fields specified on content items are added to the<br />
search seedlist as metadata information, without requiring the metadata to appear in the HTML source<br />
for the content items.<br />
1. Log in to the <strong>Web</strong>Sphere Application Server administrative console.<br />
2. Click Resources > Resource Environment > Resource Environment Providers.<br />
3. Click WP ConfigService.<br />
4. Under Additional Properties, click Custom Properties.<br />
5. Click New, and enter the property name wcm.config.seedlist.metakeys , and set the string value to<br />
a comma-delimited list of your own metadata (for example, ).<br />
Add the names of the text element from your content that should be included in the search results to<br />
the wcm.config.seedlist.metakeys property. If you want to add more than one text element, separate<br />
them with commas. The name of the text element on your content item that should be included in the<br />
search seedlist must match the name configured for this configuration key.<br />
For example, set wcm.config.seedlist.metakeys=language,region in the WP ConfigService resource<br />
environment provider, and add a <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> text component as an element with the<br />
name language to a content item or authoring template. In your content item you can enter the value<br />
german into the text component for the language. After saving the content item, the search crawler will<br />
add the value german into a metadata field called language within the search seedlist. Then you can<br />
filter the search results based on your metadata information.<br />
6. Click OK, and save the changes to the master configuration.<br />
7. Restart the portal.<br />
Seedlist 1.0 REST service API:<br />
The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API for retrieving application content through a seedlist is based on the<br />
REST architecture style. To obtain seedlist content, third party crawlers or administrator applications need<br />
to construct and send only HTTP requests to the application servlet.<br />
86 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
All REST API requests are synchronous calls. The order of the parameters in the requests does not matter.<br />
The parameter names are case-sensitive and must be entered in the format described here. An HTTP error<br />
response (for example, status code 404) is generated in the following situations:<br />
v An unknown or unsupported parameter is submitted as part of the request.<br />
v <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> cannot resolve the site area path or ID.<br />
v <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> cannot find any items.<br />
v The search seedlist enterprise application (Seedlist_Servlet) is not running.<br />
The request is a standard HTTP GET command. The URL is formed by combining the seedlist servlet<br />
host name, port number, and path, followed by a collection of input parameters separated by ampersand<br />
(&) characters. The input parameters are entered as name-value pairs.<br />
For example:<br />
http://host_name:port_number/seedlist/myserverSeedlistId=library_list&Source=com.ibm.workplace.wcm.plugins.seedlist.retr<br />
library_list<br />
One or more web content libraries, separated by commas. If no value is specified, all libraries are<br />
used.<br />
action The action to perform on the request. The following actions are available:<br />
GetDocuments<br />
Retrieves a list of content items with their associated information.<br />
number_of_entries<br />
For each seedlist page that is returned, this value specifies the number of entries in the list of<br />
content items. If no value is specified, 100 items are returned.<br />
Examples<br />
In these examples, replace the following variables with values that are appropriate for your environment:<br />
v host_name<br />
v virtual_portal_host_name<br />
v http_server<br />
v port_number<br />
v library<br />
v site_area<br />
v site_area_id<br />
For the SeedlistId parameter, you can specify the value in the following formats:<br />
v No value<br />
v A specific library (for example, library1)<br />
v A specific site area (for example, site_area1)<br />
v A list of libraries, separated by commas (for example, library1,library2,library3)<br />
v The JCRID of a site area<br />
Retrieve a maximum of 100 items from a stand-alone server using the path to the site area<br />
http://host_name:port_number/seedlist/myserverSeedlistId=library/site_area<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory<br />
&Action=GetDocuments<br />
Retrieve a maximum of 200 items from a stand-alone server using the ID of the site area<br />
http://host_name:port_number/seedlist/myserverSeedlistId=site_area_id<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory<br />
&Action=GetDocuments&Range=200<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 87
Retrieve a maximum of 100 items from a specific library<br />
http://host_name:port_number/seedlist/myserverSeedlistId=library<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory<br />
&Action=GetDocuments<br />
Retrieve a maximum of 100 items from all libraries<br />
Note: To use all libraries, leave SeedlistId value empty.<br />
http://host_name:port_number/seedlist/myserverSeedlistId=<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory<br />
&Action=GetDocuments<br />
Retrieve a maximum of 100 items from a specified list of libraries<br />
http://host_name:port_number/seedlist/myserverSeedlistId=library1,library2<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory<br />
&Action=GetDocuments<br />
Retrieve a maximum of 100 items from a cluster<br />
Note: When referencing a cluster, specify the request with the host name and port number of the<br />
HTTP server.<br />
http://http_server:port_number/seedlist/myserverSeedlistId=library/site_area<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory<br />
&Action=GetDocuments<br />
Retrieve a maximum of 100 items from a virtual portal configured to use the URL context as the access<br />
point http://http_server:port_number/seedlist/myserver/<br />
virtual_portal_contextSeedlistId=library/site_area<br />
&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory<br />
&Action=GetDocuments<br />
Retrieve a maximum of 100 items from a virtual portal configured to use a different host name as the<br />
access point<br />
http://virtual_portal_host_name:port_number/seedlist/myserverSeedlistId=library/<br />
site_area&Source=com.ibm.workplace.wcm.plugins.seedlist.retriever.WCMRetrieverFactory<br />
&Action=GetDocuments<br />
Important: You can access the REST API for the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> search seedlist 1.0 with a secured<br />
connection (HTTPS) or with an unsecured connection (HTTP). Depending on the method, ensure that you<br />
use the correct port. However, if you access this REST API with an unsecured connection, you are<br />
automatically redirected to a secured connection.<br />
Parameter Default Value Description<br />
SeedlistID No default; must be specified. Identifies the seedlist. This parameter<br />
can be specified in the following<br />
ways:<br />
v An empty value causes all libraries<br />
to be used.<br />
v A specific library (for example,<br />
library1)<br />
v A specific site area (for example,<br />
site_area1)<br />
v A list of libraries, separated by<br />
commas (for example,<br />
library1,library2,library3)<br />
v The JCRID of a site area<br />
88 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Parameter Default Value Description<br />
Start 0 Defines the start number for<br />
currently returned section.<br />
Range 100 Defines the number of returned<br />
entries for current section.<br />
Date<br />
No default. If not specified, all<br />
applicable results are returned.<br />
Indicates that entries (documents)<br />
that were updated after this date are<br />
retrieved. The date format (compliant<br />
to standard ISO 8601) is the following<br />
: dateTtimezone, where date is<br />
yyyy-MM-dd, time is HH:mm:ss, and<br />
zone is ±hhmm. This format includes<br />
time zone information, which is<br />
critical if the client and server are in<br />
different time zones.<br />
Important: Proper HTML URL<br />
encoding must be performed (for<br />
example, represent the plus symbol +<br />
as %2B).<br />
Action GetDocuments Defines requested action to execute.<br />
v<br />
GetDocuments retrieve all<br />
underlying documents.<br />
v GetNumberOfDocuments returns<br />
the number of all underlying<br />
documents, typically for debug<br />
purposes. This value must be the<br />
same as the number of all<br />
documents returned from an<br />
appropriate GetDocuments request.<br />
Format ATOM Defines the output format : ATOM /<br />
HTML/ XML.<br />
Timestamp No default. Indicates the content provider<br />
timestamp from a previous crawling<br />
session. The timestamp represents for<br />
the content provider some snapshot<br />
of the content and allows the crawler<br />
to get only the content changes on<br />
the next crawling. This parameter is<br />
used for incremental crawling.<br />
Using the search seedlist 0.9<br />
Although Portal Search is configured to support the search seedlist 1.0 format by default, you can<br />
reconfigure the portal to use the standard seedlist 0.9 format when searching for web content with the<br />
Search Center. For example, you might choose to use seedlist format 0.9 because you want to make use of<br />
older search collections or because you retrieve the seedlist 0.9 contents using the seedlist URL, which<br />
uses a different syntax from the URL used with the search seedlist 1.0 format.<br />
Important: With <strong>IBM</strong> <strong>Web</strong>Sphere Portal Version 7, search seedlist format 0.9 is deprecated. Although you<br />
can still use seedlist format 0.9, it is recommended that you transition to seedlist format 1.0 to ensure<br />
future compatibility.<br />
To use the seedlist format 0.9, you essentially disable the default support for the seedlist format 1.0.<br />
1. Log in to the portal as an administrator.<br />
2. Click Administration in the tool bar.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 89
3. Disable search seedlist 1.0 support for <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
a. Log in to the <strong>Web</strong>Sphere Application Server administrative console (http://<br />
hostname.example.com:10027/ibm/console).<br />
b. Click Resources > Resource Environment > Resource Environment Providers.<br />
c. Click WP ConfigService.<br />
d. Under Additional Properties, click Custom Properties.<br />
e. Remove the property named wcm.config.seedlist.version.<br />
f. Remove the property named wcm.config.seedlist.servletpath.<br />
g. If it exists, remove the property named wcm.config.seedlist.metakeys .<br />
h. Click OK, and save the changes to the master configuration.<br />
i. Restart the portal.<br />
Managing tagging and rating for web content<br />
When using tagging and rating with web content, the JSR 286 web content viewer provides additional<br />
scope options for the filtering of tagging and rating results. Because changes in the web content system<br />
can affect the accuracy of the tagging and rating information used by the portal, it is important to keep<br />
the scope information up to date by synchronizing the scopes on a regular basis.<br />
Related tasks:<br />
“Adding tagging and rating to web content” on page 467<br />
Just as you can tag and rate portal resources like pages and portlets, you can also tag and rate content<br />
items generated with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> and displayed with the JSR 286 web content viewer.<br />
Two plug-in components are available to support the tagging and rating of content items in your web<br />
content system. You can add the [Plugin:tags] component and [Plugin:ratings] component in a<br />
presentation template to quickly integrate tagging and rating widgets into the current content item.<br />
Using tagging and rating scopes with web content<br />
Scoping is typically used to filter the tag cloud or ratings overview according to hierarchical metadata<br />
attached to the resources being tagged. When applying tagging and rating to web content, you can scope<br />
these display components according to authoring template, category, or content item parent.<br />
You can configure the advanced settings of the JSR 286 web content viewer to limit results to show only<br />
tags or ratings associated with one or more of the following scopes:<br />
v The parent of the content item being displayed (for example, a site area).<br />
v The authoring template that is used to generate the content item being displayed.<br />
v The categories used to profile the content item being displayed. In this way, you can manage scopes<br />
from within your web content system simply by defining taxonomies for your content items.<br />
90 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related tasks:<br />
“Synchronizing scopes for web content”<br />
When users are tagging or rating web content, the JSR 286 web content viewer provides the tagging or<br />
rating information to the portal, where it is stored. If information in the web content system changes, this<br />
can cause the tagging and rating information stored in the portal to be out of sync. This can happen, for<br />
example, if content items are moved or category information changes. To ensure the tagging and rating<br />
information is current, synchronize the scopes used for web content.<br />
Related reference:<br />
“Advanced options” on page 498<br />
The Advanced Options settings specify link broadcast behavior between web content viewers and<br />
whether context processor plug-ins are applied.<br />
Synchronizing scopes for web content<br />
When users are tagging or rating web content, the JSR 286 web content viewer provides the tagging or<br />
rating information to the portal, where it is stored. If information in the web content system changes, this<br />
can cause the tagging and rating information stored in the portal to be out of sync. This can happen, for<br />
example, if content items are moved or category information changes. To ensure the tagging and rating<br />
information is current, synchronize the scopes used for web content.<br />
To enable scope synchronization, specify the tagging.syndication.enableTagSynchronization property in<br />
the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> configuration service.<br />
1. Log in to the <strong>Web</strong>Sphere Application Server administrative console (http://<br />
hostname.example.com:10027/ibm/console).<br />
2. Click Resources > Resource Environment > Resource Environment Providers.<br />
3. Click WCM WCMConfigService.<br />
4. Under Additional Properties, click Custom Properties.<br />
5. Add the tagging.syndication.enableTagSynchronization property.<br />
a. Click New, and enter the property name tagging.syndication.enableTagSynchronization.<br />
b. Set the string value to true.<br />
6. Click OK, and save the changes to the master configuration.<br />
7. Restart the portal.<br />
After enabling scope synchronization, you can set up automatic synchronization according to different<br />
conditions or perform a manual synchronization as needed.<br />
Related information:<br />
Setting service configuration properties<br />
Synchronizing scopes when items change<br />
To automatically perform scope synchronization whenever an item changes in the web content system,<br />
specify the tagging.syndication.enableItemModificationSynchronization property in the <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> configuration service.<br />
Note: This type of synchronization only works for individual item changes. For example, this type of<br />
synchronization is not automatically performed when an entire site area or folder is moved. To<br />
synchronize scopes after such a change, you can perform synchronization manually.<br />
1. Log in to the <strong>Web</strong>Sphere Application Server administrative console (http://<br />
hostname.example.com:10027/ibm/console).<br />
2. Click Resources > Resource Environment > Resource Environment Providers.<br />
3. Click WCM WCMConfigService.<br />
4. Under Additional Properties, click Custom Properties.<br />
5. Add the tagging.syndication.enableItemModificationSynchronization property.<br />
Configuring <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> 91
a. Click New, and enter the property name<br />
tagging.syndication.enableItemModificationSynchronization.<br />
b. Set the string value to true.<br />
6. Click OK, and save the changes to the master configuration.<br />
7. Restart the portal.<br />
Related information:<br />
Setting service configuration properties<br />
Synchronizing scopes after syndication<br />
To automatically perform scope synchronization whenever syndication occurs, specify the<br />
tagging.syndication.enableTagSynchronization property in the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> configuration<br />
service.<br />
1. Log in to the <strong>Web</strong>Sphere Application Server administrative console (http://<br />
hostname.example.com:10027/ibm/console).<br />
2. Click Resources > Resource Environment > Resource Environment Providers.<br />
3. Click WCM WCMConfigService.<br />
4. Under Additional Properties, click Custom Properties.<br />
5. Add the tagging.syndication.enableTagSynchronization property.<br />
a. Click New, and enter the property name tagging.syndication.enableTagSynchronization.<br />
b. Set the string value to true.<br />
6. Click OK, and save the changes to the master configuration.<br />
7. Restart the portal.<br />
Related information:<br />
Setting service configuration properties<br />
Scheduling scope synchronization<br />
You can schedule scope synchronization to be performed at specific times by defining the schedule with<br />
the XML configuration interface.<br />
1. Verify whether any scheduled synchronizations have already been defined for the portal.<br />
a. Create an export file that you can use with the xmlaccess command. Here is an example of a<br />
request you can use to query the current configuration:<br />
<br />
<br />
<br />
<br />
<br />
<br />
b. Run the xmlaccess command, specifying the export file. The resulting output file contains any<br />
scheduled synchronization times that are defined in the portal.<br />
2. Set the synchronization schedule.<br />
a. To set a time for a scheduled synchronization, create an XML request document. For example, to<br />
schedule a synchronization to occur at 15:36 hours every day, you would use a request like this:<br />
<br />
<br />
<br />
<br />
15:36<br />
<br />
<br />
<br />
92 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
For each scheduled synchronization, create a separate task element and specify the time with a<br />
startTime element.<br />
b. Run the xmlaccess command, specifying the file containing the scheduling request. Scope<br />
information for the web content system will then be synchronized automatically according to the<br />
schedule you defined.<br />
3. Optional: If you want to set a minimum time before subsequent synchronizations are performed,<br />
specify the tagging.syndication.minimumTagSynchronizationTimeInterval property in the <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> configuration service.<br />
a. Log in to the <strong>Web</strong>Sphere Application Server administrative console (http://<br />
hostname.example.com:10027/ibm/console).<br />
b. Click Resources > Resource Environment > Resource Environment Providers.<br />
c. Click WP ConfigService.<br />
d. Under Additional Properties, click Custom Properties.<br />
e. Click New, and enter the property name<br />
tagging.syndication.minimumTagSynchronizationTimeInterval.<br />
f. Set the string value to the number of seconds between synchronizations.<br />
g. Click OK, and save the changes to the master configuration.<br />
h. Restart the portal.<br />
Related information:<br />
Setting service configuration properties<br />
Working with the XML configuration interface<br />
XML configuration reference<br />
Synchronizing scopes manually<br />
If you have not enabled automatic synchronization of the scopes used for web content or if you want to<br />
perform synchronization outside of a scheduled synchronization period, you can manually start the<br />
synchronization process.<br />
To manually perform synchronization, run the cp-sync configuration task or submit an XML request to<br />
the portal by using the XML configuration interface.<br />
v To perform synchronization with a configuration task, run the following task from the<br />
wp_profile_root/ConfigEngine directory:<br />
– Windows: ConfigEngine.bat cp-sync -DWasPassword=password -DPortalAdminPwd=password<br />
– UNIX: ./ConfigEngine.sh cp-sync -DWasPassword=password -DPortalAdminPwd=password<br />
– i: ConfigEngine.sh cp-sync -DWasPassword=password -DPortalAdminPwd=password<br />
v Create an XML request file and submit it using the xmlaccess command. Here is an example of a<br />
request you can use to start synchronization:<br />
<br />
94 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Setting up a portal site<br />
Setting up a portal site includes customizing the portal's look-and-feel, creating pages, setting up search,<br />
and adding content to the site. Themes are used to customize the portal's look-and-feel. Out-of-the-box<br />
templates and the site wizard can help you setup your portal site faster. You can add wikis and blogs to<br />
your site and let users tag and rate content on your site.<br />
Site wizard, sample sites, and templates<br />
<strong>Web</strong>Sphere Portal includes a site wizard, sample sites, templates and more to make site creation fast and<br />
easy. Before you start creating your site, get familiar with the out-of-the-box samples and learn more<br />
about the site wizard.<br />
Sample sites and New Site Wizard<br />
<strong>IBM</strong> ® <strong>Web</strong>Sphere ® Portal includes sample Internet and Intranet <strong>Web</strong> sites that you can use as a template<br />
to streamline development of your own portal site. Use the New Site Wizard to generate your own portal<br />
site without learning portal development skills.<br />
Sample sites<br />
The sample intranet and internet sites are not automatically installed when you install <strong>Web</strong>Sphere Portal,<br />
but you can add them after installation completes by running the configure-express task before you<br />
configure the portal database, user registry, context root, or security. For more information, see the<br />
instructions on setting up a stand-alone server or a clustered server on your particular platform.<br />
You can access the sample intranet and internet sites through the More menu in the main portal banner,<br />
or by opening the appropriate URL in a browser:<br />
v Intranet sample site: http://hostname.example.com:10039/wps/portal/intranet<br />
v Internet sample site: http://hostname.example.com:10039/wps/portal/internet<br />
Use the intranet site template as a starting point for creating your own employee site. Home, Work, and<br />
Resources pages come seeded with placeholder content that you can use as is or customize. Easy to use<br />
list portlets let you organize and manage announcements, news, events, FAQs, and links.<br />
95
Use the internet site template to get a jumpstart on building a website where customers can learn about<br />
product offerings, marketing promotions, and company news.<br />
More content samples are available on the <strong>IBM</strong> <strong>Web</strong>Sphere Portal Business Solutions Catalog.<br />
Creating portal sites on demand<br />
Use the New Site Wizard to generate your own site – without needing any portal development skills or<br />
assistance from an administrator. Just select a site template from the available samples, choose the look<br />
and feel you want, and then let the wizard do the rest.<br />
96 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The wizard automatically creates new sites as virtual portals; however, administrators and developers can<br />
extend the wizard to create any type of portal site. Portal developers can also enhance the New Site<br />
Wizard by creating custom site templates, and then adding them to the wizard.<br />
Download the New Site Wizard from the <strong>IBM</strong> <strong>Web</strong>Sphere Portal Business Solutions Catalog. Package<br />
contents include the portlet .war (<strong>Web</strong> Application Archive) file, supporting files and directories, and<br />
detailed instructions in a .pdf file. After deploying the wizard, you need to add the portlet to a page that<br />
users can access. For more information, see the .pdf file that comes with the wizard.<br />
Exploring the sample site templates<br />
Before you begin to work on your own, take time to test drive and explore the default internet and<br />
intranet sites templates that are provided with the product.<br />
Understanding the underlying concept of workflow is key to working with the intranet and internet site<br />
templates. Different authoring templates such as Announcements, Events, Company News, and FAQs<br />
help to simplify the content creation process. However, before any content that you create can appear on<br />
a site, it must pass through a series of stages (a workflow) and be in the Publish stage. The authoring<br />
templates in the intranet and internet site templates use two predefined workflows: Standard Workflow<br />
and QuickFlow.<br />
Standard Workflow has 4 stages: Draft, Review, Publish, and Expire. When you work with authoring<br />
templates that use Standard Workflow, content that you save goes to Draft stage. An administrator must<br />
review and publish draft content before it can appear with other available contents. Alternatively, to<br />
Setting up a portal site 97
move the content to the Review stage, you can choose Save and approve. From there, click Next stage to<br />
publish the content. Authoring templates that use Standard Workflow include Latest News (in the<br />
intranet site template), and Products and Company News (in the Internet site template).<br />
QuickFlow has just 2 stages: Publish and Expire. When you work with authoring templates that use<br />
QuickFlow, content is published immediately when you click Save. Authoring templates that use<br />
QuickFlow include Announcements and Events (in the intranet site template) and What's New,<br />
Promotions, and FAQs (in the internet site template).<br />
By default, users in the All Authenticated Portal Users group have privileged user access to the Intranet<br />
and Internet Site Templates. Thus every authenticated Portal user can customize these pages. To restrict<br />
this group to view access, remove the group from the Privileged user role of the Intranet and Internet Site<br />
Templates and add it to the User role.<br />
In addition to privileged user access, users in the contentAuthors group have editor access to the Internet<br />
and Intranet Site Template content that is created and maintained with <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. A content<br />
author can edit the content that is delivered out of the box, as well as create, edit, and delete new content<br />
for the Internet and Intranet Site Templates.<br />
You can access the <strong>IBM</strong> <strong>Web</strong>Sphere Portal Version 7.0 sample intranet and internet sites through the More<br />
menu in the main portal banner, or by opening one of the following web pages in a browser:<br />
v Intranet site template (business-to-employee): http://hostname.example.com:port/wps/portal/intranet<br />
v Internet site template (business-to-customer: http://hostname.example.com:port/wps/portal/internet<br />
Portal page structure<br />
Before customizing your portal site, understand the underlying structure of the portal.<br />
The portal page is composed of JSPs and statically included JSP fragments (JSPFs) for screens, themes, and<br />
skins that are typically created by the <strong>Web</strong> designer of the portal. These JSPs reside in the corresponding<br />
/screens, /themes, /skins directories under :<br />
v UNIX and Windows: PortalServer_root/installer/wp.ear/installableApps/wps.ear/wps.war<br />
v i: PortalServer_root/installer/wp.ear/installableApps/wps.ear/wps.war<br />
Within this location, subdirectories for markup, locale, and client types are used to support portal<br />
aggregation.<br />
themes<br />
screens<br />
skins<br />
provide the navigation, appearance, and layout of the portal, including colors, fonts, and images<br />
outside of the portlet content area (Home screen).<br />
the area of the portal that typically displays portlets (Home screen), but can also display other<br />
content in its place, for example, an error message. Screens are selected from navigation icons in<br />
the theme.<br />
represent the border rendering around components, such as row containers, column containers, or<br />
portlets. Skins are installed independently from themes. However, the administrator can set a<br />
default skin for a theme.<br />
The starting place for building the portal page is Default.jsp in the /themes directory. The screen and<br />
skin are called by their corresponding tags from the portal-core tag library: the screen is called by the<br />
tag, while the skin is called by the tag.<br />
The diagram below illustrates how themes, screens, and skins are used in the portal.<br />
98 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Themes<br />
You can add your own elements to the HTML portal page and rearrange the layout by creating a new<br />
theme and changing the layout in Default.jsp and the JSPs that are included. Learn about the order and<br />
layout in which the portal page theme is built using the JSPs that are provided after installation. Use this<br />
information to learn how to include some of these components as you build your own themes.<br />
Note: The information in this section is applicable to Portal and Portal <strong>Web</strong> 2 themes only. To learn more<br />
about Page builder and the default Page Builder theme, refer to the Working with page builder topic.<br />
For most requests, the portal page is rendered starting with Default.jsp in the /themes directory. The<br />
only exception is when the request has been modified by a newWindow="true" parameter. In this case,<br />
the page is rendered using Plain.jsp. The file Plain.jsp is normally used to render portlet help or for<br />
portlets that use the iFrame skin.<br />
Theme policy is used to control how a theme is rendered on a page. A policy is created and stored using<br />
the XML configuration interface. Once stored, it can be applied to a page either through the XML<br />
configuration interface using the page metadata attribute com.ibm.portal.ThemePolicy or through the<br />
Properties portlet. Theme policy is inherited so it only needs to be set on a page which requires a<br />
different policy than its parent.<br />
Setting up a portal site 99
Head<br />
Head.jspf provides the necessary header information to correctly render the portal page. This file is used<br />
to link the style sheets and client-side scripts as well as set the page title and the text direction.<br />
Banner<br />
Banner.jspf includes the user interface elements across the top of the page. This includes the following<br />
elements:<br />
v Top level links - a listing of the top level nodes directly under <strong>Content</strong> Root which includes a More...<br />
menu if the number of links exceeds a certain value.<br />
v Breadcrumb trail (banner_crumbtrail.jspf) - the current page selection path to the current page.<br />
v Search controls (banner_searchControl.jspf) - a search form to various search scopes.<br />
v Toolbar actions (banner_toolbar.jspf) - a set of buttons to access various flyout panels and actions.<br />
Top navigation<br />
topNav.jspf creates one or more rows of navigation tabs. Theme policy values control whether the top<br />
navigation is rendered and how many rows are rendered.<br />
Side navigation<br />
sideNav.jspf creates an expandable tree of navigation nodes. The side navigation renders any navigation<br />
levels that have not been rendered by the top navigation.<br />
Footers<br />
footer.jspf renders a section across the bottom of the portal page. By default, this includes quick links<br />
to commonly accessed areas of portal. The links rendered are internal URLs which are children of the<br />
portal page with the unique name ibm.portal.Quick Links.<br />
Palettes<br />
Flyout.jspf contains a hidden document division () which is used by actions in the banner's<br />
toolbar to display content which is dynamically displayed and hidden as needed.<br />
Menus<br />
The menus in the Portal theme and <strong>IBM</strong> skin (the defaults) are loaded asynchronously. The contents of<br />
the menu are controlled by a JSP in the /themes/html/Portal directory. The following information<br />
describes which JSP is used to control specific menus:<br />
Table 22. Menus and controlling JSPs<br />
Menu<br />
More menu<br />
Page menu (on selected page)<br />
Portlet menu<br />
Controlling JSP<br />
moreMenu.jsp<br />
pageContextMenu.jsp<br />
portletContextMenu.jsp<br />
Note: The page and portlet menu icon can only be seen if you hover over the upper right corner of the<br />
portlet and page title.<br />
The URLs to these JSPs are created using the <br />
where the themeTemplate attribute is the name of the JSP to load (without the file extension). As a result,<br />
100 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
it is important to note that any URL created in one of these controlling JSPs must have the theme<br />
template reset, either by using the themeTemplate attribute on the urlGeneration tag or by using the<br />
available public APIs.<br />
Note: Menus are disabled until a page fully loads. In more detail, the menus on the page (for example,<br />
Main menu, Page menu, and any portlet menus in the default Portal theme) are initially disabled and<br />
then re-enabled in an onload handler. This event occurs because clicking a menu before the page is<br />
completely loaded (that is, when portlet JSPs are still compiling) causes an error and the menu does not<br />
load.<br />
Drag and drop feature<br />
The drag-and-drop feature lets you quickly change the placement of individual portlets using your skins.<br />
The drag-and-drop feature lets you move a custom portlet from its current position by dropping it to<br />
another position on a page. This lets you quickly change the arrangement of your custom portlets on a<br />
page.<br />
Theme policy<br />
Theme policies control how a theme renders for a particular page. The attributes of the theme policy<br />
assigned to the current page are consumed by the theme JSPs to control what gets rendered, as well as<br />
how it is rendered.<br />
Screens<br />
The selected screen is rendered by the tag.<br />
Default themes<br />
For HTML, the following themes are provided by <strong>Web</strong>Sphere Portal.<br />
v Page Builder theme - This is the default theme for <strong>Web</strong>Sphere Portal. Refer to the Working with page<br />
builder topic for more information.<br />
v Portal theme - This has been the default theme for the earlier release of <strong>Web</strong>Sphere Portal and is a<br />
full-featured theme that demonstrates all available theme functionality.<br />
v Minimal theme - This theme, located in the root themes/html directory, is a minimal "safe" fallback that<br />
includes only the minimum required to render a functioning portal. It does not include all of the<br />
functionality available in <strong>Web</strong>Sphere Portal, such as drag and drop menus. This theme is not intended<br />
for normal use, and is not explicitly defined as a theme by name, but rather only exists as a fallback<br />
should there be a problem with the main portal theme, and also as an example of a minimal theme.<br />
v Portal <strong>Web</strong> 2 theme - This theme showcases <strong>Web</strong> 2.0 functionality in <strong>Web</strong>Sphere Portal. Taking full<br />
advantage of AJAX and JavaScript, this theme features a rich user experience on the client with partial<br />
page updates and inline portlet editing.<br />
Note: If the Portal theme directory is either deleted or renamed, the portal resource loader uses the<br />
themes/html/Default.jsp. In this case, you should also use the fallback skin. To do this, rename the skins<br />
directory. For example, the skins\html\<strong>IBM</strong> directory should be renamed skins\html\<strong>IBM</strong>1. If you have a<br />
broken theme, you can rename the theme and skin directories which are causing the problem to get to a<br />
working minimal theme.<br />
JSP tag<br />
The switch to using JSPs for style sheets provides a great advantage in the reduction of the number of<br />
files that must be maintained or generated when a style sheet is updated. However, a performance<br />
Setting up a portal site 101
concern is introduced in that the output of the compiled JSPs needs to be cached to avoid having to be<br />
generated on each request. <strong>Web</strong>Sphere Portal provides the JSP tag to<br />
solve this problem.<br />
The tag creates a URL to the caching proxy servlet. The URL created is<br />
fully cacheable and includes information about the requesting client. The CC/PP client profile is used for<br />
gathering information about the client for the URL. The purpose of this tag is to link .CSS files into the<br />
JSP.<br />
Note: For security reasons, the cache proxy servlet will only serve URLs pointing to resources located in<br />
the themes, skins, and screens directories. This makes all resources underneath these directories public.<br />
Also, any URLs containing the ".." characters will not be served.<br />
Theme policies<br />
Learn about theme policy, theme policy attributes, and the theme policies available with <strong>Web</strong>Sphere<br />
Portal. Learn about setting a theme policy on a page using the XML configuration interface, using theme<br />
policy in a JSP, creating your own theme policy, and updating, exporting, and deleting a theme policy.<br />
Theme policy is used to control how a theme is rendered on a page. A policy is created and stored using<br />
the XML configuration interface. Once stored, it can be applied to a page either through the XML<br />
configuration interface using the page metadata attribute com.ibm.portal.ThemePolicy or the Properties<br />
portlet. Theme policy is inherited so it only needs to be set on a page which requires a different policy<br />
than its parent.<br />
Note: Page builder and the Page Builder theme do not support theme policies, hence the information in<br />
the following section does not apply to Page builder and the Page Builder theme.<br />
This topic provides the following information on theme policies:<br />
Theme policy attributes<br />
A theme policy is made up of several attributes. Each attribute controls one aspect of the theme. For<br />
example, the Boolean renderBreadCrumb attribute controls whether the bread crumb will be displayed<br />
while the breadCrumbMaxLevels attribute controls the number of steps listed in the bread crumb when it is<br />
displayed.<br />
The following table provides type and functional information on all available theme policy attributes. For<br />
a full listing, it is recommended that you export the theme policy. See the exporting a theme policy<br />
section of this topic for more information.<br />
Table 23. Theme policy attributes<br />
Attribute Type Function<br />
renderMainMenu Boolean If true, the main menu is rendered<br />
renderTopNavigation Boolean If true, top navigation is rendered<br />
renderMainMenuActions Boolean If true, the main menu actions are rendered<br />
renderSelfCare Boolean If true, Selfcare is rendered<br />
renderBreadCrumbTrail Boolean If true, the bread crumb trail is rendered<br />
renderSearch Boolean If true, search is rendered<br />
renderToolBar Boolean If true, the tool bar is rendered<br />
render<strong>Content</strong>Palette Boolean If true, the portlet palette is rendered<br />
renderPeoplePalette Boolean If true, the people palette is rendered<br />
renderContextMenus Boolean If true, context menus are render<br />
102 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 23. Theme policy attributes (continued)<br />
Attribute Type Function<br />
renderSideNavigation Boolean If true, side navigation is rendered<br />
renderTaskBar Boolean If true, the task bar is rendered<br />
renderFavorites Boolean If true, favorites is rendered<br />
renderExtensions Boolean If true, extensions are rendered<br />
renderBannerTitleGraphic Boolean If true, the banner title graphic is rendered as<br />
long as one exists<br />
renderPortletFragmentIDAnchor Boolean Used to determine if the user is on a palette<br />
page<br />
renderBannerTitle Boolean If true, the banner title is rendered as long as<br />
one exists<br />
breadCrumbMaxLevels Integer Indicates the number of steps listed in the<br />
bread crumb trail<br />
breadCrumbStartLevel Integer Indicates which level to start the bread<br />
crumb trail<br />
rootNavigationStartLevel Integer Indicates the start level for root navigation<br />
rootNavigationStopLevel Integer Indicates the stop level for root navigation<br />
topNavigationNumRows Integer Indicates the number of rows to render for<br />
top navigation<br />
topNavigationStartLevel Integer Indicates the start level for top navigation<br />
topNavigationStopLevel Integer Indicates the stop level for top navigation<br />
sideNavigationStartLevel Integer Indicates the start level for side navigation<br />
isCustomizable Boolean If true, the policy can be edited in the Theme<br />
Customizer portlet.<br />
isDeletable Boolean If true, the policy can be deleted in the<br />
Theme Customizer portlet.<br />
Note: xmlaccess ignores this attribute.<br />
colorPalette String If specified, the value in this attribute is the<br />
name of the color palette.<br />
The search order for the name of the color<br />
palette used on the page is:<br />
1. the value of the colorPalette page meta<br />
data attribute<br />
2. the value of the colorPalette attribute in<br />
the policy assigned to the current page<br />
3. the string "default"<br />
The name of the color palette must be the<br />
name of a properties file provided in the<br />
theme without the .properties extension.<br />
colorPaletteProperties String Color Palette information. This is a stored<br />
java.util.Properties object created by the<br />
Theme Customizer portlet. The theme first<br />
loads the color palette for the page and then<br />
overwrites those values with any that may<br />
be present in this attribute.<br />
Setting up a portal site 103
Table 23. Theme policy attributes (continued)<br />
Attribute Type Function<br />
graphicFilesMimeData String If specified, graphic files uploaded through<br />
the Theme Customizer portlet. This attribute<br />
is a standard multipart/mixed MIME text<br />
stream containing attachments encoded with<br />
Base64 encoding.<br />
styleVersion Integer The version number of the policy. This value<br />
is incremented each time the Theme<br />
Customizer portlet saves the policy so<br />
updates to the policy can be loaded without<br />
clearing the browser cache.<br />
bannerTitleText String Indicates the text that is to be displayed as<br />
the title in the banner and browser title bar.<br />
If this value is empty, the<br />
bannerTitleTextResourceBundle and<br />
bannerTitleTextResourceKey attributes are<br />
used to determine the title text.<br />
bannerTitleTextResourceBundle String Indicates the resource bundle containing the<br />
title text.<br />
bannerTitleTextResourceKey String Indicates the resource bundle key that is to<br />
be used to locate the title<br />
bannerTitleGraphic String Indicates the URI of the title graphic to be<br />
displayed in the banner. This value is passed<br />
on the uri attribute of the portal-resolver:url<br />
tag.<br />
Values created by the Theme Customizer<br />
portlet are of the form:<br />
"themeGraphic:policy:filePath:xxx" where xxx<br />
is the name of the attachment stored in the<br />
graphicFilesMimeData attribute.<br />
renderBannerQuickLinks Boolean If true, banner quick links are rendered<br />
renderHelpLink Boolean If true, the help link is rendered<br />
renderQuickLinksShelf Boolean If true, the quick links shelf is rendered<br />
quickLinksShelfStyle Integer Style attributes for the quick links shelf. This<br />
is a bitmask field. If bit 1 is turned on, the<br />
quick links shelf default state is expanded. If<br />
bit 2 is turned on, the expand/collapse link<br />
is hidden.<br />
As such, the following values are supported:<br />
0 = default shelf state is collapsed and the<br />
expand/collapse link is shown<br />
1 = default shelf state is expanded and<br />
the expand/collapse link is shown<br />
2 = default shelf state is collapsed and the<br />
expand/collapse link is hidden<br />
3 = default shelf state is expanded and<br />
the expand/collapse link is hidden<br />
Numbers other than 0, 1, 2, or 3 are reserved<br />
for future use.<br />
renderApplicationName Boolean If true, the application name is rendered<br />
104 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 23. Theme policy attributes (continued)<br />
Attribute Type Function<br />
renderCustomizeThemeLink Boolean If true, the theme customizer link is rendered<br />
Provided theme policies<br />
<strong>Web</strong>Sphere Portal provides ten policies that may be used without alteration. The following information<br />
provides lists of each policy along with the corresponding attributes, values, and types.<br />
Note: The Federation, SingleTopNavLevel2, and Palette theme policies should not be modified.<br />
Default<br />
v renderMainMenu=TRUE<br />
v renderTopNavigation=TRUE<br />
v renderMainMenuActions=TRUE<br />
v renderSelfCare=TRUE<br />
v renderBreadCrumbTrail=FALSE<br />
v renderSearch=TRUE<br />
v renderToolBar=TRUE<br />
v render<strong>Content</strong>Palette=TRUE<br />
v renderPeoplePalette=TRUE<br />
v renderContextMenus=TRUE<br />
v renderSideNavigation=TRUE<br />
v renderTaskBar=TRUE<br />
v renderFavorites=TRUE<br />
v renderExtensions=TRUE<br />
v renderBannerTitleGraphic=TRUE<br />
v renderBannerTitle=TRUE<br />
v renderPortletFragmentIDAnchor=TRUE<br />
v breadCrumbMaxLevels=5<br />
v breadCrumbStartLevel=1<br />
v rootNavigationStartLevel=1<br />
v rootNavigationStopLevel=1<br />
v topNavigationNumRows=1<br />
v topNavigationStartLevel=2<br />
v topNavigationStopLevel=2<br />
v sideNavigationStartLevel=3<br />
v isCustomizable=FALSE<br />
v isDeletable=TRUE<br />
v colorPalette=""<br />
v colorPaletteProperties=""<br />
v graphicFilesMimeData=""<br />
v styleVersion=1<br />
v bannerTitleText=""<br />
v bannerTitleTextResourceBundle=""<br />
v bannerTitleTextResourceKey=""<br />
Setting up a portal site 105
v bannerTitleTextResourceKey=""<br />
v bannerTitleGraphic=""<br />
v renderBannerQuickLinks=TRUE<br />
v renderHelpLink=TRUE<br />
v renderQuickLinksShelf =FALSE<br />
v quickLinksShelfStyle=1<br />
v renderApplicationName=TRUE<br />
v renderCustomizeThemeLink=FALSE<br />
SingleTopNav<br />
v renderMainMenu = TRUE<br />
v renderTopNavigation = TRUE<br />
v renderMainMenuActions= TRUE<br />
v renderSelfCare = TRUE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = TRUE<br />
v renderToolBar = TRUE<br />
v render<strong>Content</strong>Palette = TRUE<br />
v renderPeoplePalette = TRUE<br />
v renderContextMenus = TRUE<br />
v renderSideNavigation = TRUE<br />
v renderTaskBar = TRUE<br />
v renderFavorites = TRUE<br />
v renderExtensions = TRUE<br />
v renderBannerTitleGraphic = TRUE<br />
v renderBannerTitle=TRUE<br />
v renderPortletFragmentIDAnchor=TRUE<br />
v breadCrumbMaxLevels = 5<br />
v breadCrumbStartLevel = 1<br />
v rootNavigationStartLevel = 1<br />
v rootNavigationStopLevel = 1<br />
v topNavigationNumRows = 1<br />
v topNavigationStartLevel = 2<br />
v topNavigationStopLevel = 2<br />
v sideNavigationStartLevel = 3<br />
SingleTopNavMinimal<br />
v renderMainMenu = TRUE<br />
v renderTopNavigation = TRUE<br />
v renderMainMenuActions = FALSE<br />
v renderSelfCare = FALSE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = FALSE<br />
v renderToolBar = FALSE<br />
v render<strong>Content</strong>Palette = FALSE<br />
v renderPeoplePalette = FALSE<br />
106 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v renderContextMenus = FALSE<br />
v renderSideNavigation = TRUE<br />
v renderTaskBar = FALSE<br />
v renderFavorites = FALSE<br />
v renderExtensions = FALSE<br />
v renderBannerTitleGraphic = FALSE<br />
v renderBannerTitle = FALSE<br />
v renderPortletFragmentIDAnchor=TRUE<br />
v breadCrumbMaxLevels = 0<br />
v breadCrumbStartLevel = 0<br />
v rootNavigationStartLevel = 1<br />
v rootNavigationStopLevel = 1<br />
v topNavigationNumRows = 1<br />
v topNavigationStartLevel = 2<br />
v topNavigationStopLevel = 2<br />
v sideNavigationStartLevel = 3<br />
DoubleTopNav<br />
v renderMainMenu = TRUE<br />
v renderTopNavigation = TRUE<br />
v renderMainMenuActions = TRUE<br />
v renderSelfCare = TRUE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = TRUE<br />
v renderToolBar = TRUE<br />
v render<strong>Content</strong>Palette = TRUE<br />
v renderPeoplePalette = TRUE<br />
v renderContextMenus = TRUE<br />
v renderSideNavigation = TRUE<br />
v renderTaskBar = TRUE<br />
v renderFavorites = TRUE<br />
v renderExtensions = TRUE<br />
v renderBannerTitleGraphic = TRUE<br />
v renderBannerTitle = TRUE<br />
v renderPortletFragmentIDAnchor=TRUE<br />
v breadCrumbMaxLevels = 5<br />
v breadCrumbStartLevel = 1<br />
v rootNavigationStartLevel = 1<br />
v rootNavigationStopLevel = 1<br />
v topNavigationNumRows = 2<br />
v topNavigationStartLevel = 2<br />
v topNavigationStopLevel = 3<br />
v sideNavigationStartLevel = 4<br />
DoubleTopNavMinimal<br />
v renderMainMenu = TRUE<br />
Setting up a portal site 107
v renderTopNavigation= TRUE<br />
v renderMainMenuActions = FALSE<br />
v renderSelfCare = FALSE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = FALSE<br />
v renderToolBar = FALSE<br />
v render<strong>Content</strong>Palette = FALSE<br />
v renderPeoplePalette = FALSE<br />
v renderContextMenus = FALSE<br />
v renderSideNavigation = TRUE<br />
v renderTaskBar = FALSE<br />
v renderFavorites = FALSE<br />
v renderExtensions = FALSE<br />
v renderBannerTitleGraphic = FALSE<br />
v renderBannerTitle = FALSE<br />
v renderPortletFragmentIDAnchor=TRUE<br />
v breadCrumbMaxLevels = 0<br />
v breadCrumbStartLevel = 0<br />
v rootNavigationStartLevel = 1<br />
v rootNavigationStopLevel = 1<br />
v topNavigationNumRows = 2<br />
v topNavigationStartLevel = 2<br />
v topNavigationStopLevel = 3<br />
v sideNavigationStartLevel = 4<br />
SideNavOnly<br />
v renderMainMenu = TRUE<br />
v renderTopNavigation = FALSE<br />
v renderMainMenuActions = TRUE<br />
v renderSelfCare = TRUE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = TRUE<br />
v renderToolBar = TRUE<br />
v render<strong>Content</strong>Palette = TRUE<br />
v renderPeoplePalette = TRUE<br />
v renderContextMenus = TRUE<br />
v renderSideNavigation = TRUE<br />
v renderTaskBar = TRUE<br />
v renderFavorites = TRUE<br />
v renderExtensions = TRUE<br />
v renderBannerTitleGraphic = TRUE<br />
v renderBannerTitle = TRUE<br />
v renderPortletFragmentIDAnchor=TRUE<br />
v breadCrumbMaxLevels = 5<br />
v breadCrumbStartLevel = 1<br />
108 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v rootNavigationStartLevel = 1<br />
v rootNavigationStopLevel = 1<br />
v topNavigationNumRows = 0<br />
v topNavigationStartLevel = 0<br />
v topNavigationStopLevel = 0<br />
v sideNavigationStartLevel = 2<br />
SideNavOnlyMinimal<br />
v renderMainMenu = TRUE<br />
v renderTopNavigation = FALSE<br />
v renderMainMenuActions = FALSE<br />
v renderSelfCare = FALSE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = FALSE<br />
v renderToolBar = FALSE<br />
v render<strong>Content</strong>Palette = FALSE<br />
v renderPeoplePalette = FALSE<br />
v renderContextMenus = FALSE<br />
v renderSideNavigation =TRUE<br />
v renderTaskBar = FALSE<br />
v renderFavorites = FALSE<br />
v renderExtensions = FALSE<br />
v renderBannerTitleGraphic = FALSE<br />
v renderBannerTitle = FALSE<br />
v renderPortletFragmentIDAnchor=TRUE<br />
v breadCrumbMaxLevels = 5<br />
v breadCrumbStartLevel = 0<br />
v rootNavigationStartLevel = 1<br />
v rootNavigationStopLevel = 1<br />
v topNavigationNumRows = 0<br />
v topNavigationStartLevel = 0<br />
v topNavigationStopLevel = 0<br />
v sideNavigationStartLevel = 2<br />
NoTheme<br />
v renderMainMenu = FALSE<br />
v renderTopNavigation = FALSE<br />
v renderMainMenuActions = FALSE<br />
v renderSelfCare = FALSE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = FALSE<br />
v renderToolBar = FALSE<br />
v render<strong>Content</strong>Palette = FALSE<br />
v renderPeoplePalette = FALSE<br />
v renderContextMenus = FALSE<br />
v renderSideNavigation = FALSE<br />
Setting up a portal site 109
v renderTaskBar = FALSE<br />
v renderFavorites = FALSE<br />
v renderExtensions = FALSE<br />
v renderBannerTitleGraphic = FALSE<br />
v renderBannerTitle = FALSE<br />
v renderPortletFragmentIDAnchor=FALSE<br />
v breadCrumbMaxLevels = 0<br />
v breadCrumbStartLevel = 0<br />
v rootNavigationStartLevel = 0<br />
v rootNavigationStopLevel = 0<br />
v topNavigationNumRows = 0<br />
v topNavigationStartLevel = 0<br />
v topNavigationStopLevel = 0<br />
v sideNavigationStartLevel = 0<br />
Federation<br />
Note: The Federation theme policy cannot be applied to a page either through the XML configuration<br />
interface using the page attribute com.ibm.portal.ThemePolicy or the Properties portlet.<br />
v renderMainMenu = FALSE<br />
v renderTopNavigation = FALSE<br />
v renderMainMenuActions = FALSE<br />
v renderSelfCare = FALSE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = TRUE<br />
v renderToolBar = TRUE<br />
v render<strong>Content</strong>Palette = TRUE<br />
v renderPeoplePalette = TRUE<br />
v renderContextMenus = FALSE<br />
v renderSideNavigation = FALSE<br />
v renderTaskBar = FALSE<br />
v renderFavorites = FALSE<br />
v renderExtensions = FALSE<br />
v renderBannerTitleGraphic = FALSE<br />
v renderBannerTitle = FALSE<br />
v renderPortletFragmentIDAnchor=TRUE<br />
v breadCrumbMaxLevels = 0<br />
v breadCrumbStartLevel = 0<br />
v rootNavigationStartLevel = 0<br />
v rootNavigationStopLevel = 0<br />
v topNavigationNumRows = 0<br />
v topNavigationStartLevel = 0<br />
v topNavigationStopLevel = 0<br />
v sideNavigationStartLevel = 0<br />
SingleTopNavLevel2<br />
110 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v renderMainMenu = TRUE<br />
v renderTopNavigation = TRUE<br />
v renderMainMenuActions= TRUE<br />
v renderSelfCare = TRUE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = TRUE<br />
v renderToolBar = TRUE<br />
v render<strong>Content</strong>Palette = TRUE<br />
v renderPeoplePalette = TRUE<br />
v renderContextMenus = TRUE<br />
v renderSideNavigation = TRUE<br />
v renderTaskBar = TRUE<br />
v renderFavorites = TRUE<br />
v renderExtensions = TRUE<br />
v renderBannerTitleGraphic = TRUE<br />
v renderBannerTitle = TRUE<br />
v renderPortletFragmentIDAnchor=TRUE<br />
v breadCrumbMaxLevels = 5<br />
v breadCrumbStartLevel = 2<br />
v rootNavigationStartLevel = 1<br />
v rootNavigationStopLevel = 1<br />
v topNavigationNumRows = 1<br />
v topNavigationStartLevel = 2<br />
v topNavigationStopLevel = 2<br />
v sideNavigationStartLevel = 3<br />
Palette<br />
v renderMainMenu = TRUE<br />
v renderTopNavigation = TRUE<br />
v renderMainMenuActions= TRUE<br />
v renderSelfCare = TRUE<br />
v renderBreadCrumbTrail = FALSE<br />
v renderSearch = TRUE<br />
v renderToolBar = TRUE<br />
v render<strong>Content</strong>Palette = TRUE<br />
v renderPeoplePalette = TRUE<br />
v renderContextMenus = TRUE<br />
v renderSideNavigation = TRUE<br />
v renderTaskBar = TRUE<br />
v renderFavorites = TRUE<br />
v renderExtensions = TRUE<br />
v renderBannerTitleGraphic=TRUE<br />
v renderBannerTitle=TRUE<br />
v renderPortletFragmentIDAnchor=FALSE<br />
v breadCrumbMaxLevels = 5<br />
Setting up a portal site 111
v breadCrumbStartLevel = 1<br />
v rootNavigationStartLevel = 1<br />
v rootNavigationStopLevel = 1<br />
v topNavigationNumRows = 1<br />
v topNavigationStartLevel = 2<br />
v topNavigationStopLevel = 2<br />
v sideNavigationStartLevel = 3<br />
Custom theme attributes<br />
In addition to the attributes in each policy above, you can add an attribute to the theme policies and then<br />
use it in your JSP or JSPF. The following code samples show how the custom attribute<br />
renderTestAttribute is added to theme policy and how it is accessed in a JSP or JSPF.<br />
The main theme policy must have the attribute and a lock attribute. This is added to the root theme<br />
policy as follows:<br />
<br />
true<br />
<br />
<br />
false<br />
<br />
The policy value sets consisting of attributes and their values can be nested. Child attributes can either<br />
inherit or override the values from the parent attribute. When you specify the value of a lock attribute<br />
corresponding to a policy attribute as true, you lock the policy node. In this case, the child attributes<br />
necessarily inherit the values from parent attributes and cannot override these values.<br />
Use the following code to add the attribute to each theme policy that requires a value different from the<br />
root theme policy:<br />
<br />
false<br />
<br />
Since this is a Boolean, the value would be set to true or false.<br />
Use the following code to access the attribute in a JSP or JSPF:<br />
<br />
Display this paragraph if renderTestAttribute is true. <br />
<br />
In the above example, if the value of renderTestAttribute is true, the paragraph is displayed.<br />
themePolicy is defined in the Using theme policy in a JSP section of this topic.<br />
There are three accessor methods:<br />
v getValueAsBoolean(String key, boolean defaultValue);<br />
v getValueAsInt(String key, int defaultValue);<br />
v getValueAsString(String key, String defaultValue);<br />
112 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
where key is the name of the attribute and defaultValue is the value that will be used if the attribute<br />
value can not be retrieved from the theme policy.<br />
Setting theme policy on a page using the XML configuration interface<br />
Theme Policy can be applied to a page through the XML configuration interface using the page metadata<br />
attribute com.ibm.portal.ThemePolicy. The following provides an example of an XML script that sets the<br />
page metadata for the theme policy for the page ThemePolicyPageTest:<br />
<br />
<br />
<br />
<br />
<br />
theme/SingleTopNavMinimal<br />
<br />
<br />
<br />
Using theme policy in a JSP<br />
You can also use a theme policy directly in a JSP. Use the following code to do this:<br />
<br />
<br />
<br />
In this code sample, the theme bean is initialized which wrappers the theme policy attributes.<br />
To use an attribute in the JSP, reference it with the following syntax: ${themePolicy.attribute) where the<br />
attribute would be, for example, renderSideNavigation. The following code tests renderSideNavigation.<br />
If it is TRUE, the following code is executed:<br />
<br />
<br />
<br />
<br />
<br />
The following code sample sets startLevel to the value of the theme policy attribute<br />
sideNavigationStartLevel:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
5<br />
1<br />
true<br />
true<br />
false<br />
true<br />
true<br />
true<br />
true<br />
true<br />
true<br />
true<br />
true<br />
true<br />
true<br />
true<br />
true<br />
true<br />
true<br />
1<br />
1<br />
4<br />
2<br />
2<br />
3<br />
<br />
<br />
<br />
Updating a theme policy<br />
If you want to only update a theme policy, use the following guidelines:<br />
v Export the theme policy.<br />
v Edit the values of the attributes that you want to update.<br />
v Use the XML configuration interface to update the policy with the updated theme policy definition.<br />
Extending and updating a theme policy<br />
If during an update you also want to extend a theme policy by adding attributes to it, you need to add<br />
the attribute(s) also to the root theme policy. Use the following guidelines to do this:<br />
v Export the entire theme policy structure.<br />
v Edit the root theme policy.<br />
v Edit the theme policy that you want to update by adding the attribute, if the value is different than the<br />
root theme policy.<br />
v Use the XML configuration interface to update the policy with the updated theme policy definition.<br />
If you only want to modify the value of an attribute that already exists in a theme policy, use the<br />
following guidelines:<br />
v Export the theme policy that you want to modify.<br />
114 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Make the appropriate changes to the attribute as required.<br />
v Use the XML configuration interface to update the policy with the updated theme policy attributes.<br />
Exporting a theme policy<br />
Adapt the following code sample to export a theme policy. This example exports all theme policies.<br />
<br />
<br />
<br />
<br />
<br />
<br />
The following code sample exports only the theme policy named TestThemePolicy :<br />
<br />
<br />
<br />
<br />
<br />
<br />
Deleting a theme policy<br />
Adapt the following code sample to delete a theme policy:<br />
<br />
<br />
<br />
<br />
<br />
<br />
Theme extension points<br />
By using the Eclipse Extension Point Framework, themes provide various points where theme<br />
functionality can be extended by simply putting a new JAR file in the classpath.<br />
Including an extension point in a theme<br />
The tags in the TLD are provided for processing theme extension points. The<br />
following code provides a simple example of an extension point included in a theme:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Refer to the descriptions in Tags used by the portal JSPs for more information about the theme extension<br />
tags and their usage options. Refer to the Javadoc information for the Themes public API as the<br />
tags will only work with those interfaces.<br />
Setting up a portal site 115
Using existing extension points in the included Portal theme<br />
The included Portal theme provides extension points that allow limited customization without editing the<br />
theme JSPs. Use the following guidelines to do this:<br />
1. Implement the required interface, for example, com.ibm.portal.theme.plugin.ThemeLinkItem.<br />
2. Create a plugin.xml file declaring the extension.<br />
3. Create the necessary JAR file.<br />
4. Put the JAR file in a directory that is on the classpath of the Portal application. It is recommended<br />
that you create a new directory to separate your custom code from the base code. This directory can<br />
be created in the was_profile_root directory.<br />
5. Update the classpath for the JAR file from the <strong>Web</strong>Sphere Application Server Administrative console<br />
by editing an existing shared library and adding an entry for ${USER_INSTALL_ROOT}/<br />
. For details refer to the <strong>Web</strong>Sphere Application Server documentation.<br />
6. Restart the server and your extension should now be visible in the theme.<br />
For more information on plugin.xml files or the extension framework, refer to the Eclipse Extension Point<br />
Framework documentation. The Javadoc information for the Theme public API also contains coding and<br />
plugin.xml samples.<br />
Default extension points<br />
The table below describes the extension points included in the Portal theme. The ID field is the extension<br />
point identifier used in the plugin.xml. The Default Implementation field describes the interface which<br />
provides the information the default extension point requires. Type enforcement is not performed at run<br />
time.<br />
Table 24. Default extension points for the Portal theme<br />
ID Description Default Implementation<br />
com.ibm.portal.theme.plugin.MetaTagDataItems provides components with a method<br />
of adding data to the meta tags of a<br />
page<br />
com.ibm.portal.theme.plugin.Styles<br />
provides components with a method<br />
of contributing CSS styles to the page<br />
(either a link or embedded css)<br />
com.ibm.portal.theme.plugin.JavascriptItems provides components with a method<br />
of adding javascript to a page (either<br />
a link or actual js code)<br />
com.ibm.portal.theme.plugin.HorizontalPageBarItems<br />
provides components with a method<br />
of adding jsp content to the<br />
horizontal page bar<br />
com.ibm.portal.theme.plugin.VerticalPageBarItems provides components with a method<br />
of adding jsp content to the vertical<br />
page bar<br />
com.ibm.portal.theme.plugin.PageContextMenuItems<br />
provides components with a method<br />
of adding an item to the page menu<br />
com.ibm.portal.theme.plugin.PortletContextMenuItems<br />
provides components with a method<br />
of adding an item to the portlet<br />
menu<br />
com.ibm.portal.theme.plugin.Flyouts<br />
provides components with a method<br />
of adding a flyout to the page<br />
{@link DefaultThemeTextItem}<br />
{@link DefaultThemeTextItem}<br />
{@link DefaultThemeTextItem}<br />
{@link DefaultThemeJspInclude}<br />
{@link DefaultThemeJspInclude}<br />
{@link DefaultThemeLinkItem}<br />
{@link DefaultThemeLinkItem}<br />
{@link DefaultThemeJspInclude}<br />
116 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The Page Builder theme includes extension points for adding items to page menus and portlet menus<br />
and for including aggregators with the page when using Active Site Analytics. Following are the<br />
extension point identifiers for these default extension points:<br />
v com.ibm.portal.theme.plugin.PageContextMenuItems<br />
v com.ibm.portal.theme.plugin.PortletContextMenuItems<br />
v com.ibm.portal.theme.plugin.ActiveSiteAnalyticsItems<br />
For background information on the Active Site Analytics extension point, refer to the Instrumenting a<br />
theme for Active Site Analytics and Injecting custom aggregators topics.<br />
Screens<br />
A screen is a page of portal content. When the portal page is first loaded, the Home screen is initially<br />
shown (Home.jsp). Other screens can also be displayed, such as the Error screen. Selection of screens is<br />
determined by links or buttons on the toolbar, which is provided by a theme. The Home screen includes<br />
the tag, which renders the pages layout and content.<br />
Creating links to a custom screen<br />
Portlet content is rendered only within the Home screen. However, you can provide content in other<br />
screens that you create. For example, you could create an introductory screen that displays a multimedia<br />
greeting to users before they log in to your portal site. The tag is<br />
used to create the link to the JSP in the /screens directory. The name value must be the name of the<br />
screen JSP file without the .jsp extension.<br />
In the following example from banner_toolbar.jspf, a URL to the ForgotPassword screen is created for<br />
the HREF attribute of the link.<br />
<br />
<br />
| <br />
<br />
<br />
<br />
<br />
Skins<br />
Skins represent the border rendering around components, such as row containers, column containers, or<br />
portlets. The skin is loaded in the portal page by the tag. Skins are installed<br />
independently from themes. However, a skin can be associated with a theme.<br />
Skins define more than the look and feel of portlets; they define the look and feel of components. These<br />
components include the containers and controls. This hierarchical structure is depicted in the following<br />
diagram.<br />
Setting up a portal site 117
Figure 1. Underlying layout of the Home screen<br />
The components of the skin are called in the following order.<br />
1. The tag in the Home screen, Home.jsp, displays the components for the<br />
selected node. The components are implemented as row containers, column containers, and controls<br />
depending upon the portal layout that is defined in the topic Portal page customization. Controls are<br />
displayed using Control.jsp. The figure in the Underlying layout of the home screen topic depicts<br />
one row container that has two column containers, each containing two portlets.<br />
2. The row and column containers display their nested components using either Java code or the<br />
and elements.<br />
3. Each portlet is rendered by the tag within the Control.jsp. file. The<br />
control also builds the border and title bar around the portlet output.<br />
Note: Some of the icons in the portlet title bar have an impact on performance.<br />
Provided skins<br />
The <strong>IBM</strong>, Noskin, ThinSkin, and IFRAME skins are provided by <strong>Web</strong>Sphere Portal for rendering portlets.<br />
Page Builder - Standard and Page Builder - Thin are two new skins that can be assigned to the Page<br />
Builder theme. These skins are located in wp_profile_root/installedApps/node_name/<br />
Enhanced_Theme.ear/wp.theme.enhancedtheme.war/skins/html<br />
Usage notes for the provided skins<br />
v The Page Builder - Standard and Page Builder - Thin skins must be used with the Page Builder theme<br />
only. It is not recommended that these skins be assigned to themes other than the Page Builder theme.<br />
118 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v The IFRAME skin cannot be set as the Portal default skin. It is also not recommended that you assign<br />
the IFRAME skin to the Portal theme. The IFRAME skin is only to be assigned to portlets that have<br />
been specifically designed for the skin.<br />
v If the Portal theme directory is either deleted or renamed, the portal resource loader uses the<br />
themes/html/Default.jsp. In this case, you should also use the fallback skin. To do this, rename the<br />
skins directory. For example, the skins\html\<strong>IBM</strong> directory should be renamed skins\html\<strong>IBM</strong>1. Ifyou<br />
have a broken theme, you can rename the theme and skin directories which are causing the problem to<br />
get to a working minimal theme.<br />
More about the IFRAME skin<br />
The IFRAME (inline frame) skin that is provided has a more practical purpose than the other skins. It<br />
renders portlet content in an HTML IFRAME on the page. IFRAMES are treated as separate browser<br />
windows and are used for the inclusion of external objects including other HTML documents.<br />
The IFRAME skin is especially useful for portlets that are slow to render, allowing the rest of the portal<br />
page to render without waiting on the content from the portlet within the IFRAME. The width of this<br />
skin is set to 100% and height is set to 250 pixels.<br />
To change this setting, use following steps:<br />
1. Locate the /IFrame subdirectory in the ../skins/html directory.<br />
2. Edit the file Control.jsp.<br />
3. Locate the markup for the IFRAME:<br />
<br />
4. Change the width and height attributes of this tag.<br />
5. Save and close the file.<br />
Automatic portlet maximization<br />
In earlier versions of <strong>Web</strong>Sphere Portal, the state of a portlet was automatically set to maximize when the<br />
portlet mode was changed from view mode to another mode. For example, when switching to edit mode,<br />
the portlet would be changed to maximized state until the user changed back to view mode. This<br />
automatic maximize behavior has been removed by default, but can be implemented at the following<br />
levels.<br />
v Portal level<br />
To configure all portlets to automatically maximize when the mode is changed, set the<br />
portlet.automaximize configuration service parameter to true.<br />
v Skin level<br />
This behavior can be implemented in portlet skins, using the tag,<br />
so that the administrator can control which portlets are automatically maximized. For example, you<br />
could create a skin called Highlight and a skin called Highlight_Max, with the only difference between<br />
the two is that Highlight_Max is used to automatically change the portlet state when the portlet enters<br />
another mode other than View.<br />
v Portlet level<br />
To configure specific portlets to automatically maximize, the portlet developer can<br />
com.ibm.portal.automaximize initialization parameter to true.<br />
Setting up a portal site 119
Attention: Automatic maximization can create problems for standard portlets, which are not developed<br />
to be maximized when going into edit or configure mode, and therefore do not provide the correct<br />
window state information when creating Done or Cancel buttons. Also, in <strong>IBM</strong> portlets, automatic<br />
maximization can lead to undesired effects in conjunction with return URIs created by the<br />
and tags or the createReturnURI() method.<br />
Portlet modes and window states are orthogonal, such that combinations of portlet modes and windows<br />
states may occur that were not present before the user click Back to return to view mode.<br />
Aggregation<br />
<strong>Web</strong>Sphere Portal provides fully dynamic aggregation of pages from page descriptors that are held in the<br />
portal database.<br />
The portal should provide users with a consistent view on portal applications and allow users to define<br />
specific sets of applications that are presented in a single context. Depending on the device of the user,<br />
the rendering of this application set has to vary to fulfill the requirements of the device. Consider, for<br />
example, a set of applications that includes News, Stocks, Weather, and Search, that are to be rendered on<br />
a conventional phone using voice interactions, on a WML device with a limited display and keyboard, or<br />
on a PC-based browser. The aggregation component must provide the following tasks with each request<br />
from the device:<br />
1. Gather information about the user, the device or client, and the selected language.<br />
2. Select the active portlets from the set of applications to which the user has access.<br />
3. Aggregate the output of the active portlets into a coherent, usable display.<br />
After the active page is determined, the layout of the selected page is used to aggregate the content of the<br />
defined applications, arrange the output, and integrate everything into a complete page. <strong>Web</strong>Sphere<br />
Portal provides fully dynamic aggregation of pages from page descriptors that are held in the portal<br />
database.<br />
Rendering of page components is done using JSPs, images, style sheets, and other resources. These<br />
resources are located in the file system in a path-naming convention that the portal server uses to locate<br />
the correct resources for the client. You must first understand how the location of these resources<br />
supports aggregation before you can customize the visual appearance, layout, or add support for other<br />
markup languages or clients.<br />
Search order for portal resources<br />
During aggregation, the portal server searches for themes and skins starting with the most specific<br />
subdirectory and moving up to the more general, higher-level directory.<br />
Table 25. Search order for portal resources by directory<br />
Location in the /themes directory<br />
1. /locale_region<br />
2. /locale<br />
3. /client<br />
4. /theme_name<br />
5. /markup<br />
Location in the /skins directory<br />
1. /locale_region<br />
2. /locale<br />
3. /client<br />
4. /skin_name<br />
5. /markup<br />
For example, consider a request from a client using Internet Explorer with the locale set to en_US and the<br />
user's skins set to Shadow. The aggregation component of the portal server searches for the file<br />
Control.jsp in the following order.<br />
1. /skins/html/Shadow/ie/en_US/Control.jsp<br />
2. /skins/html/Shadow/ie/en/Control.jsp<br />
3. /skins/html/Shadow/ie/Control.jsp<br />
120 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
4. /skins/html/Shadow/en_US/Control.jsp<br />
5. /skins/html/Shadow/en/Control.jsp<br />
6. /skins/html/Shadow/Control.jsp<br />
7. /skins/html/ie/en_US/Control.jsp<br />
8. /skins/html/ie/en/Control.jsp<br />
9. /skins/html/ie/Control.jsp<br />
10. /skins/html/en_US/Control.jsp<br />
11. /skins/html/en/Control.jsp<br />
12. /skins/html/Control.jsp<br />
13. /skins/Control.jsp<br />
In this example, if the file is not found in the ../ie/en_US directory, the portal server looks for the file in<br />
the ../ie/en directory. The portal server keeps moving through this hierarchy until this file is found. If<br />
the file is required, it should at least exist in the /skins or /themes directory, with more specific versions<br />
of the file placed in the appropriate subdirectory.<br />
After a file is located by aggregation, the information is stored in memory. This search is not repeated for<br />
subsequent requests until the portal server is restarted. As a result, if a file is removed from its original<br />
location, the file can not be sent to the client on subsequent requests. For example, if aggregation finds<br />
and stores the location of /themes/html/ie/en/Styles.css, subsequent requests, from Internet Explorer<br />
with the language preferences set to English, are returned without the file rather than returning<br />
/themes/html/ie/Styles.css.<br />
Working with pages<br />
Read about the different tasks associated with the Manage Pages portlet.<br />
The Manage Pages portlet allows you to perform the following tasks:<br />
v Create, reorder, delete, and edit the properties of pages, labels, and URLs<br />
v Reorder pages, labels, and URLs<br />
v Assign access to pages, labels, and URLs<br />
v Move pages to a new location in the portal hierarchy<br />
Both administrators and users with appropriate access can create and delete pages. Users can only delete<br />
the pages they create or the pages for which they have at least <strong>Manager</strong> access.<br />
Note: When creating a URL Mapping or creating or modifying a page, make sure that URL Mappings<br />
and friendly URLs in your portal do not match, partially overlap, or otherwise interfere with each other.<br />
For example, do not use strings such as home, ibm, ibm.com, and do not use strings that have been used as<br />
URL Mappings or friendly URLs in your portal already. Otherwise infinite browser redirect loops might<br />
occur, sometimes without an error message. To determine such strings, create an export from your portal<br />
by using the XML configuration interface and scan the exported XML result output file for the string that<br />
you want to use for your URL Mapping or for your friendly URL.<br />
Pages, and shared, derived, and hidden pages<br />
Understanding the behavior and difference between shared pages derived pages, and hidden helps you<br />
manage pages and create the right type of page for your needs.<br />
A page is an organization element that defines how content is displayed. A page can contain portlets and<br />
other pages. Shared pages enable you to share a layout model with multiple pages. After a page is<br />
shared, other pages can reference the layout of the shared page. Derived pages are children of shared<br />
pages and have specific behavior you should be aware of.<br />
Derived pages inherit the properties of the original page. Creating a derived page is equivalent to<br />
creating a new, specialized layer on the original page. The original page and the new layer are aggregated<br />
together at rendering time. The new layer is contained within and controlled by the original page.<br />
Setting up a portal site 121
Referencing an existing page allows you to give administrative access to other users while maintaining<br />
the content and layout from the original page. The following implications apply to derived pages:<br />
v If content is locked on the page that is referenced, content is locked on all derived pages that reference<br />
that page.<br />
v If a portlet is deleted from the page that is referenced, the portlet is deleted from all pages that<br />
reference that page, and all individual user settings for that portlet are lost.<br />
v The user must have access to the original page to access the derived page. Therefore private pages<br />
cannot be shared in this manner.<br />
Changes made to the original parent page may be reflected to the derived pages that reference it. Layers<br />
can be created on other layers to create a chain of cascading pages, referred to as delegated page<br />
specialization. This process means that a root page can be created, and the top level administrator can<br />
decide the initial layout and content of the page. The next level administrator can then control and<br />
modify a specialized layer of this page, adding more content and layout. This process can continue down<br />
a chain of page managers and submanagers. <strong>Manager</strong>s or submanagers in the chain only see their<br />
individual layer of the chain; however, they must have the User role for every layer above theirs in order<br />
to see the content of the previous layers. A user is only able to see a layer of the page if appropriate<br />
access is given. Here are some examples to illustrate this concept.<br />
John, the superadministrator, creates a page named Home and titles it Home. Brandy, a subadministrator,<br />
manages the next level of this page, named Home_operations, and determines what additional content<br />
should be added to the Home page for employees in the operations group. Nick, the next level<br />
administrator, manages the next level of the Home page, Home_operations_transportation, and<br />
determines the content that should be available on the Home page for employees in the transportation<br />
department. Nick, as the transportation page administrator, must have the <strong>Manager</strong> role for<br />
Home_operations_transportation so that he can make changes to this page that will affect all users, as<br />
well as the User role for Home_operations and the User role for Home; he must have the User role on<br />
every layer that combines to create the Home_operations_transportation level. Desi, a user of the<br />
Home_operations_transportation page, must have the User role for Home_operations_transportation, and<br />
she must also have the User role for Home_operations and the User role for Home. When Desi, the user<br />
logs on to the portal, she sees one Home page. This Home page will be an aggregation of all the layers<br />
associated with the root Home page.<br />
Notes:<br />
v If you delete a page that is referenced by another page, all pages that reference that page are deleted.<br />
v The markup specified for the root page cannot be modified on derived pages. The whole derivation<br />
tree structure with all layers supports the markup that is specified on the root page.<br />
v The ability to change the title and description of derived pages can be disabled in the portal<br />
configuration. Refer to the description for the allow.derived.titles parameter in Portal configuration<br />
services for details.<br />
Hidden pages<br />
Some scenarios and use cases require pages that do not show in the portal, but contain portlets that can<br />
be launched from other pages. Such hidden pages do not appear in the site navigation, but are launched<br />
from generated links in portlets or theme code. For ease of administration and conserving system<br />
resources, you can place and manage such pages in one place. An example is the People Finder: users can<br />
launch it from a link in the theme, but the portlet instance itself is located on a hidden page in the<br />
content model.<br />
The easiest way to create a hidden page for such purposes is to create the page under the Hidden Pages<br />
label, which is a child of the content root. This label is hidden from the navigation. It is a container for<br />
hidden pages in the portal, and it minimizes the cycles required to render the top navigation links while<br />
still providing support for hidden pages.<br />
122 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
If you use legacy themes, be aware that they render the top navigation based on the level specified in<br />
theme policy or page metadata to render the navigation at the appropriate level. If you use such a theme<br />
and you create a new hidden page under the Hidden Pages label, set the metadata value<br />
com.ibm.portal.themepolicy.topNavigationStartLevel for the page to 3.<br />
Behavior of derived pages in combination with locks and changing access<br />
permissions<br />
Using and altering locks in conjunction with access permissions on the parent pages may result in<br />
changes on derived pages depending on the complexity of the derivation structure. The following<br />
scenario describes the behavior of derived pages.<br />
An administrator with the editor role creates a page with a two-column layout and places a portlet in<br />
each column. The blue arrows in the following figure indicate the child-to-parent relationship of the<br />
components of the page:<br />
Two column layout<br />
Then a user with an editor role creates an explicit derivation from this page (under Advanced Options,<br />
selects A page that uses content from a shared page) and adds two portlets to the explicitly derived<br />
page, one portlet in each column as indicated in the following figure:<br />
Two column four portlet layout<br />
Setting up a portal site 123
The red boxes around the two new controls indicate that these controls are on a new layer of the page.<br />
The original page content and the new layer together comprise the complete page.<br />
The user with an editor role creates a third column next to the two existing columns and moves all<br />
portlets to the new column. The new column exists on the layer of the derived page (red box); whereas,<br />
the original portlets are moved into the column through additional information (green arrows) as<br />
indicated in the following figure:<br />
Three column layout<br />
124 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Rendering the explicitly derived page shows all four portlets arranged vertically as shown in the<br />
previous picture.<br />
Next, the administrator locks all containers and portlets on the original page. This has no impact on the<br />
aggregated pages (original page and derived page). The administrator then removes the editor right from<br />
the user who created the derived page and assigns only privileged user permissions to that user.<br />
If this privileged user navigates to the derived page, the following issues occur:<br />
v The administrator set the locks on the original page, which enforces the layout of the original page for<br />
the derived page. Therefore, the information that causes the original portlets to be moved into the new<br />
column (the green arrows in the above figure) is deleted.<br />
v Due to the locks, the additions on the extra layer of the derived page (red boxes) are suppressed. The<br />
privileged user sees the derived page exactly as the original page.<br />
If the administrator reassigns editor permissions to the user for the derived page, the layout appears<br />
differently to the user from any of the stages of the derived page. The layer of additions to the derived<br />
page becomes visible again but the information about moving the original portlets has been deleted as<br />
indicated in the following figure:<br />
Three column layout with missing information about moving the portlets<br />
Setting up a portal site 125
The same principle applies to other layer scenarios in similar ways. Movement information of elements<br />
from the original page is deleted; whereas, actions on the layer of the derived page; for example adding<br />
portlets, rows, or columns; may persist after reassigning permissions as described above.<br />
Adding pages<br />
A page displays content, such as portlets and other pages, in a single area. By creating pages, you can<br />
organize your information and add new navigational elements to the site.<br />
You can create a new page under an existing page, reference an existing page, apply a layout, and select<br />
supported markups. For public pages, you must have the Administrator, <strong>Manager</strong>, or Editor role<br />
assignment. For private pages, you must have the Administrator or Privileged User role assignment.<br />
When you create a page, you always have the option to create a new page with a new layout. You can<br />
create a derived page to a derivation parent page if you have the Editor and Priviledged User role<br />
assignment. If you have Editor role on the derived page, you can change anything except markups. If<br />
you have Privileged User role on the derived page, you can change the title, skins, layout on derived<br />
page. For layout, this is restricted by the derivation parent page. If you reference an existing page, layout,<br />
supported markups, locks, skins, portlet list, and locale specific titles are predetermined by the existing<br />
page you reference. Any changes to the original page results in the same change to all pages that are<br />
referenced.<br />
When creating a new page, you can give it a title. All other settings are optional.<br />
To create a new page, perform the following steps:<br />
1. Click Administration > Manage Pages.<br />
2. Click <strong>Content</strong> Root.<br />
3. Click Home, or navigate to another section of the portal where you want to create a new page.<br />
4. Click New Page to create a new page. You will leave the Manage Pages portlet to create the new<br />
page.<br />
5. Type the title of the new page in Title. This is the title for the default locale.<br />
126 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
6. Type the unique name of the page in Unique Name. If you specify a unique name that is already<br />
associated with an existing page, the new page will not be created with the specified unique name,<br />
but with a serialized identifier, which is provided by system default.<br />
7. Type a unique URL in Friendly URL name. This creates a custom address for your page that is easy<br />
to remember and share.<br />
Note: When creating a URL Mapping or creating or modifying a page, make sure that URL<br />
Mappings and friendly URLs in your portal do not match, partially overlap, or otherwise interfere<br />
with each other. For example, do not use strings such as home, ibm, ibm.com, and do not use strings<br />
that have been used as URL Mappings or friendly URLs in your portal already. Otherwise infinite<br />
browser redirect loops might occur, sometimes without an error message. To determine such strings,<br />
create an export from your portal by using the XML configuration interface and scan the exported<br />
XML result output file for the string that you want to use for your URL Mapping or for your<br />
friendly URL.<br />
8. Select a Theme to determine the look of the new page. This option is available only on a level 1 or 2<br />
page.<br />
9. Select a Theme Style to select a style to apply to the page.<br />
Note: This field is only visible if the selected theme can be customized with a theme policy.<br />
10. In the Icon field, enter a path and filename for a page icon to be displayed in the tab beside the<br />
page title. The path for this image must be relative to the current theme.<br />
11. Select I want to make this page my private page to restrict access to the page by other users.<br />
12. If you want to allow other users to bookmark this page, check This page can be added to a user's<br />
My favorites list. If a user bookmarks this page, it will be available from My favorites in the banner.<br />
13. Check Other pages can share the contents of this page if you want the contents of this page to be<br />
shared by others. If checked, users can reference this page when they create a new page.<br />
14. For Type of Page, Select one of the following:<br />
Standard Portal Layout<br />
Select this option to create a page with a layout that is predefined by portal.<br />
Static Layout<br />
You can select this option to create the page layout using a markup file.<br />
Note: Use Page Builder to create and edit pages with static layout. The Edit Layout portlet<br />
might not display static layout containers as expected.<br />
Note: Pages created with the Page Builder theme are a special type of static layout that reference a<br />
layout template in the <strong>Web</strong>DAV file store. See Creating a Static Page for more information about<br />
setting the static page layout properties.<br />
15. For Page Cache Options, select one of the following:<br />
Cache scope<br />
If the page is shared among multiple users, selecting Shared cache across users provides the<br />
best performance.<br />
Cache Expiration<br />
Use this option to set how long, in seconds, the cache is used. Selecting Cache never expires<br />
means that content will always be retrieved from the cache.<br />
Cache Access Control<br />
By default, the portal does not permit shared caching for authenticated pages. Checking<br />
Ignore access control in caches overrides this behavior. However, this could allow an<br />
anonymous and potentially malicious user to access secure content from that page.<br />
16. Click OK to save these settings for the new page and add new content. Click Cancel if you want to<br />
return to Manage Pages without creating the new page.<br />
Setting up a portal site 127
Creating shared pages<br />
Use the Manage Pages portlet to set up the original page to be shared.<br />
1. Log in to the portal as an administrator.<br />
2. Click Administration.<br />
3. In the navigation tree, click Portal User Interface, then Manage Pages. The nodes belonging to the<br />
currently selected node are displayed.<br />
4. Open the Manage Pages portlet.<br />
5. Locate the original page to be referenced.<br />
6. Click the Edit Page Properties icon.<br />
7. Expand the Page Properties field.<br />
8. Make sure Other pages can share the contents of this page is selected.<br />
9. Click OK.<br />
Creating derived pages<br />
A page can be set to reference an existing page only during page creation.<br />
Wires created on a root page do not apply to derived pages that you create by referencing the root page.<br />
While such pages do inherit the content of the original page, this inheritance does not apply to wires; you<br />
have to explicitly create the wires for the derived page. Follow these steps to create and manage a<br />
derived page:<br />
1. When creating a page using the Manage Pages portlet, expand the Type of Page section.<br />
2. Click Set page layout properties and make sure that Standard Portal Layout is selected.<br />
3. Select A page that uses content from a shared page. You only see this option if you have another<br />
page in your portal that has "other pages can share the contents of this page" enabled.<br />
4. Select the parent page from the drop-down list and click OK.<br />
5. When you are finished setting other page properties, click OK.<br />
Creating page templates<br />
To simplify the creation of pages, define pre-configured pages that can be used as templates when<br />
creating new pages.<br />
You can configure a template page like any portal page and add pre-configured portlets. Whenever a new<br />
page is created from the template, the page layout, portlets, and portlet configuration from the template<br />
are copied to the new page.<br />
Important: When a new page is created from a template, no reference to the template page used to create<br />
the page is maintained. This means that all changes that you apply to a template page after pages have<br />
been created from this template are not propagated to any of the pages that already exist.<br />
1. Click Administration > Manage Pages.<br />
2. Click <strong>Content</strong> Root > Administration > <strong>Web</strong>Sphere Portal > Portal User Interface > Page Templates.<br />
Note: Virtual portals do not include the Page Templates label by default. However you can add the<br />
label manually. When doing so, ensure that you give the label the unique name of<br />
wps.content.template.root.<br />
3. Create the page to be used as a template by clicking New Page or New Page from.<br />
v New Page creates a standard portal page. Specify a title for the page and any other page<br />
characteristics, as you would for a standard portal page.<br />
v New Page from creates a <strong>Web</strong> content page or creates a standard page from a template. Specify a<br />
title for the page and any other page characteristics. If you are creating a <strong>Web</strong> content page<br />
128 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
template, select the content to be displayed from a <strong>Web</strong> content library. If you are creating a<br />
standard portal page template from another template, select the existing template to use for the<br />
new template.<br />
4. Save the new template.<br />
5. Click the Edit Page Layout icon (small pencil) for the new page template.<br />
6. Add and configure any portlets you want to display on the page by default.<br />
7. Save your changes.<br />
Related tasks:<br />
“Creating pages from a page template”<br />
Create new pages quickly by using a page template. Pages created from page templates contain<br />
pre-configured portlets and settings.<br />
Creating pages from a page template<br />
Create new pages quickly by using a page template. Pages created from page templates contain<br />
pre-configured portlets and settings.<br />
1. Click Administration > Manage Pages.<br />
2. Click <strong>Content</strong> Root.<br />
3. Click Home, or navigate to another section of the portal where you want to create a new page.<br />
4. Click New Page from.<br />
5. Type the title of the new page in Title. This is the title for the default locale.<br />
6. Type a unique URL in Friendly URL. This creates a custom address for your page that is easy to<br />
remember and share.<br />
Note: When creating a URL Mapping or creating or modifying a page, make sure that URL<br />
Mappings and friendly URLs in your portal do not match, partially overlap, or otherwise interfere<br />
with each other. For example, do not use strings such as home, ibm, ibm.com, and do not use strings<br />
that have been used as URL Mappings or friendly URLs in your portal already. Otherwise infinite<br />
browser redirect loops might occur, sometimes without an error message. To determine such strings,<br />
create an export from your portal by using the XML configuration interface and scan the exported<br />
XML result output file for the string that you want to use for your URL Mapping or for your<br />
friendly URL.<br />
7. Select I want to make this page my private page to restrict access to the page by other users.<br />
8. In the Page Template section, select the page template you want to use for the new page from the<br />
list of available templates.<br />
Note: If you are creating a public page, you must have at least Editor role access to the template<br />
page you are using.<br />
9. Skip the <strong>Web</strong> <strong>Content</strong> section.<br />
10. Click OK to create the new page.<br />
Related tasks:<br />
“Creating page templates” on page 128<br />
To simplify the creation of pages, define pre-configured pages that can be used as templates when<br />
creating new pages.<br />
Working with Page Builder<br />
Page creation and customization is easier than ever before. You can create a page with a single click by<br />
using the Page Builder theme. Users can use the portal Page Builder feature to quickly and easily create,<br />
customize, and share pages with teammates and community members. They can add content to these<br />
pages using a variety of sources made available on the content catalog, such as portal portlets and shared<br />
Setting up a portal site 129
pages. Other custom content sources that you can configure include <strong>IBM</strong> Mashup Center feeds, widgets,<br />
and pages, and <strong>IBM</strong> <strong>Lotus</strong> Connections activities, communities, and social bookmarks.<br />
In previous portal versions, the process of customizing a page involved multiple user actions which<br />
involved many pages and portlets to perform regular tasks such as adding content, changing the layout<br />
and appearance of a page. Page Builder brings these capabilities to the forefront of a user's authoring<br />
experience, as it streamlines the process of modifying a page via editing tools found directly on a page<br />
instead of through alternative dialogs on disparate pages. To enable these new customization features, the<br />
user can go into Edit mode by clicking Actions > Edit Page from the page header.<br />
On pages with the Page Builder theme you can create pages and change the layout of pages. Use the<br />
Customize button to add content or change the style and layout of the current page. Select from a<br />
predefined list of styles and layouts. Use the Actions link in the page header for other options. You can<br />
also share pages that you created or customized with other users. To create new pages, click the New<br />
Page link in the navigation.<br />
Key benefits to the Page Builder features include:<br />
v WYSIWYG-style page editing tools<br />
v <strong>Web</strong> 2.0 dynamics<br />
v Performance improvements through fewer server requests<br />
v User oriented interface.<br />
Page Builder is available out-of-the-box in the Page Buildertheme. You can also add it to your own<br />
custom portal theme, as the components are modular widgets that can be consumed directly.<br />
Once you have created portal pages and added portlets, feeds, widgets, and social elements for<br />
teamwork, such as activities, communities, social bookmarks, you can change the style of pages by<br />
applying a lightweight theme. You can change the layout of pages by using a template or drag and drop<br />
components within a page. You can also search users and groups to share pages with and assign user<br />
access to view and edit pages. Users with whom a page has been shared can access the page by using the<br />
Share menu on the place bar below the page tabs. Users of shared pages can bookmark the friendly<br />
URLs of pages. You can manage portal content by managing shared pages and the portlets, feeds,<br />
widgets, and social components that they contain.<br />
Determine which method of working with pages you want to use at your site, Page Builder or the<br />
conventional page management.<br />
v Page Builder: Use Page Builder to create portal pages containing portlets, feeds and social components<br />
that you add from the content catalog. You can also create mashup pages containing widgets. You can<br />
customize pages that you created by the following actions:<br />
Add <strong>Content</strong><br />
Change Style<br />
Change Layout<br />
To perform these tasks, you click the Customize button.<br />
v Portal administration: For conventional page management and customization you can use the<br />
administration portlets available from the portal administration:<br />
Manage Pages<br />
Themes and Skins<br />
Theme Customizer<br />
Site Management<br />
Note: The Page Builder theme does not use side navigation and does not recognize theme styles.<br />
130 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related concepts:<br />
“Designing a site using Page Builder themes and skins” on page 178<br />
<strong>IBM</strong> <strong>Web</strong>Sphere Portal Version 7.0 introduces a page and theme architecture that allows you to mix<br />
iWidgets and portlets on the same portal page and take advantage of both client side and server side<br />
rendering mode. This can simplify creating and editing themes for you.<br />
Creating top level page tabs<br />
Before you can create children pages, you need to create a top level page tab. Only the page title and<br />
privacy mode of the page can be customized from this dialog.<br />
To do this, proceed as follows:<br />
1. Create a new top level page tab by clicking the New Page link next to the existing page tabs.<br />
2. Type a title into the input box that is shown.<br />
3. Press the Enter key, or click off the input box to create the tab.<br />
Once you have created a tab, you can create child pages.<br />
Moving page tabs<br />
You can move page tabs to other locations.<br />
Complete the following steps to move the page tabs:<br />
1. Select Actions > Edit Page.<br />
2. Click and drag the page tab by the dotted handle on its side.<br />
3. Drag the tab to its required location either among the other tabs, or hover over another tab to reveal<br />
its children and drag the tab down into the menu to become a child.<br />
Note: You cannot move public pages to become children of private pages. If you try this, the status<br />
bar of the Page Builder theme displays an error.<br />
Creating child pages<br />
You can create a new child page under an existing page. Only the page title, friendly URL name and<br />
privacy mode of the page can be customized from this dialog.<br />
To do this, use the New child page... option from the Actions menu in the Page Builder theme.<br />
Once you have created a page, you can perform the following actions:<br />
v Add content<br />
v Change appearance<br />
v Change layout<br />
v Edit page<br />
v Share page<br />
v Publish page<br />
Moving child pages<br />
You can move child pages to other locations.<br />
Complete the following steps to move child pages:<br />
1. Select Actions > Edit Page.<br />
2. Click the page and drag it by the dotted handle on its side.<br />
Setting up a portal site 131
3. Drag the child page to its required location among its sibling pages, or among the child pages of<br />
another tab, or to the top tab level.<br />
Adding content<br />
Add content to a page by selecting a portlet for portal pages or a widget for mashup pages from the<br />
content source: Create, All, Administration, Collaboration, Tools.<br />
To add content, proceed as follows:<br />
1. Select Actions > Edit Page.<br />
2. Click the Customize button on the toolbar to open the content catalog.<br />
3. Select a category from the menu on the side.<br />
4. Filter the results displayed by typing space separated search strings into the input box near the upper<br />
corner. The portal connects the space separated search terms by AND. Example: If you search for login<br />
search, the result list shows all terms that contain both login and search in their titles or<br />
descriptions. You cannot filter the results by connecting search strings by OR.<br />
Note: Some of the categories on the left are not searchable because underlying tagging feeds are not<br />
searchable.<br />
5. Page through the content by using the Previous and Next links or the Jump to page ___ input<br />
underneath the search results.<br />
6. To see more information about a particular piece of content, click the title to view a popup dialog that<br />
details the item.<br />
7. Add an item to the page using drag an drop, by clicking the Add to Page button on the details dialog<br />
or the plus ( + ) icon to the side of the title in the list of results. If an item has more than one<br />
renderer, a dialog pops up with a drop-down box of choices; select a choice to render the content and<br />
click the Add button. A placeholder appears on your page. It contains the title of the new content.<br />
8. To save and view newly added items, click the Save button. This synchronizes the page area so that<br />
you can see all content.<br />
Note: Saving the page after adding content results in a full page refresh to render the new content<br />
added to the page on server side pages.<br />
9. Rearrange the page by dragging and dropping the pieces of content as required.<br />
<strong>Content</strong> sources<br />
When you create a page in the portal, you can customize page content from several content categories.<br />
The following content categories are available for customizing your portal pages:<br />
v Create<br />
– Feed - Use this option to add new feeds to your pages.<br />
– Blog (if you have <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> installed) - Use this option to add a new Blog to your<br />
pages<br />
– Blog Library (if you have <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> installed) - Use this option to add a new Blog<br />
library to your pages.<br />
– Wiki (if you have <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> installed) - Use this option to add a Wiki to your pages.<br />
v All - contains all portlets installed on the system.<br />
v Administration - contains all portlets tagged as Administration Portlets.<br />
v Collaboration - contains all portlets tagged as collaboration Tools.<br />
v Tools - contains all portlets tagged as tools.<br />
Note: You can use XML access to add and remove tags on installed portlets to affect the last three<br />
categories.<br />
132 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
For instructions about customizing your portal pages, refer to Adding content.<br />
Related tasks:<br />
“Adding a custom content source”<br />
You can also add your own custom content.<br />
Adding a custom content source<br />
You can also add your own custom content.<br />
To do this, proceed by the steps given in the following.<br />
Note: These instructions are intended for adminstrators and require basic javascript, json and dojo<br />
knowledge.<br />
1. Choose a content source with REST feeds containing items that can be added to a page.<br />
2. Create a data store for the source that complies with the Dojo Read API. If the source is in JSON<br />
format, extend the dojo.data.ItemFileReadStore or com.ibm.data.JsonStore.<br />
3. Extend the data store by subclassing com.ibm.portal.data.CatalogMixin. This includes the mapItem<br />
and prepareQuery functions that allow the Add <strong>Content</strong> widget to search and access all of the sources<br />
uniformly. Refer to the following descriptions to learn more about the mapItem and prepareQuery<br />
functions:<br />
mapItem<br />
Returns a map that contains parameters for a given data store item. The following map keys<br />
are single strings: label, description, rating, url, thumbnail, and id. The map key tags is an<br />
array of strings. When all of the data stores create item maps with the same keys, widgets can<br />
uniformly access information across all sources. If a data store does not have an appropriate<br />
attribute for one of the keys, the map entry can be omitted or a static default value can be<br />
substituted. You can also add custom attributes that you need for step 4 to the map.<br />
Example: This data store item has the title, summary, rating, and identifier attributes:<br />
mapItem: function(/*DatastoreItem*/ item) {<br />
// does not include the "tags", "thumbnail", and "url" keys<br />
var map = {};<br />
map["label"] = this.getValue(item, "title", "untitled");<br />
map["description"] = this.getValue(item, "summary", "");<br />
map["rating"] = this.getValue(item, "rating", 0);<br />
map["id"] = this.getValue(item, "identifier", "");<br />
return map;<br />
}<br />
prepareQuery<br />
Provides an extension point to modify the keywordArgs object used in<br />
dojo.data.api.Read.fetch so its query parameters can be used to create the feed url. It is<br />
called after keywordArgs.query has been normalized to an object map but before any other<br />
processing has taken place to build the url. Any other items in the query parameter are<br />
appended to the feed url in the form (|&)key1=value1&key2=value2&key3=value3=value3.<br />
Extracts other parts of the keywordsArgs map to add properties to the query object that are<br />
dependent on the back end implementation of the feed. Properties of keywordArgs.query that<br />
are not part of the URL should be deleted.<br />
Example: See how the prepareQuery function is used when a feed URL has the searchTerms,<br />
startIndex, and count parameters:<br />
prepareQuery: function(/*Object*/ keywordArgs) {<br />
if(keywordArgs.query.keywords){<br />
// searchTerms is a comma separated list of search parameters<br />
keywordArgs.query.searchTerms = keywordArgs.query.keywords.join(",");<br />
delete keywordArgs.query.keywords;<br />
}<br />
if(keywordArgs.count){<br />
Setting up a portal site 133
keywordArgs.query.count = keywordArgs.count;<br />
if(keywordArgs.start == null){<br />
keywordArgs.start = 0;<br />
}<br />
keywordArgs.query.startIndex = keywordArgs.start;<br />
}<br />
}<br />
In this example, if the keywordArgs.query.keywords had a value of<br />
["term1","term2","term3"], keywordArgs.count has a value of 12, and keywordArgs.start had<br />
a value of 3, the result is a URL like: http://baseURLsearchTerms=term1,term2,term3<br />
&count=12&startIndex=3.<br />
4. Determine what will be used to render a piece of content from the data store. For each renderer, write<br />
a short function that takes an item map returned by the mapItem function, from<br />
com.ibm.portal.data.CatalogMixin and returns a map of preferences that the renderer can use to<br />
display the content. For example, this function creates the preference map for the Feed Reader portlet:<br />
feedReader: function(/*Object*/itemMap){<br />
var map = {};<br />
map["FeedReaderPortlet_feedURL"] = itemMap.url.replace(/&/g,"&");<br />
map["FeedReaderPortlet_feedName"] = itemMap.label;<br />
map["FeedReaderPortlet_feedActionPane"] = "false";<br />
return map; }<br />
These functions are accessed by the Add <strong>Content</strong> widget using the dojo.getObject(String) function.<br />
You need to verify that these functions are available in the theme. If you do not provide any<br />
renderers, each item from the source is assumed to be a renderer itself and will be added to the page<br />
directly. An example of this type of content are the portlets that are configured in the Add <strong>Content</strong><br />
widget out of the box.<br />
5. To register a new source with the Add <strong>Content</strong> widget, edit the add<strong>Content</strong>.json and<br />
add<strong>Content</strong>_wcm.json files located in <strong>Web</strong>DAV at dav/fs-type1/themes/PageBuilder2/system/ . Add<br />
this JSON to the categories array in the file:<br />
{<br />
"label":"your_category_name",<br />
"searchStr":"Search your_category_name","datastore":"your.Datastore.Name",<br />
"url":"base_url_to_your_source_REST_service",<br />
"renderers":[{"id":"renderer_unique_id","label":"renderer_name",<br />
"fcn":"renderer.prefMapper.fcn.name"},<br />
{"id":"another_renderer_unique_id","label":"renderer_name",<br />
"fcn":"another.renderer.prefMapper.fcn.name"}]<br />
}<br />
Example of a category containing all portlet definitions tagged with "myShelfCategoryTag":<br />
{<br />
"label":"My category with tags",<br />
"searchStr":"Search my category with tags",<br />
"datastore":"com.ibm.pb.data.TaggedItemStore",<br />
"url":ibmPortalConfig.contentHandlerURI + "rm/emptytmparam=tm%3aname%3amyShelfCategoryTag",<br />
"renderers":[]<br />
}<br />
The label and search string for the category are two separate attributes. The label shows up in the list<br />
of categories on the side of the shelf. The search string shows up as text in the search box. They are<br />
two separate strings, because simply concatenating “Search” and the label does not work correctly in<br />
all languages. If translation is not an issue, you can leave the searchStr attribute out of the category<br />
definition. In this case concatenation is used.<br />
6. Decide whether you want to nationalize the category, source, and renderer display strings provided<br />
in the json file. To do this, the json files must provide a localizationPackageName and a<br />
localizationBundleName like so:<br />
134 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
{<br />
localizationPackageName:’bundle object notation’,<br />
localizationBundleName:’bundle name’,<br />
categories:[category array]<br />
}<br />
These will be used by dojo.i18n to provide localized strings by creating bundles with<br />
dojo.i18n.getLocalization("bundle object notation", "bundle name") . If there is already a bundle<br />
provided in the json file, add to it the keys and values needed. Otherwise, create a new bundle. To<br />
use the new keys, they must be provided in the json file in place of the display strings. The widgets<br />
will automatically pull the value out of the bundle for each key. Here is an example of a completed<br />
json file with the keys highlighted:<br />
{<br />
localizationPackageName:"com.ibm.bundles", localizationBundleName:"Shelf",<br />
categories:[<br />
{<br />
"label":"new_createCategory",<br />
"searchStr":"shelf_searchCreate",<br />
"datastore":"com.ibm.data.JsonStore",<br />
"url":ibmCfg.themeConfig.themeRootURI+"/system/new.json",<br />
"renderers":[]<br />
},<br />
{<br />
"label":"shelf_all",<br />
"searchStr":"shelf_searchAll",<br />
"datastore":"com.ibm.portal.data.InstalledPortletStore",<br />
"url":ibmPortalConfig.contentHandlerURI +<br />
"pdl/addable:oid:"+com.ibm.mashups.enabler.navigation.Factory.getNavigationModel().<br />
find(com.ibm.mashups.builder.model.Factory.getRuntimeModel().getCurrentPage()<br />
.getID()).start().get<strong>Content</strong>().start().getID()+"rep=compact",<br />
"idPrefix":"pm:oid:",<br />
"renderers":[]<br />
},<br />
{<br />
"label":"My Category",<br />
"searchStr":"Search my Category",<br />
"datastore":"com.ibm.pb.data.TaggedItemStore",<br />
"url":ibmPortalConfig.contentHandlerURI + "rm/emptytmparam=tm%3aname%3amyCategoryTag",<br />
"renderers":[]<br />
}<br />
]<br />
}<br />
7. To pick up the new files, refresh your browser cache.<br />
8. Verify that the custom source has been added.<br />
Related concepts:<br />
“<strong>Content</strong> sources” on page 132<br />
When you create a page in the portal, you can customize page content from several content categories.<br />
Adding other custom content<br />
You can also add other content to a page. You can add a source of content by creating a new category<br />
and tagging portlets with that new category.<br />
For example, you can add <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content or feed readers to a page, by using the<br />
appropriate category. Both of these require extra work before you add them to the page. To do this,<br />
proceed by the steps given in the following.<br />
Note: These instructions are intended for administrators and require basic javascript, json and dojo<br />
knowledge.<br />
Setting up a portal site 135
1. Add a new category to the json file as described in the procedure for Adding a custom source. Use<br />
the com.ibm.data.JsonStore data store and omit the proxy and array of renderers. The URL should<br />
point to another json file that provides the items in the store. An example of an entry looks like this:<br />
{<br />
"label":"your_Category_Name",<br />
"searchStr":"Search your_Category_Name",<br />
"datastore":"com.ibm.data.JsonStore",<br />
"url":pathToTheJsonFileWithTheDatastoreItems.json",<br />
"renderers":[]<br />
}<br />
2. Create the json file to hold the items that will show up under the new category in the Add <strong>Content</strong><br />
widget. The json object in the file must contain an items array and optionally the strings required for<br />
a language support bundle. Example:<br />
{ localizationPackageName:’com.ibm.bundles’, localizationBundleName:’Customize’,<br />
identifier:’label’, items: [<br />
{’label’:’wcm_blog’,context:’/Blog/Home’,<br />
’takeover’:’com.ibm.customize.Add<strong>Content</strong>Controller.newWCM’,<br />
’description’:’new_wcm_blogDescription’},<br />
{’label’:’wcm_blogLibrary’,context:’/Blog/Central’,<br />
’takeover’:’com.ibm.customize.Add<strong>Content</strong>Controller.newWCM’,<br />
’description’:’new_wcm_blogLibraryDescription’},<br />
{’label’:’wcm_wiki’,context:’/Wiki Central/Home’,<br />
’takeover’:’com.ibm.customize.Add<strong>Content</strong>Controller.newWCM’,<br />
’description’:’new_wcm_wikiDescription’},<br />
{’label’:’new_feed’,<br />
’takeover’:’com.ibm.customize.Add<strong>Content</strong>Controller.newFeed’,<br />
’description’:’new_wcm_feedDescription’}<br />
]<br />
}<br />
All the items in the example above have labels and descriptions that the Add <strong>Content</strong> widget can<br />
display. You can also add other required attributes to the item objects, such as the "context" attribute<br />
used by the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items above. Each item also must have a "takeover" attribute<br />
which is the name of a function in dot notation. This function is called when a user clicks to add the<br />
item. The function is called with one argument which is an object. thisObject.hub is a reference to the<br />
data store, and thisObject.item is a reference to the item in the data store. None of the usual<br />
functionality for adding content to a page will run.<br />
Changing page style<br />
Change the appearance of a page by selecting a style from the list of predefined themes. When you select<br />
a theme, it is previewed on the page. You can add custom styles to the list of page themes that are<br />
available for selection.<br />
To change the appearance of a page, proceed as follows:<br />
1. Click the Customize button on the toolbar to open the content catalog.<br />
2. Navigate to the Change Style tab.<br />
3. Select a category from the menu on the side.<br />
4. Filter down the results displayed by typing space separated search terms into the input box near the<br />
upper corner.<br />
5. Page through the content by using the Previous and Next links or the Jump to page ___ input<br />
underneath the search results.<br />
6. To preview a style, click that style.<br />
7. To commit a style change to the server, click the Save button.<br />
8. Close the shelf by clicking the Customize button or by clicking the Edit mode toggle button to return<br />
to View mode.<br />
136 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Note: The default style available in the default portal installation resets the page to have no custom style<br />
sheet applied. Therefore a page that has the default style applied simply inherits the styles applied to its<br />
ancestor pages.<br />
Related tasks:<br />
“Adding a custom style”<br />
You can also add your own custom style.<br />
Adding a custom style<br />
You can also add your own custom style.<br />
To do this, proceed as follows:<br />
1. Create an alternate set of Cascading Style Sheet (.css) files for the theme. Use the styles that the<br />
portal provides in <strong>Web</strong>DAV at dav/fs-type1/themes/PageBuilder2/css/gold as a guide.<br />
2. Add a folder in <strong>Web</strong>DAV at dav/fs-type1/themes/PageBuilder2/css/ .<br />
3. Save the CSS and resources for the new style there.<br />
4. Open the file in <strong>Web</strong>DAV at dav/fs-type1/themes/PageBuilder2/system/styles.json .<br />
5. Register the style by adding an entry to the items array in the following format:<br />
{’label’:’display_name_for_the_style’,<br />
’id’:’path_to_the_stylesheet_relative_to_theme_folder_in_webdav’,<br />
’thumbnail’:’path_to_the_thumbnail_for_the_style’,<br />
’help’:’short_description_for_the_style’}<br />
Example:<br />
{’label’:’change_style_gold’,’id’:’gold.css’,’url’:’css/gold/gold.css’,<br />
’thumbnail’:ibmCfg.themeConfig.themeRootURI+’/images/changeStyle/goldThumb.gif’,<br />
’help’:’’}<br />
The display name shows in the Customize shelf. The name of the style sheet is used as its ID. The<br />
path should be relative to the folder in <strong>Web</strong>DAV. The json object in the file styles.json contains two<br />
attributes that are used for globalizing the style display strings localizationPackageName and<br />
localizationBundleName. These are used by dojo.i18n to provide localized strings by creating bundles<br />
with dojo.i18n.getLocalization("localizationPackageName", "localizationBundleName") .Ifyou<br />
choose to globalize the display name of your new style, add a new key to the bundle and replace the<br />
label value in the json with the key name. The customize shelf will automatically look up the display<br />
name in the bundle using the key.<br />
The steps above add the new style to the default All category under Change Style in the Customize<br />
shelf.<br />
6. To add a new category, edit the file in <strong>Web</strong>DAV at dav/fs-type1/themes/PageBuilder2/system/<br />
changeStyle.json and add another item to the categories array in the json object. Example:<br />
{<br />
"label":"My new category",<br />
"searchStr":"Search my new category",<br />
"datastore":"com.ibm.data.JsonStore",<br />
"url":”path_to_your_styles_json_file"<br />
}<br />
where the attribute url is the path to a json file that contains the style entries for the new category.<br />
Model this json file after the one in <strong>Web</strong>DAV at dav/fs-type1/themes/PageBuilder2/system/<br />
styles.json .<br />
7. Verify that your custom style has been added to the Customize area.<br />
Modifying a custom style by using page metadata<br />
Learn how to modify the Page Builder styles to get the look you want by using page metadata.<br />
Setting up a portal site 137
Page Builder CSS style sheets should not be edited directly, since these changes might be lost during a fix<br />
pack upgrade. Instead, Page Builder CSS can be overridden in a new style sheet belonging to your<br />
custom theme.<br />
See Page builder CSS for more information about the Page Builder style sheets<br />
1. Create a style sheet<br />
a. Open your theme styles in <strong>Web</strong>DAV by going to dav:fs-type1/themes//css/<br />
b. Create a folder: dav:fs-type1/themes//css/custom/<br />
c. Create a CSS file under the custom folder: dav:fs-type1/themes//css/custom/<br />
custom.css<br />
2. Write the new styles<br />
a. Open a Portal page that has your theme applied<br />
b. Use a tool like Firebug to select and inspect the style rules you want to change<br />
c. Type the style rules you want to change into the custom style sheet<br />
3. Apply the custom style sheet to your pages<br />
a. Figure out the root page for the area on which you want to apply the custom style. To apply to<br />
the entire site, choose the <strong>Content</strong> Root.<br />
b. Add metadata with a key of colorPalette and a value of css/custom/custom.css to the root<br />
4. Using Firebug to inspect CSS<br />
a. Open the Firebug plug-in in a Firefox browser<br />
b. Click the element selection icon in the Firebug menu bar<br />
c. Click the area on the page you want to change<br />
d. Double check that the correct area is selected in the HTML tab on the left<br />
e. Look at the Style tab on the right to inspect all the CSS applied to the HTML element<br />
f. Edit the CSS in the Style tab until the HTML element looks how you want<br />
g. Copy the CSS you changed in the Style tab into the custom style sheet<br />
Custom style example<br />
Change the banner from white text on a black background, to black text on a white background.<br />
1. Use firebug to select the banner.<br />
2. Look at the Style tab to see that the lotusBanner CSS class assigns a black background-color and a<br />
background-image:<br />
.lotusBanner {<br />
background-color: #000000;<br />
background-image: -moz-linear-gradient(center top , #525252 0%, #000000 100%);<br />
}<br />
3. Change the style to white and add it to custom.css.<br />
.lotusBanner {<br />
background-color: #FFFFFF;<br />
background-image: -moz-linear-gradient(center top , #EEEEEE 0%, #FFFFFF 100%);<br />
}<br />
4. Use firebug to select the logo.<br />
.lotusui .lotusLogo, .lotusLoginLogo {<br />
background-image: url("../images/portalLogoWhiteText.png") !important;<br />
}<br />
5. Change to use a black logo and add it to custom.css.<br />
.lotusui .lotusLogo, .lotusLoginLogo {<br />
background-image: url("images/portalLogoBlackText.png") !important;<br />
}<br />
6. Select a navigation link.<br />
138 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
.lotusBanner ul.lotusInlinelist li a, .lotusBanner ul li span.lotusUser {<br />
color: #EEEEEE;<br />
}<br />
7. Change the link color to black and add it to custom.css.<br />
.lotusBanner ul.lotusInlinelist li a, .lotusBanner ul li span.lotusUser {<br />
color: #000000;<br />
}<br />
8. Click the Style tab dropdown in Firebug and select :hover to show the styles that apply to the links<br />
when a mouse is hovering over them.<br />
.lotusBanner ul.lotusLinks a, .lotusBanner ul.lotusLinks a:visited, .lotusBanner ul.lotuslinks a:active, .lotusBanne<br />
color: #EEEEEE;<br />
}<br />
9. Change the :hover link color to black and add it to custom.css.<br />
.lotusBanner ul.lotusLinks a, .lotusBanner ul.lotusLinks a:visited, .lotusBanner ul.lotusLinks a:active, .lotusBanne<br />
color: #000000;<br />
}<br />
10. Select the Log Out link and look at the :hover style.<br />
.lotusBanner ul.lotusUtility a, .lotusBanner ul.lotusUtility a:visited, .lotusBanner ul.lotusUtility a:active, .lotu<br />
color: #EEEEEE;<br />
}<br />
11. Change the :hover link color to black and add it to custom.css.<br />
.lotusBanner ul.lotusUtility a, .lotusBanner ul.lotusUtility a:visited, .lotusBanner ul.lotusUtility a:active, .lotu<br />
color: #000000;<br />
}<br />
All together, custom.css looks like the following sample:<br />
.lotusBanner {<br />
background-color: #FFFFFF;<br />
background-image: -moz-linear-gradient(center top , #eee 0%, #FFFFFF 100%);<br />
}<br />
.lotusui .lotusLogo, .lotusLoginLogo {<br />
background-image: url("../images/portalLogoBlackText.png") !important;<br />
}<br />
.lotusBanner ul.lotusInlinelist li a, .lotusBanner ul li span.lotusUser,<br />
.lotusBanner ul.lotusLinks a, .lotusBanner ul.lotusLinks a:visited, .lotusBanner ul.lotusLinks a:active, .lotusBanne<br />
.lotusBanner ul.lotusUtility a, .lotusBanner ul.lotusUtility a:visited, .lotusBanner ul.lotusUtility a:active, .lotu<br />
color: #000000;<br />
}<br />
Using the Change Style shelf<br />
You can configure the Change Style shelf to have your override style sheet show up as a choice. See<br />
Adding a custom style: wp7 and follow steps 4 and 5:<br />
{’label’:’Custom’,’id’:’customc.css’,’url’:’css/custom/custom.css’, ’thumbnail’:ibmCfg.themeConfig.themeRootURI+’/images/<br />
Related concepts:<br />
“The Page Builder CSS” on page 191<br />
Discusses the use and location of the CSS files used for the Page Builder theme.<br />
Changing page layout<br />
You can select a page layout from a list of predefined formats. Portlets and widgets are automatically<br />
positioned into the new layout. You can add custom layouts that you define to the list of page formats<br />
available for selection. Use drag-and-drop to move portlets around within the new layout.<br />
Note: Page Builder does not support locked containers.<br />
To change the layout of a page, proceed as follows:<br />
1. Select Actions > Edit Page.<br />
Setting up a portal site 139
2. Click the Customize button on the toolbar to open the content catalog.<br />
3. Navigate to the Change Layout tab.<br />
4. Select a category from the menu on the side.<br />
5. Filter the results displayed by typing space separated search terms into the input box near the upper<br />
corner.<br />
6. Page through the content using the Previous and Next links or the Jump to page ___ input<br />
underneath the search results.<br />
7. To select a layout, click that layout. No changes will occur on the browser at this time.<br />
8. To commit a layout change to the server, click the Save button. The page automatically refreshes to<br />
render a layout change.<br />
Adding a custom layout<br />
You can also add your own custom layouts.<br />
To do this, proceed as follows:<br />
1. Create a new folder for your layout resources. Each layout has an icon, a layout.html static page<br />
layout template, a metadata.properties file, and localization properties files for each supported<br />
language. The HTML template follows the portal static page format. For details about this refer to the<br />
topic about Creating static content for your portal. The file metadata.properties holds a property for<br />
the thumbnail path relative to the <strong>Web</strong>DAV filesystem. Use the other layouts in <strong>Web</strong>DAV at<br />
dav/fs-type1/layout-templates as guides. Adding this folder of files to <strong>Web</strong>DAV adds the new<br />
layout to the default All category under Change Layout in the Customize shelf.<br />
2. Refresh your browser cache.<br />
3. Verify that your custom layout has been added successfully to the Customize area.<br />
Working with page builder navigation<br />
Learn how the Page builder navigation widgets work and how to configure them.<br />
Page builder navigation<br />
There are two levels of navigation shown in the Page builder theme. Both are instances of the same<br />
iWidget, but are parameterized to use different pages and CSS styles.<br />
1. Banner navigation<br />
location: list of links at the top of the page<br />
file: PortalServer_root\theme\wp.mashup.cc.theme\installedApps\wp.mashup.cc.theme.ear\<br />
PageBuilder2.war\themes\html\PageBuilder2\bannerNav.jsp<br />
level: 1<br />
2. Tabbed navigation<br />
location: row of tabs beneath the banner navigation<br />
file: PortalServer_root\theme\wp.mashup.cc.theme\installedApps\wp.mashup.cc.theme.ear\<br />
PageBuilder2.war\themes\html\PageBuilder2\tabNav.jsp<br />
level: 2<br />
Navigation rendering<br />
Each of the iWidgets is rooted at a navigation level, and displays the children of its root. The Banner<br />
navigation is rooted at level 0, or <strong>Content</strong> Root, and so displays the first level of pages. The Tabbed<br />
navigation is rooted at level 1, and shows the pages at level 2 that are under its root node.<br />
140 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The JSP files shown above print out the markup shown by the navigation iWidgets, along the iWidget<br />
definition. On page load, the iWidget is initialized and consumes the markup generated by the JSP. See<br />
Page Builder iWidgets for more information about iWidgets.<br />
The markup is generated by the JSP, so the user does not need to wait until the iWidget initializes to see<br />
the navigation.<br />
Navigation attributes<br />
Some attributes of the navigation iWidgets can be configured.<br />
strings<br />
attachNode<br />
ID of the HTML node that holds the navigation markup<br />
class CSS class added to the HTML node that holds the navigation markup<br />
tabListClass<br />
CSS class added to the UL containing the list of pages<br />
tabClass<br />
CSS class added to every page<br />
firstItemClass<br />
CSS class added to the first page in the navigation<br />
selectedClass<br />
CSS class added to the selected page<br />
varyLevelCondition<br />
JavaScript executed to determine if the navigation root is one level deeper in the selection model<br />
than its configured level numbers<br />
level navigation level at which to root the iWidget, out of box this is 0 for the Banner navigation and 1<br />
for the Tabbed navigation<br />
levels number of navigation levels to show beyond the start level (start level is set by the "level"<br />
attribute). If this is not specified, all levels are shown.<br />
openDelay<br />
milliseconds to wait after hovering over a tab before opening a popup menu of its children<br />
popupDelay<br />
milliseconds to wait before opening a sub menu off a child menu<br />
closeDelay<br />
milliseconds to wait before closing a menu after it loses focus<br />
showInlineEditor<br />
true if a link to create a page is to be shown in page edit mode<br />
dndOperable<br />
true if the pages are to be drag and drop enabled in page edit mode<br />
Configuring the navigation<br />
The navigation attributes are passed into the iWidgets by putting them in the "iw-ItemSet" markup of the<br />
definition.<br />
<br />
<br />
<br />
Setting up a portal site 141
1<br />
lotusTabs<br />
<br />
<br />
The previous code shows tabbed navigation rooted at level 1. You can edit the iw-Items or add new ones<br />
in the JSP.<br />
Navigation configuration examples<br />
Make Banner navigation edits in PortalServer_root\theme\wp.mashup.cc.theme\installedApps\<br />
wp.mashup.cc.theme.ear\PageBuilder2.war\themes\html\PageBuilder2\bannerNav.jsp<br />
Make Tabbed navigation edits in PortalServer_root\theme\wp.mashup.cc.theme\installedApps\<br />
wp.mashup.cc.theme.ear\PageBuilder2.war\themes\html\PageBuilder2\tabNav.jsp<br />
Remove the New Page link<br />
Remove the "#showInlineEditor" iw-Item.<br />
Disable drag and drop<br />
Remove the "#dndOperable" iw-Item.<br />
Change the level of navigation<br />
Find the iw-Item "#level" in the iWidget definition to update where the navigation iWidget is<br />
rooted. To have the iWidget show the third level of navigation, root it at level 2:<br />
2<br />
Remove the child page drop-down menus<br />
Set the iw-Item "#levels" to 0.<br />
0<br />
Note: If adding or removing levels of navigation and navigation priming is enabled, you need to perform<br />
one additional configuration. The file config.jsp contains a navigation priming container with the ID<br />
"selectionPathPrimer". This container has a loop that by default. starts with a value of 1. If you remove<br />
the banner navigation, you should have this loop start at 0 .<br />
Navigation iWidget details<br />
Both navigation elements are instances of the ControlledNavWidget iWidget . The widget listens and<br />
responds to events to refresh its markup or switch to a new page.<br />
When a page link is clicked in server-side mode, there is a full page refresh, therefore the iWidgets are<br />
destroyed and recreated. In client-side mode, there is no page refresh, so the navigation widgets simply<br />
refresh their markup to indicate the page switch.<br />
The ControlledNavWidget uses a singleton instance of the NavigationController JavaScript class. This<br />
class provides a tree model of the navigation by using the Enabler run time APIs. See<br />
Enabler_API_Quick_Reference for more information about Enabler APIs.<br />
The NavigationController also provides the current selection path. A selection path is a list of pages from<br />
the root, down the navigation tree to the currently selected page.<br />
Note: If you add or remove an instance of the navigation widget, you must also add or remove the<br />
container ID from the navigation priming attribute. To do this, open file theme.html and find the<br />
JavaScript object named "com.ibm.pb.themes.commonInit" set in an onload handler. Remove the<br />
navigation widget container ID from the attribute named "navPrimingContainers". . By default it looks<br />
as follows:<br />
navPrimingContainers: ["selectionPathPrimer","topNavLinks","navTabsRoot"]<br />
142 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related information:<br />
Enabler API Quick Reference<br />
Hiding content<br />
You can hide portlets and widgets on a page so they are present but not visible in the page layout.<br />
Why Hide <strong>Content</strong><br />
Sometimes you might want a portlet or widget on the page, but it does not have a user interface. In that<br />
case, it should be hidden. An example is if you have a data processing widget and a data viewer widget<br />
wired together. The data viewer widget would be visible and the data processing widget would stay<br />
hidden.<br />
In the Page Builder theme, content is hidden by putting it into a special container in the layout that is<br />
hidden with CSS. All of the out of box layout templates have this hidden container.<br />
1. Viewing hidden content<br />
a. Go to Actions > Edit Page<br />
b. Click the Hidden <strong>Content</strong> button<br />
2. How to hide content There are two ways to hide a piece of content:<br />
Use the Control menu<br />
a. Go to Actions > Edit Page<br />
b. Click the drop down menu icon in the upper right corner of the portlet or widget<br />
c. Click Hide<br />
d. Save the page<br />
Use drag and drop<br />
a. Go to Actions > Edit Page<br />
b. Click the Hidden <strong>Content</strong> button<br />
c. Drag the portlet or widget into the hidden container that appeared in step 2b<br />
d. Save the page<br />
3. How to un-hide content There are two ways to display a piece of content:<br />
Use the Control menu<br />
a. Go to Actions > Edit Page<br />
b. Click the Hidden <strong>Content</strong> button<br />
c. Click the drop down menu icon in the upper right corner of the hidden portlet or widget<br />
d. Click Move Down<br />
e. Save the page<br />
Use drag and drop<br />
a. Go to Actions > Edit Page<br />
b. Click the Hidden <strong>Content</strong> button<br />
c. Drag the portlet or widget out of the hidden container<br />
d. Save the page<br />
Sharing pages<br />
Users can share pages with other users. These users have to accept the shared pages before they can view<br />
them.<br />
Note:<br />
Setting up a portal site 143
v Deploy mashup integration by following the instructions in the topic about Enabling mashup<br />
integration in your portal.<br />
v If you want to enable page sharing, but not mashup integration, run the following configuration task:<br />
ConfigEngine.sh|bat deploy-portal-page-sharing<br />
-DWasPassword=was_password<br />
-DPortalAdminPwd=portal_password<br />
For virtual portals add the parameter for specifying the context of the virtual portal-<br />
DVirtualPortalContext=vp_context_root:<br />
ConfigEngine.sh|bat deploy-portal-page-sharing<br />
-DWasPassword=was_password<br />
-DPortalAdminPwd=portal_password<br />
-DVirtualPortalContext=vp_context_root<br />
v Users who accepted shared pages from within a page hierarchy of the user who shared the pages<br />
might still see the accepted pages after the sharing user deleted a page higher in the hierarchy. This<br />
applies only to descendant pages below the shared page in the hierarchy; pages that are shared directly<br />
become invisible to other users as expected when the sharing user deletes them. Example:<br />
1. User X creates a page hierarchy of page a with page b under page a.<br />
2. User X shares page b with user Y.<br />
3. User Y accepts page b.<br />
4. User X deletes page a.<br />
5. Results:<br />
– User X deleted page a; this also deleted all descendant pages including page b. Consequently<br />
user X cannot see page b any more.<br />
– However, user Y can still see page b.<br />
Changing the rendering mode of a shared page<br />
You can change the rendering mode of shared pages between client side aggregation and server side<br />
aggregation. For shared pages you cannot change the rendering mode page directly by editing the page<br />
properties, but you need to edit the base page that you have shared under the Shared Pages root node.<br />
Proceed by the following steps:<br />
1. Navigate to the Manage Pages portlet in the portal administration.<br />
2. Select <strong>Content</strong> Root > Shared Pages.<br />
3. Click the Edit Page Properties icon for the name of your shared page.<br />
4. Under Aggregation - Render Mode select the appropriate radio button.<br />
5. Click OK.<br />
Configuring access control for sharing pages (mandatory)<br />
To enable your users to use the sharing functionality, for example, when they work with page builder or<br />
mashup integration (both for personal pages and pages within Mashup Spaces), you need to log in to the<br />
portal as an administrator and manually set the appropriate access control settings. This configuration is<br />
mandatory.<br />
Prerequisite for virtual portals: For virtual portals you need to enable the virtual portal administrator to<br />
assign access to the sharing functionality before you configure access control for the sharing functionality<br />
by the procedure given further below. To do this, perform the following steps:<br />
1. Log in to the virtual portal as the portal administrator.<br />
2. Select Administration > Access > Resource Permissions > Pages.<br />
3. Search for Shared Pages and click the icon Assign Access next to Shared Pages.<br />
4. Click the icon Edit role next to the Administrator role.<br />
5. Click the Add button and assign access to the virtual portal administrator.<br />
144 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
6. Click OK.<br />
To configure access control for the sharing functionality, proceed as follows:<br />
1. Select Administration > Access > Resource Permissions.<br />
2. Select Virtual Resources. You might need to scroll through the list of resource types to find this<br />
entry.<br />
3. Search for the resource USER GROUPS and click the icon Assign Access next to it. You might need<br />
to scroll through the list of resource types to find this entry.<br />
4. Click the icon Edit role next to the Delegator role.<br />
5. Click the Add button.<br />
6. Check the users or user groups who you would like to allow to give other user groups access rights<br />
to pages.<br />
7. Click OK.<br />
8. Navigate back to the resource type Virtual Resources, for example by clicking Virtual Resources in<br />
the breadcrumb trail shown in the portlet.<br />
9. Search for the resource USERS and click the icon Assign Access next to it. You might need to scroll<br />
through the list of resource types to find this entry.<br />
10. Click the icon Edit role next to the Delegator role.<br />
11. Click the Add button.<br />
12. Check the users or user groups who you would like to allow to give other users access rights to<br />
pages.<br />
13. Click OK.<br />
14. Select Administration > Access > Resource Permissions > Pages.<br />
15. Search for Shared Pages and click the icon Assign Access next to Shared Pages.<br />
16. Click the icon Edit role next to the Editor role.<br />
17. Click the Add button and assign access to all users that you want to be able to share pages.<br />
18. Click OK.<br />
Sharing pages with other users<br />
You can share pages that you created or customized with other users. This works for both individual<br />
users as well as groups of users in your company.<br />
Note: You can only share private pages.<br />
When users with whom you have shared the page open that page, they can choose whether or not to add<br />
that page to their navigation. You can assign those users either View or Edit access:<br />
v View access: If you give them View access, they can only view the page.<br />
v Edit access: If you give them Edit access, they can edit the shared page with the portal Editor role<br />
access. For details refer to the topic about Roles. Changes made by an Editor can be seen by all users<br />
with whom you shared that page, including yourself as the owner of the page. However, the users to<br />
whom you gave Edit access cannot share the page with other users; only the owner of the page can<br />
share the page.<br />
Notes:<br />
1. When a page editor or owner initially shares a page, the current titles, descriptions, and metadata<br />
associated with that page are available to other users when they add the page to their navigation.<br />
However, subsequent changes by the owner to this information are not available to other users. Users<br />
who view a shared page have control over the titles and descriptions displayed in their view of the<br />
shared page.<br />
Setting up a portal site 145
2. The description given here applies to non-private pages. When users share a non-private mashup<br />
page, the users with whom the page was shared will see the page in their navigation without having<br />
to accept the page. For details about private and non-private pages refer to the topic about Sharing<br />
content.<br />
Themes and shared pages: When you share a page, the theme used for that page is explicitly set rather<br />
than being derived from the default portal theme or a parent theme. If you later change the default portal<br />
theme or the parent theme, the theme used for the shared page remains the same as when the page was<br />
originally shared. This is also true if you change the default portal theme during migration from a<br />
previous version; the theme of the shared page remains the same and does not reflect the new theme.<br />
To share a page with other users, proceed by the following steps:<br />
1. Navigate to the page that you want to share.<br />
2. Select Actions > Sharing > Assign Page Permissions .<br />
3. In the permissions dialog window search for users or groups:<br />
v To change your search between users and groups, click the dropdown menu and select the search<br />
type.<br />
v To perform a search, type a search string in the Search field and click the Search button.<br />
After the search is completed, the search result list is displayed under the search field. To page up<br />
and down, click the Up and Down arrows.<br />
4. To add users or groups from the result list to one of the permission roles for the shared page, drag<br />
the user or group to the Add to View or Add to Edit list.<br />
5. Click Add to View to give the selected users view access, or click Add to Edit to give the selected<br />
users edit access. The selected users and groups are copied to the corresponding role list.<br />
6. To add more users and groups to the page permissions, perform more searches with different search<br />
strings or change the search type as appropriate.<br />
7. To change permissions on the page for users or groups, select them in their current role list and click<br />
the appropriate Addto...button to change their permissions. You can also drag and drop users and<br />
groups between lists. To transfer multiple selections, select all the users or groups in a particular list<br />
and drag and drop them onto the new list all at once.<br />
8. To remove users or groups from the permission lists, select them and click the button Remove<br />
selected from list.<br />
Viewing and adding shared pages<br />
When a user shares a page with other users, these users have to accept the shared pages before they can<br />
view them.<br />
To accept and add a page that another user has shared with you, proceed as follows:<br />
1. Click Select Actions > Sharing > Add Shared Pages. This opens the dialog Add Pages Shared with<br />
Me.<br />
2. In the dialog, browse the list of pages that other users have shared with you.<br />
3. To accept a page into your navigation, click the Add button next to the page that you want to add.<br />
The page is added as a child of Home in your navigation.<br />
Changing the rendering mode of a shared page<br />
You can change the rendering mode of shared pages between client side aggregation and server side<br />
aggregation.<br />
For shared pages you cannot change the rendering mode page directly by editing the page properties, but<br />
you need to edit the base page that you have shared under the Shared Pages root node. Proceed by the<br />
following steps:<br />
1. Navigate to the Manage Pages portlet.<br />
146 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
2. Select <strong>Content</strong> Root > Shared Pages.<br />
3. Click the Edit Page Properties icon for the name of your shared page.<br />
4. Under Aggregation - Render Mode select the appropriate radio button.<br />
5. Click OK.<br />
Page builder drag-and-drop<br />
One of the features of the page builder is its drag-and-drop capability.<br />
In Page Builder you can drag-and-drop two types of resources, pages and portlets:<br />
v Pages rendered in the navigation widget have a drag handle associated with them. You can use it to<br />
drag a page to the required location.<br />
v You can also arrange portlets by using drag-and-drop. The portlet title bar serves as the drag handle.<br />
As you drag the portlet over the other portlets or empty containers on the page, the shadow appears.<br />
The shadow is a preview place holder that appears in the container as you hover over a target; it<br />
serves to show how the layout would look like if the portlet is dropped.<br />
Limitations: The page builder drag-and-drop feature does not support multi-selection and copying<br />
resources.<br />
For details about Dojo and drag-and-drop refer to the documentation link given below.<br />
Portlet drag-and-drop<br />
The file config_js.jsp , which is included by the config.jsp dynamic-content spot, contains the object<br />
ibmCfg.themeConfig . This object specifies a parameter named dndSourceDefinitions that defines the<br />
available drag and drop sources that can be applied to the layout.<br />
The location of the file config.jsp is as follows:<br />
PortalServer_root/theme/wp.mashup.cc.theme/installedApps/wp.mashup.cc.theme.ear/<br />
PageBuilder2.war/themes/html/PageBuilder2/<br />
The location of the file config_js.jsp is as follows:<br />
PortalServer_root/theme/wp.mashup.cc.theme/installedApps/wp.mashup.cc.theme.ear/<br />
PageBuilder2.war/themes/html/PageBuilder2/js/<br />
Use the parameter dndSourceDefintions to add a new drag and drop source as follows:<br />
dndSourceDefinitions: [<br />
{id:"ibmDndColumn", object:"com.ibm.pb.dnd.layout.LayoutColumnSource",<br />
orientation: "vertical"},<br />
{id:"ibmDndRow", object:"com.ibm.pb.dnd.layout.LayoutRowSource",<br />
orientation: "horizontal"}<br />
]<br />
Each item in the DND source definition array consists of the following three parts:<br />
id This defines the CSS class name that is placed on a layout container.<br />
object This defines the class module of the DND source.<br />
orientation<br />
This defines the type of container on which you place the definition. Specify vertical or<br />
horizontal.<br />
The portlet default drag-and-drop sources that are defined in the DND source definition<br />
dndSourceDefinitions as the object parameters are located with the portal Dojo Resources application.<br />
The location of the classes is as follows:<br />
Setting up a portal site 147
PortalServer_roottheme/wp.theme.dojo/installedApps/dojo.ear/dojo.war/v1.4.3/com/ibm/pb/dnd/layout/<br />
The initialization of drag-and-drop on a page is performed by the init method in the class<br />
com.ibm.pb.control.DNDController . The DND Controller is subscribed to the page change event that is<br />
broadcast when entering page edit mode. When the page change event is broadcast, the DND controller<br />
handles the intialization of DND for the layout. The location of the DND Controller is as follows:<br />
PortalServer_roottheme/wp.theme.dojo/installedApps/dojo.ear/dojo.war/v1.4.3/com/ibm/pb/control/<br />
To apply a new drag and drop source to a layout, proceed as follows:<br />
1. Add a new source definition to the array ibmCfg.themeConfig.dndSourceDefintions in the following<br />
form:<br />
{id:"semantic_CSS_class_to_place_on_a_layout_container",<br />
object:"dojo_module_path", orientation: "vertical"}<br />
Example:<br />
{id:"newDndSourceCSS", object:"custom.DNDSource", orientation: "vertical"}<br />
2. Add the CSS class defined in the dndSourceDefinitions to applicable containers in a layout<br />
template as follows:<br />
<br />
Your new drag-and-drop source is now applied to the page layout. When the DND Controller initializes,<br />
it finds the class newDNDSourceCSS on the container, performs the mapping to the custom.DNDSource, and<br />
instantiates that object.<br />
Page drag-and-drop<br />
The page drag-and-drop classes are located with the portal Dojo Resources application. The location of<br />
the classes is as follows:<br />
PortalServer_root/theme/wp.theme.dojo/installedApps/dojo/[node]/Dojo_Resources.ear/dojo.war/v1.4.3/com/ibm/dnd<br />
ModeledSource.js<br />
This source class provides dnd operational support to a modeled widget. You can extend it to<br />
provide different drop actions and drop zones, depending on the type of data that is dragged<br />
around.<br />
PageAvatar.js<br />
This class constructs the avatar for page tabs by overriding the default Dojo implementation.<br />
Opacity for the avatar is applied by the class ibmPortalDndPageAvatar assigned by the creator<br />
method. To restyle the page avatar, modify the class ibmPortalDndPageAvatar. It is located in the<br />
file<br />
wp_profile_root/installedApps/node/Enhanced_Theme.ear/wp.theme.enhancedtheme.war/themes/<br />
html/Enhanced/css/portal.css<br />
PageCreator.js<br />
This class creates the node that is used as the avatar while dragging. By default this is a gray box<br />
with the page title.<br />
The navigation widget has several parameters passed in to enable and modify drag-and-drop behavior.<br />
The navigation widgets are initialized within the Tab Menu - Page Builder theme by the file<br />
NavWidget.jspf.<br />
dndEnabled<br />
This toggles drag-and-drop with in the widget. The default value is true<br />
dndType<br />
This is the type specified for page nodes. The default value is cmNode.<br />
148 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
dndAccept<br />
This is the type that page nodes accept. The default value is cmNode.<br />
dndCreator<br />
This is the creator method that creates the avatar node. The default value is<br />
com.ibm.dnd.PAGE_CREATOR.creator.<br />
Avatars<br />
To modify the avatars, the portal provides a creator function. For portlets it is located in the file<br />
PortletMediator.js; for pages it is located in the PageCreator.js. The method creator checks whether<br />
the hint parameter is equal to avatar. If yes, it creates the node that is used to display while dragging.<br />
refer to the following example:<br />
creator: function(item, hint){<br />
if(hint=="avatar"){<br />
...<br />
Modify this code to create a custom node that is to be used as the avatar.<br />
The default avatar is the portlet markup itself.<br />
...<br />
}else{<br />
...<br />
When there is no avatar creator function given, a default avatar is created.<br />
The default avatar is based on the one defined in dojo.dnd.Source<br />
in the functions _normalizedCreator/onDropExternal."<br />
...<br />
}<br />
}<br />
Related information:<br />
Dojo drag and drop:<br />
http://docs.dojocampus.org/dojo/dnd<br />
Page builder menus<br />
Learn how menus work in the Page Builder theme.<br />
Page builder menus<br />
The Page Builder theme uses several drop-down menus. The menu items are populated by using<br />
JavaScript Object Notation (JSON) files, located in <strong>Web</strong>DAV.<br />
v Actions menu<br />
– Displayed in the banner of the theme. Contains actions available for the current page.<br />
– JSON location: dav:fs-type1/themes/PageBuilder2/menuDefinitions/pageActions.json<br />
v User menu<br />
– Displayed in the banner of the theme. Contains links to "Edit My Profile" and "Impersonate", if user<br />
has permission to view those items.<br />
– JSON location: dav:fs-type1/themes/PageBuilder2/menuDefinitions/userActions.json<br />
v Layout Control menu<br />
– Displayed in the titlebar of the skin. Contains actions available for the portlet or widget.<br />
– JSON location: dav:fs-type1/themes/PageBuilder2/menuDefinitions/widgetActions.json<br />
JSON file contents<br />
Each of the JSON files contains an array of objects. Each object contains these parameters:<br />
title<br />
A string name for the menu item.<br />
bundlePackage<br />
bundleName<br />
Setting up a portal site 149
undleKey<br />
These 3 strings are used in conjunction to retrieve a translated string from Dojo's localization<br />
framework. Example:<br />
title=dojo.i18n.getLocalization(bundlePackage, bundleName)[bundleKey];<br />
ordinal<br />
This attribute sets the position of the menu item relative to other item ordinals. The value must<br />
be an integer.<br />
id<br />
A string which is a unique identifier for the menu item.<br />
visibilityFn<br />
A reference to a JavaScript function that returns true if the menu item should display, and false if<br />
it should be hidden.<br />
actionFn<br />
A reference to a JavaScript function that is run when a user clicks the menu item.<br />
metadata<br />
A JavaScript object that is passed as a parameter into both the visibility and action function<br />
itemClass<br />
A string that is set as a CSS class on the menu item.<br />
iconClass<br />
A string that is set as a CSS class to the left of the menu item text. Used to set a background<br />
image used as an icon for the item.<br />
isSeparator<br />
Set to true if the menu item is used to separate other items. For example, this searator might be<br />
presented in the UI as extra space or a visible line.<br />
enable<br />
Set to false if the menu item should be disabled.<br />
Menu item visibility and action function parameters<br />
Four parameters are passed by the menu framework into the visibility and action functions:<br />
v ID: identifier of the page, portlet or widget with which the menu is associated<br />
v resourceType: string declared class of the page, portlet or widget, eg:<br />
"com.ibm.mashups.enabler.navigation.NavigationNode" for a page<br />
v metadata: the metadata object from the menu item in the JSON file<br />
v obj: optional object passed in by the menu framework to give more information.<br />
How to add a new item to a menu<br />
1. Open the menu JSON file.<br />
2. Scroll to the bottom of the file to find the end of the JSON array.<br />
3. Add a new action item by insert this code into the JSON array:<br />
{<br />
title: "My Menu Item",<br />
bundlePackage: "com.ibm.bundles",<br />
bundleName: "Theme",<br />
bundleKey: "menu_item",<br />
ordinal: 10,<br />
enabled: true,<br />
visibilityFn: function(ID, resourceType, metadata, obj){ return true; },<br />
actionFn: function(ID, resourceType, metadata, obj){ alert("Click!"); },<br />
id: "PageActions:myItem"<br />
}<br />
4. Clear your browser cache, reload the page and open the menu to see the new entry.<br />
150 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Other menu item examples<br />
Add a separator:<br />
{<br />
}<br />
title: "My Separator",<br />
bundlePackage: "com.ibm.bundles",<br />
bundleName: "Theme",<br />
bundleKey: "separator",<br />
isSeparator: true,<br />
ordinal: 20,<br />
visibilityFn: function(ID, resourceType, metadata, obj){ return true; },<br />
id: "PageActions:mySeparator"<br />
Add a heading:<br />
{<br />
}<br />
title: "My Header",<br />
bundlePackage: "com.ibm.bundles",<br />
bundleName: "Theme",<br />
bundleKey: "header",<br />
itemClass: "menuSectionHeader",<br />
ordinal: 30,<br />
enabled: true,<br />
visibilityFn: function(ID, resourceType, metadata, obj){ return true; },<br />
id: "PageActions:myHeader"<br />
Add an item with an icon:<br />
{<br />
}<br />
title: "My Icon Item",<br />
bundlePackage: "com.ibm.bundles",<br />
bundleName: "Theme",<br />
bundleKey: "icon",<br />
iconClass: "dijitEditorIcon dijitEditorIconCut",<br />
ordinal: 40,<br />
enabled: true,<br />
visibilityFn: function(ID, resourceType, metadata, obj){ return true; },<br />
actionFn: function(ID, resourceType, metadata, obj){ alert("I have an icon."); },<br />
id: "PageActions:myIcon"<br />
Add a disabled item:<br />
Setting up a portal site 151
{<br />
title: "My Disabled Item",<br />
bundlePackage: "com.ibm.bundles",<br />
bundleName: "Theme",<br />
bundleKey: "disabled",<br />
ordinal: 50,<br />
enabled: false,<br />
visibilityFn: function(ID, resourceType, metadata, obj){ return true; },<br />
id: "PageActions:myDisabled"<br />
}<br />
Use the metadata object:<br />
{<br />
}<br />
title: "My Metadata Item",<br />
bundlePackage: "com.ibm.bundles",<br />
bundleName: "Theme",<br />
bundleKey: "metadata",<br />
ordinal: 60,<br />
enabled: true,<br />
visibilityFn: function(ID, resourceType, metadata, obj){ return metadata.show; },<br />
actionFn: function(ID, resourceType, metadata, obj){ alert(metadata.message); },<br />
metadata: {<br />
}<br />
show: true,<br />
message: "The metadata menu item was clicked."<br />
id: "PageActions:myMetadata"<br />
Initializing the menus<br />
The Page builder menus are initialized in dav:fs-type1/themes/PageBuilder2/js/init.js. For example,<br />
initializing the Actions menu:<br />
var pageActionsMenu = new com.ibm.pb.contextMenu.JsonContextMenuLoader({url:dojo.moduleUrl("com.ibm.themes.PageBuilder2.men<br />
com.ibm.mashups.builder.model.Factory.getContextMenuModel().registerContextMenu("pageActions", pageActionsMenu);<br />
First, a new menu is created by passing in a url to the JSON. Then the menu is registered with the menu<br />
framework.<br />
152 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Programmatic menu contributions<br />
You might have noticed that not all of the menu items have an entry in the JSON files. This is because<br />
the Page builder theme adds some of the items programmatically. For example, the tagging and rating<br />
options from the Actions menu are added like the following:<br />
var pageActionsContribution = new com.ibm.cp.TRContextMenuLoader(true);<br />
com.ibm.mashups.builder.model.Factory.getContextMenuModel().addContribution("pageActions", pageActionsContribution, 60);<br />
First a new menu is created for tagging and rating; it must have a getItems function that returns an<br />
Enabler deferred object to retrieve the array of menu items like those seen in the flat JSON files. Then the<br />
contribution is added to the pageActions menu.<br />
See Enabler API Quick Reference for more information about Enabler.<br />
Out-of-box menu functions<br />
The default menu functions that control visibility and the action of the items are located in the<br />
"com.ibm.pb.contextMenu.sharedActions" object within the theme.js javascript layer. The layer is located<br />
here:<br />
Tabbed navigation<br />
id: topNav<br />
location: \theme\wp.mashup.cc.theme\installedApps\<br />
wp.mashup.cc.theme.ear\PageBuilder2.war\themes\html\PageBuilder2\tabNav.jsp<br />
purpose: Displays the navigation tabs in the theme<br />
learn more: Working with page builder navigation: wp7<br />
Breadcrumb<br />
id: breadcrumbWidget<br />
location: \theme\wp.mashup.cc.theme\installedApps\<br />
wp.mashup.cc.theme.ear\PageBuilder2.war\themes\html\PageBuilder2\pageToolbar.jsp<br />
purpose: Display a navigation breadcrumb trail when viewing a page on level 2 or more<br />
Common actions<br />
id: commonActions<br />
location: \theme\wp.mashup.cc.theme\installedApps\<br />
wp.mashup.cc.theme.ear\PageBuilder2.war\themes\html\PageBuilder2\<br />
bannerCommonActions.jsp<br />
purpose: Shows the User menu, Actions menu, Help, Log In, Sign Up and Log Out links in the<br />
upper right of the theme<br />
Actions menu<br />
id: pageActionsMenu<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: The Actions menu can be seen in the upper right of the theme. Used to edit the page<br />
User menu<br />
id: userActionsMenu<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: The User menu can be seen as a link displaying name of the user currently logged in.<br />
Used to edit user settings<br />
Template layout<br />
id: templateLayout<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: Displays the page layout including handling client-side page switching<br />
Customize shelf<br />
id: customizeShelfContainer<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: Accessed via Actions -> Edit Page -> Customize. Used to add content and change the<br />
style or layout of the page<br />
New page<br />
id: newPage<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: A dialog to create a page. Displayed when clicking New Page from the tabbed<br />
navigation or Actions -> New Child Page<br />
Select template<br />
id: templateSelect<br />
154 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: Launched from the new page dialog to select a template on which the new page should<br />
be based<br />
Share page<br />
id: sharePage<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: A dialog to share a page. Displayed when clicking Actions -> Share Page from a<br />
non-public page<br />
Move page<br />
id: reorderPage<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: A dialog to move a page. Displayed when clicking Actions -> Move Page<br />
Add shared pages<br />
id: viewMorePage<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: A dialog to add pages that are shared with you to your navigation. Displayed when<br />
clicking Actions -> Add shared pages<br />
Wiring widget<br />
id: wireInterface<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: A dialog to wire portlets and widgets together. Displayed when clicking Edit Wiring<br />
from a portlet menu while in edit mode<br />
Automatic wiring manager<br />
id: autoWiring<strong>Manager</strong><br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: A hidden widget that will automatically wire other widgets together if they are on the<br />
same page and have corresponding inputs and outputs<br />
Dialog displayer<br />
id: dialogDisplayer<br />
location: dav:fs-type1/themes/PageBuilder2/theme.html<br />
purpose: A container dialog that launches to display other widgets, such as Share Page, Move<br />
Page and Wire<br />
Using a different Dojo version<br />
By default, the portal uses Dojo Version 1.4.3 for its themes. If required, you can use a previous Dojo<br />
version.<br />
<strong>Web</strong>Sphere Portal Version 7.0 comes with Dojo versions V 1.4.3, V 1.3.2, and V 1.1.1. For details about<br />
using these Dojo versions, refer to the following information:<br />
v For general information about Dojo in <strong>Web</strong>Sphere Portal refer to the topic about Dojo and <strong>Web</strong>Sphere<br />
Portal. That topic also provides information about how to upgrade custom themes that you created for<br />
your previous portal installations from Dojo V 1.1.1 or V 1.3.2 to V 1.4.3.<br />
v For information about using multiple versions of Dojo in different themes concurrently refer to the<br />
topic about Dojo and <strong>Web</strong>Sphere Portal.<br />
Setting up a portal site 155
Related information:<br />
<strong>Web</strong>Sphere Portal Family wiki:<br />
http://www-10.lotus.com/ldd/portalwiki.nsf<br />
Using and migrating Dojo versions with <strong>Web</strong>Sphere Portal themes: http://www-10.lotus.com/ldd/<br />
portalwiki.nsf/dx/Using_and_migrating_Dojo_versions_with_<strong>Web</strong>Sphere_Portal_themes<br />
Dojo V 1.3 Release notes - http://docs.dojocampus.org/releasenotes/1.3<br />
Dojo V 1.4 Release notes - http://docs.dojocampus.org/releasenotes/1.4<br />
Hints and tips for page builder<br />
Learn about hints and tips and known limitations of page builder.<br />
Hints and tips for working with page builder<br />
1. Page Builder does not use drag and drop tags. Page Builder uses the Dojo drag and drop framework.<br />
2. Privileged users cannot edit the layout of a non-private page. This is because Page Builder pages use<br />
static layout templates, and changing them requires the user have access to update page metadata.<br />
Known limitations<br />
Page builder has the following limitations:<br />
1. Page builder and the Page Builder theme do not support the following portal features:<br />
v Side navigation. The Page Builder theme does not use side navigation. Therefore, if a user of a<br />
portal with the page builder theme hides the top navigation, for example by selecting SideNavOnly<br />
and turning the theme style into side navigation only, then the navigation will disappear.<br />
v Locked containers.<br />
v Portal style classes.<br />
v The portal color palette for themes.<br />
2. The page builder skins support the directional Move options in their portlet context menus only if the<br />
current page is rendered with a layout template. If a legacy layout is in use, the Move options are not<br />
available in the portlet context menus.<br />
3. The new page dialog launched from page builder can only customize the page title and its privacy<br />
mode and only supports creating normal portal pages with modeled layouts.<br />
4. If a privileged user works with pages under the Page Builder theme and navigates to Actions > Move<br />
Page, it can happen that the user moves a private page underneath the Hidden Pages label. This<br />
results in a loss of the moved page, as the Hidden Pages label and all its sub-pages contain the<br />
com.ibm.portal.Hidden metadata, and pages under that label do not show up in the portal navigation.<br />
The portal administrator cannot retrieve the page either, as it is privately owned by the privileged<br />
user. To resolve this problem, block the privileged user from dropping pages under the Hidden Pages<br />
label. To do this, select the Resource Permissions portlet, and change the role for the All Authenticated<br />
Portal Users group on the Hidden Pages label from the Privileged User role to the User role only.<br />
Customizing pages<br />
The page customizer contains portlets for editing the layout, content, and appearance of pages. It also<br />
provides the Wires portlet, which allows users to set up connections between cooperative portlets on a<br />
page, and the Locks portlet, which allows users to lock and unlock containers and container content. You<br />
can configure the settings for these portlets to show a certain set of functions, restricting basic users from<br />
performing more advanced tasks.<br />
156 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Skins represent the border around a portlet, including its title bar. Users with appropriate access can<br />
select skins for individual portlets using the Appearance portlet of the page customizer. To set a skin for<br />
portlets, access the Page Customizer and select the Appearance portlet. See the portlet help for further<br />
information.<br />
A page is deactivated when you start making changes to it. While editing the page, all changes are<br />
effective immediately and cannot be undone or cancelled. Other users will not be able to access the page<br />
and icons that launch the edit mode of portlets on the page are deactivated until you commit the changes<br />
by clicking Done.<br />
Editing a shared page can have different results, depending on the role assigned to the user editing the<br />
page.<br />
v Users with the Editor role for a page can make changes that affect all users of the page.<br />
v Users with the Privileged User role for a page can only make changes to a private copy, or layer, of the<br />
page. The changes do not affect the other users of the page. The page must have an initial layout with<br />
at least one container before users with the Privileged User role can make any changes to the page.<br />
v Users with the User role for a page cannot edit the page at all.<br />
Log in to the portal and use one of the following methods to access the portlet:<br />
v Navigate to the page you want to change and select Edit Page Layout from the drop-down menu. The<br />
drop-down menu for a page is located on the tab for that page. The Edit Layout portlet opens the<br />
current page for editing. Other portlets in the Page Customizer are available if you have appropriate<br />
access.<br />
v After creating a new page, you are directed to the Edit Layout portlet to edit the layout and content of<br />
the new page. Other portlets in the Page Customizer are available if you have appropriate access. To<br />
create a new page, select New Page from the drop-down menu. The drop-down menu for a page is<br />
located on the tab for that page.<br />
v Navigate to the Manage Pages portlet and click the Edit Page Layout icon in the appropriate row.<br />
Layout and content<br />
The Edit Layout portlet allows you to define the layout and content of a portal page.<br />
This portlet is located in the Page Customizer. Some of the options you can select on the page include:<br />
v Layout template: You can select from one of several preconfigured page layouts.<br />
v Add portlets: Allows you to select portlets from a list that you can add to containers on the page. This<br />
might require that you enter search criteria for portlets rather than listing all available portlets.<br />
Note: You can also drag portlets from the Portlet Palette to add portlets to the page.<br />
v Show layout tools: Shows advanced layout tools for creating and editing page containers. This options<br />
overrides the preconfigured layout templates.<br />
If the Show layout tools option is not displayed by the Edit Layout portlet, you can display it by<br />
clicking the edit icon and checking the option, Show toggle link for "Show layout tools/hide layout<br />
tools".<br />
The sample page below has the following layout:<br />
v A Row Container that contains:<br />
– Two Column Containers, each containing:<br />
- Two portlet containers (controls), with a portlet in each.<br />
The structure of an example page might look like this:<br />
Setting up a portal site 157
Note: The Page Builder theme provides an alternate layout mechanism that uses layout templates. To<br />
learn about these layout templates, refer to the topic about Changing page layout in the Page builder<br />
section. You can switch between the layout with rows and columns and the layout template approach as<br />
follows:<br />
v Rows and columns to template: To convert a page with a layout of rows and columns to a page<br />
template, assign a page template with the inline customization shelf user interface of the Page Builder<br />
theme. The portlets in the row and column layout will be moved to the new layout template structure.<br />
v Template to rows and columns: To convert a layout template page to a layout with rows and columns,<br />
remove the layout template assignment. To do this, access the Page Properties portlet, either by<br />
clicking Edit Page Properties on the More Actions menu in the theme, or by using the Manage Pages<br />
administration portlet. Click Advanced Options, then I want to set parameters. Locate the parameter<br />
named layout and click Delete. The page layout will now consist of a set of columns, one for each<br />
container of the layout template, that can be modified by the Edit Layout portlet.<br />
Adding a portlet to a page<br />
Portlets are added to the page by submitting a search and then selecting from the list of available<br />
portlets. Only portlets available in the portlet list can be placed on the selected page. Once you place a<br />
portlet in a row or column, you cannot modify the row or column without removing all portlets from<br />
that outlined container.<br />
1. Click Administration > Manage Pages.<br />
2. Navigate to the page where you want to add a portlet.<br />
3. Click the Edit Page Layout icon (small pencil) next to the page name.<br />
4. Click Add Portlets.<br />
5. In the list of available portlets, click the box next to the portlet title to select the portlet, then click OK.<br />
You can also search for a portlet title if the list of portlets is long. You can select more than one portlet<br />
to add to the page.<br />
158 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
6. Click OK.<br />
7. Click Done to save the modified page.<br />
Organizing objects<br />
Objects such as portlets and containers can be rearranged on the page.<br />
Use the appropriate arrows to move portlets and containers to the location you want. If the page<br />
manager has locked a column or row container or the content of a container, modifications to the page<br />
may be limited. Icons representing tasks that have been restricted are not displayed.<br />
You can create columns and rows and place portlets within these containers and rearrange the containers<br />
on the page.<br />
Selecting Show layout tools provides more options for moving objects on the page. For example, you can<br />
place a check by multiple portlets and click the move portlets icon to move the selected portlets to a new<br />
location.<br />
Modifying page layout<br />
When you create a page, you can choose one of the layout templates displayed above the portlet display<br />
area. In most cases, you need only to add portlets to one of those predetermined layouts.<br />
If you need more control over the layout, click Show layout tools to display the advanced layout icons.<br />
You can nest spaces and add rows and columns.<br />
Users can click the option Show layout tools only if prior the checkbox Show toggle link for Show<br />
layout tools/hide layout tools has been enabled within the Configuration or Edit shared settings mode of<br />
the Edit Layout portlet.<br />
Note: Use Page Builder to create and edit pages with static layout. The Edit Layout portlet might not<br />
display static layout containers as expected.<br />
Editing portlet unique names on a page<br />
You can change the unique name of a portlet on a page while editing the layout of the page from the<br />
page customizer. The unique name that you set only affects the portlet instance on the page.<br />
1. Click Administration > Manage Pages.<br />
2. Navigate to the appropriate page containing a portlet with a unique name that you plan to modify.<br />
3. Click the Edit Page Layout icon (small pencil) next to the page name.<br />
4. Click the drop-down menu beside the portlet name > Set portlet window unique name.<br />
5. Enter a unique name in the field.<br />
6. Click OK > Done.<br />
Notes:<br />
1. You can also create or edit the unique names of a portlet instance on a page from the Manage Custom<br />
Unique Names portlet.<br />
2. You can also get to the Edit Page Layout portlet by selecting the appropriate option from the menu of<br />
the page that you want to change.<br />
Changing portlet settings<br />
You can change the settings of each portlet listed in the Edit Layout portlet. These options are available<br />
from the drop-down menu on each portlet shown in the container.<br />
Each of these options opens a new window for changing your settings for the portlet. Depending on your<br />
access privileges, some of these options may not be available to you.<br />
Setting up a portal site 159
v Select Personalize this portlet to personalize a portlet. The updates you make here will only change<br />
the look of the portlet for you.<br />
v Select Edit shared settings for this portlet to change the default look of a portlet for all users. The<br />
updates you make here will affect all users who view the portlet on a particular page. The changes will<br />
not be reflected on any instances of the portlet that appear on other pages.<br />
v Select Configure to change the default look of a portlet for all users across all pages. The updates you<br />
make here will affect all users who view the portlet on any page.<br />
The following settings can be changed:<br />
Users can switch page layout<br />
Select this option to allow changing the layout of the page to one of these pre-defined layout<br />
templates. You can further customize this option by selecting one of the Allowed layouts.<br />
Show toggle link<br />
Select this option to display the link for advanced layout tools. When this link is first clicked,<br />
tools are displayed that allow you to create advanced page layouts.<br />
Check portlet width before adding or moving portlets to a column<br />
Select this option to prevent portlets of a certain width from being moved or added to a container<br />
that is too narrow.<br />
Number of items per page<br />
After the search results are returned, this limits the number of portlets for each page. For<br />
multiple pages, you can use the arrow icons to navigate to the other pages.<br />
Never show more than this number of items<br />
Limits the number of portlets returned in the search.<br />
Also display the following information in the search results<br />
Select whether the markups supported by each portlet should also be displayed in the results.<br />
Selecting a personalization rule<br />
You can manage personalization rules for a particular portlet from the Edit Layout portlet.<br />
In order to view portlet rule mappings, make sure that Show portlet rule mapping is enabled in the Edit<br />
Layout settings.<br />
v To select a rule, select Select Rule from the No Rules Mapped To drop-down list on the portlet. This<br />
takes you to the Personalization Rule Picker portlet. Once the rule is selected, you will be returned to<br />
the Edit Layout portlet.<br />
v To delete an existing rule, choose Delete mapping from the No Rules Mapped To drop-down list on<br />
the portlet.<br />
Locking content on a page<br />
Use the Locks portlet to set permissions for moving containers or content, or for deleting portlets. This<br />
allows you to lock content to certain locations on a page. Any element on the page, such as a row<br />
container, a column container, or a portlet, can be locked or unlocked for many variations that give a user<br />
control of what can be modified. On a page where content and layout should be preserved, both can be<br />
locked, preventing other users from altering the arrangement of containers or portlets on the page.<br />
In order to modify the locks for a certain page, a user must have Editor role on that page. If a user has<br />
appropriate access rights, the user can determine what other users are able to do with a page.<br />
Be aware of the effect that locks and access permissions can have on pages that inherit content from a<br />
shared page. To lock or unlock content on a page:<br />
160 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Locking and unlocking content<br />
As an administrator, you are able to restrict the tasks that may be performed with the contents of a<br />
container:<br />
You can prevent portal users from modifying the content of a container on a static page. If you lock the<br />
content of a container on a page, then a portlet cannot be added to that container, or moved into or out<br />
of that container.<br />
When a container is locked, it can not be removed from the page. As an administrator, you are able to<br />
restrict the following tasks that may be performed with the contents of a container.<br />
v Add portlets to the container<br />
v Remove portlets from the container<br />
v Move portlets inside of the container into other containers<br />
v Add sub-containers (columns or rows) to the container<br />
v Remove sub-containers (columns or rows) from the container<br />
v Modify portlet positions within the container<br />
v Modify sub-container positions within the container<br />
v Set the width for the container<br />
1. Click Administration > Manage Pages.<br />
2. Click the Edit Page Layout icon (small pencil) next to the page name.<br />
3. Click the Locks tab.<br />
4. To lock the content of the container, click the lock icon. The icon shows a closed lock when the<br />
content of the container is locked, and an open lock when it is unlocked. Clicking the icon toggles<br />
back and forth between locked and unlocked.<br />
5. Click Done to save the changes to the page.<br />
You can verify that the content of a container is locked by clicking the <strong>Content</strong> tab. If the content of a<br />
container box is locked, then it does not display an Add portlet button or any directional arrows.<br />
Setting the delete option<br />
Enable or disable users to delete a portlet.<br />
The delete option is the check box located in the upper-right corner of the container. When the delete box<br />
is unchecked for a portlet, the delete icon for the portlet is unavailable for users who are modifying the<br />
page in Edit Layout and <strong>Content</strong>. When this box is checked for a portlet, the delete icon for the portlet is<br />
available for users who are modifying the page in Edit Layout and <strong>Content</strong>. When a portlet is added to a<br />
page, the default setting is a checked box for the portlet.<br />
Connections between portlets<br />
The Portlet Wiring Tool allows you to configure connections, or wires, between cooperative portlets.<br />
Cooperative portlets can exchange information, or properties, with each other through the property broker.<br />
Properties are exchanged either by prompting the user with a Click-to-Action menu or automatically<br />
using preconfigured wires. As a result, portlets on the page can react in an integrated and unified manner<br />
to the user's actions.<br />
Setting up a wire between portlets allows the user's transfer selection choices to be saved. The wire may<br />
be used to automatically transfer properties to target portlets when specific interactions are performed<br />
without displaying the pop-up menu prompting the user for more information. The Portlet Wiring Tool<br />
allows you to view the properties that portlets on the page can send or receive. If a match is available<br />
between two portlets, you can create a wire between the two portlets. Existing wires may also be deleted<br />
using the tool.<br />
Setting up a portal site 161
The Portlet Wiring Tool also provides the functionality to implement cross-page portlet communication.<br />
Cross-page wires allow portlets to exchange properties across pages. Before creating a cross-page wire,<br />
the target page must have receiving actions defined as global on its portlets. Setting an action as global<br />
will also make that action available to Click-to-Action menus. To set an action as global, navigate to the<br />
target page and select Edit Page Layout from the drop-down menu on the title bar. Then select the Wires<br />
tab and click on Manage Actions. This will bring up a listing of the portlets on a page and their<br />
corresponding receiving actions.<br />
As an alternative to the Portlet Wiring Tool, wires can also be created interactively in the portlet.<br />
Depending on the browser, users with sufficient permissions can create wires by holding either the CTRL<br />
or ALT keys and clicking an icon or hotspot in the portlet that is already associated with a<br />
Click-to-Action function. A dialog is displayed that allows the user to create a wire to other portlets on<br />
the page.<br />
The wiring tool allows wires to be created in situations which are not handled by the interactive<br />
approach. For example, the tool does not require the existence of Click-to-Action menus to initiate wire<br />
creation, and can be used to create multiple wires from a single source property (using the interactive<br />
approach, a single source can be wired to a single target or all targets, not an arbitrary subset). Wire<br />
creation or deletion is subject to the access control checks as described below.<br />
In order to view the tool itself, users must possess at least "User" role permissions on the page and the<br />
portlet. Further access checks are performed before allowing the user to view, create, or delete wires<br />
between portlets. The user must possess at least "User" role permissions on a page and the wired portlets<br />
on it to be able to view wires for the page. Users may also be able to create or delete personal wires,<br />
which affect their view of the page, or create or delete public wires, which affect all users' view of the<br />
page. Users must possess at least "Privileged User" role permissions on the page and "User" permissions<br />
on the portlets to be able to create or delete personal wires, while at least "Editor" role permissions are<br />
required on the page and "User" permissions on the portlets to be able to create or delete public wires.<br />
Themes and skins<br />
A theme determines the global appearance of a page. The purpose of this is to ensure visual consistency.<br />
Themes affect the navigational structure, the banner, the colors and fonts, the available portlet skins, and<br />
other visual elements of a page. A skin determines the frame that is displayed around a portlet.<br />
Use the Themes and Skins portlet to do the following:<br />
v Set the portal default theme<br />
v Set the portal default skin<br />
v Associate skins with a theme<br />
v Set the default skin for a theme<br />
v Add new themes and skins to the portal<br />
v Delete themes and skins from the portal.<br />
You find this portlet under Administration > Portal User Interface > Themes and Skins. Refer to the<br />
respective portlet helps for additional instructions.<br />
Notes:<br />
1. If you remove a theme, the references to that theme and the links between that theme and the related<br />
skins are also deleted. If you want to remove the skins related to the removed theme as well, apply<br />
special care to remove only skins that are related to no other theme than the deleted one. The skins<br />
are associated to the portlets. Therefore, if you have a skin related to several themes, and you delete<br />
one of those themes, then the skin will still show under the other themes.<br />
2. Deleting a theme or skin does not remove the /theme or /skin directory from the server.<br />
162 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
3. Some of the theme and skin titles might not appear correctly if your language preference uses DBCS<br />
characters. To correct the display of these titles, change the character set used by your language<br />
preference for HTML markup to UTF-8.<br />
Setting the default theme<br />
Select a theme that is used to across the entire portal.<br />
To set a portal-wide default theme:<br />
1. Select a theme from the themes list.<br />
2. Click Set as default portal theme.<br />
If no theme is set for a page, the portal default theme is used.<br />
Setting the default skin<br />
Select a skin that is used as the default for all portlets across the portal.<br />
To set a portal-wide default skin for portlets:<br />
1. Select a skin from the skins list.<br />
2. Click Set as default portal skin.<br />
If no default skin is set for a theme, the portal default skin is used. You should not apply the skin with<br />
the name NoSkin to a portlet. This skin is intended for administrative portlets and renders the portlet<br />
without a title bar.<br />
Managing portlets on a page<br />
The Portlet Palette provides you with a collection of portlets that you can drag to the page for quick and<br />
easy page customization.<br />
The Portlet Palette is available in the Portal theme. To open the Portlet Palette, click the expand arrow<br />
icon:<br />
Note: The Portlet Palette is designed to work in the fly-out palette. Adding the Portlet Palette to a page<br />
could result in undesired results.<br />
You can organize and group the portlets available to you for deployment from your collection through<br />
the use of categories. Categories provide you with a way to organize your portlets using your own<br />
classification scheme. You can create new categories for grouping and organizing portlets in your<br />
collection, and you can rename categories as appropriate. You can customize the Portlet Palette further by<br />
rearranging categories, adding portlets to categories, and by moving portlets from one category to<br />
another. You can also search by title for portlets of interest. You can apply these customizations to your<br />
individual instance of the Portlet Palette or change the settings to affect all or selected instances of the<br />
Portlet Palette as needed.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
Setting up a portal site 163
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Adding portlets to a page by using the Portlet Palette<br />
The Portlet Palette provides you with a quick and easy way to deploy portlets to the page. You can drag<br />
a single portlet or multiple portlets within the same category to the page. Categories provide you with a<br />
way to organize portlets in the Portlet Palette. It is recommended that you only add portlets to the page<br />
using the drag-and-drop feature from the Portlet Palette.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
To add a portlet to a page, perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Click a portlet from your Portlet Palette and continue to hold the mouse key down. To select multiple<br />
portlets in a category, hold the Ctrl key down while clicking on the appropriate portlets.<br />
3. Drag the portlet to a destination on the page. A horizontal bar appears as you drag the portlet over<br />
areas on the page available for deployment. When you drag the portlet within close proximity of a<br />
permissible drop zone, the color of the horizontal bar changes from a muted to a more saturated tone.<br />
4. Drop the portlet to the page as appropriate by releasing the mouse key to add the portlet where you<br />
view a horizontal bar.<br />
5. Click the collapse arrow icon to close the Portlet Palette.<br />
Accessible alternative for adding a portlet to a page<br />
A mouse is required to use the drag-and-drop feature of your portal. Alternatively, you can use your<br />
keyboard to add portlets to a page as an accessible alternative to dragging portlets from the Portlet<br />
Palette to the page.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
164 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps as an alternative to using the drag-and drop feature for adding a portlet to a<br />
page:<br />
1. Navigate to the page that you want to add the portlet.<br />
2. Press the Tab key until you access the drop-down menu beside the page title.<br />
3. Press the Tab key until you highlight Edit Page Layout.<br />
4. From Edit Layout located on the <strong>Content</strong> page, press the Tab key until you highlight Add Portlets in<br />
the appropriate container where you want the portlet to be added.<br />
5. Use the features that are provided to select the portlets that you want to add. You must select the<br />
check box for each portlet that you want to add.<br />
6. Press the Tab key until you highlight OK to add the portlet to the container.<br />
7. Press the Enter key. The page is displayed with the portlet that you just added.<br />
Rearranging portlets on a page<br />
You can change the placement of individual portlets on a page using the drag-and-drop feature of your<br />
portal. The drag-and-drop feature is present for all themes and for row and column containers that are<br />
not locked. You should be logged into the portal site using an ID with sufficient access rights to modify a<br />
page.<br />
To cancel dropping the portlet on the page, you can drop the portlet over a destination on the page<br />
where it is not permissible to drop the portlet, or you can drop the portlet outside of the browser<br />
window. Perform the following steps for rearranging portlets on a page:<br />
1. Move the mouse toward the portlet title bar until your cursor changes to display the move indicator<br />
and then click the portlet title bar. Horizontal bars will appear over potential areas on the page<br />
where it is permissible to drop the portlet.<br />
2. Drag the portlet to a destination on the page. When you drag the portlet within close proximity of a<br />
permissible drop zone, the color of the horizontal bar changes from a muted to a more saturated tone.<br />
3. Drop the portlet to the page by releasing the mouse key to move the portlet to a new destination on<br />
the page.<br />
Accessible alternatives for rearranging portlets on a page<br />
A mouse is required to use the drag-and-drop feature of your portal. Alternatively, you can use your<br />
keyboard to rearrange portlets on a page as an accessible alternative to dragging portlets to a new<br />
destination on the page.<br />
Perform the following steps to rearrange a portlet on a page:<br />
1. Go to the page that contains the portlet that you want to move.<br />
2. Press the Tab key until you access the drop-down menu beside the page title.<br />
3. Change to the appropriate directory.<br />
Setting up a portal site 165
4. Press the Enter key and use the up or down arrows as appropriate until you highlight Edit Page<br />
Layout.<br />
5. From Edit Layout located on the <strong>Content</strong> page, press the Tab key until you highlight the appropriate<br />
arrow button for the portlet. The arrow buttons show the direction that you can move the portlet: left,<br />
right, up or down.<br />
6. Press the Enter key to move the portlet in the direction of the arrow.<br />
7. Press the Tab key until you highlight Done.<br />
8. Press the Enter key.<br />
Restricting the movability of portlets on a page<br />
You can define widths for containers. You can use this feature to restrict the possibility for users to move<br />
portlets on a page. The portal provides this functionality by a portlet placement filter or width filter. This<br />
width filter compares width of a portlet to the width of a column container. If the width of the portlet is<br />
larger than that of the container, the portlet cannot be moved to this container.<br />
To use the width filter, proceed by the following steps:<br />
1. Enable the filter in the portal configuration service. Set the property PortletPlacementFilterImpl to<br />
the following value com.ibm.wps.model.filters.portletplacement.impl.WidthFilterImpl.<br />
2. Set the maximum width for the portlet as required. Use the portlet for managing portlets and add the<br />
portlet parameter MAX_WIDTH with a positive numeric value. The value specifies pixels. Percent values<br />
are ignored by the width filter.<br />
3. Set the width for a column container as required. Use a positive numeric value. The value specifies<br />
pixels. Percent values are ignored by the width filter. To set the width for a column container, proceed<br />
by the following steps:<br />
a. Select the option for editing the page layout.<br />
b. Select the option for configuring the portlet or editing its shared settings.<br />
c. Check the box for showing the toggle link for showing or hiding the layout tools and click OK.<br />
d. Click the link for showing the layout tools.<br />
e. Click the double arrow for setting the column width,<br />
f. Type a numeric value into entry field. The value specifies pixels. Percent values are ignored by the<br />
width filter.<br />
g. Click OK. A message confirms that you have set the column container width.<br />
Creating a category<br />
Categories provide you with a way to organize your portlets using your own classification scheme. You<br />
can create new categories for grouping and organizing portlets in your collection.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
166 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Click on the drop-down menu located by the Portlets title bar.<br />
3. Click Create New Category.<br />
4. Type a name for your new category.<br />
5. Click OK to save your changes.<br />
6. Click the collapse arrow icon to close the Portlet Palette.<br />
Searching for portlets<br />
You can search for a portlet in the Portlet Palette by entering part or all of the portlet title in the Search<br />
field. The search is not case-sensitive, and only portlets where you have the correct permissions are<br />
displayed in your search results.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Type part or all of the portlet title in the Search field.<br />
3. Click .<br />
4. Drag the portlet to the page as appropriate.<br />
5. Click Cancel to restore the view you were in before launching the search.<br />
6. Click the collapse arrow icon to close the Portlet Palette.<br />
Limiting search results<br />
The number of search results is limited by a configuration parameter which can be changed by the<br />
administrator. The default value limits the search results to 100.<br />
To change the number of search results displayed in the Portlet Palette to a value other than 100, perform<br />
the following instructions:<br />
1. Click Administration.<br />
2. Click Portlet Management.<br />
3. Click Portlets.<br />
Setting up a portal site 167
4. Locate the Portlet Palette and click Configure portlet.<br />
5. Locate the SearchResultsLimit parameter and update the value to reflect the new search results limit.<br />
6. Refer to the help that is available from the portlet menu located in the Manage Portlets title bar.<br />
Rearranging categories in the Portlet Palette<br />
You can rearrange a category by dragging the category to a new destination in the Portlet Palette.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Move the mouse toward the appropriate category title until your cursor changes to display the move<br />
indicator and then click on the appropriate category.<br />
3. Drag the category to the appropriate location in the Portlet Palette. A horizontal line appears over<br />
areas in the Portlet Palette where you can rearrange your category.<br />
4. Drop the category by releasing the mouse key to finish rearranging your category in the Portlet<br />
Palette.<br />
Note: The category you are rearranging is placed before the category you drop it on in the Portlet<br />
Palette.<br />
5. Click the collapse arrow icon to close the Portlet Palette.<br />
Moving portlets to another category<br />
You can drag a copy of a portlet from one category to another category to customize the Portlet Palette. A<br />
portlet is not removed from the original category when you move this portlet to another category. When<br />
you drag a portlet to another category, you can only move this portlet to one category at a time. You can<br />
also add a copy of a portlet to multiple categories at one time by accessing the drop-down menu by the<br />
portlet name in the category.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
168 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps to move a portlet to another category:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Click on a portlet in a category and continue to hold the mouse key down. To select multiple portlets,<br />
hold the Ctrl key down while clicking on the appropriate portlets.<br />
3. Drag the portlet to the appropriate category in your Portlet Palette. A horizontal line appears as you<br />
drag the portlet over areas in a category that you can move the portlet. When you move a portlet to a<br />
category, the portlet is placed in alphabetical order among the portlets already contained in this<br />
category.<br />
4. Drop the portlet by releasing the mouse key to move your portlet to another category.<br />
5. Click the collapse arrow icon to close the Portlet Palette.<br />
Copying a portlet to multiple categories<br />
You can add a copy of a portlet in a category to multiple categories at one time if you have the proper<br />
access level. If you only need to add a copy of a portlet to a single category, you can simply drag a copy<br />
of the portlet to the appropriate category. A portlet is not removed from the original category when you<br />
add a copy of this portlet to multiple categories.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Hover by the portlet name and click the arrow to display the pop-up menu.<br />
3. Click Add to Other Categories.<br />
4. Select the check boxes of the appropriate categories to add the portlet to these categories.<br />
5. Click OK to save your changes.<br />
6. Click the collapse arrow icon to close the Portlet Palette.<br />
Setting up a portal site 169
Renaming a category in a palette<br />
Default categories are provided to you in the Portlet Palette. Depending on your access level, you can<br />
customize your Portlet Palette by renaming these categories and categories you later create to provide the<br />
best organizational scheme for portlets in your Portlet Palette.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Click the drop-down menu located by the category name.<br />
3. Click Rename Category.<br />
4. Type a new name for your category.<br />
5. Click OK to save your changes.<br />
6. Click the collapse arrow icon to close the Portlet Palette.<br />
Setting the category titles for other languages<br />
When you rename a category in the Portlet Palette, you have the option to edit the category names for<br />
other languages.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
170 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
2. Click on the drop-down menu located by the category name.<br />
3. Click Rename Category.<br />
4. Click Set titles for other languages to view the titles that are currently set for a list of languages.<br />
5. Click Edit to change the category title for the appropriate language.<br />
6. Enter a new title for this language in the field provided.<br />
7. Repeat steps 5-6 to edit the category titles for other languages.<br />
8. Click OK once you finish editing category titles for the appropriate languages. Once you click OK,<br />
you will return to the view for renaming a category.<br />
9. Click OK to save your changes.<br />
10. Click the collapse arrow icon to close the Portlet Palette.<br />
Resetting the Palette to the default settings<br />
You can return the Portlet Palette to the default settings currently maintained by your administrator.<br />
Resetting the Portlet Palette to use the current administrator settings removes any customizations you<br />
have made.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Click on the drop-down menu located by the Portlets title bar.<br />
3. Click Reset to Defaults.<br />
4. Click OK to confirm that you want to reset the portlet collection to the default values.<br />
5. Click the collapse arrow icon to close the Portlet Palette.<br />
Deleting a category<br />
You can delete a category in the Portlet Palette as needed if you have the proper access level.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
Setting up a portal site 171
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
Perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Click the drop-down menu located by the category name.<br />
3. Click Delete Category.<br />
4. Click the collapse arrow icon to close the Portlet Palette.<br />
Deleting a portlet from a Palette category<br />
You can delete a portlet from a category in the Portlet Palette as needed.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
To delete a portlet from a category, perform the following steps:<br />
1. Click the expand arrow icon to open the Portlet Palette.<br />
2. Hover by the portlet name and click on the arrow to display the pop-up menu.<br />
3. Click Delete Portlet.<br />
4. Click OK to confirm that you want to delete this portlet from your category.<br />
5. Click the collapse arrow icon to close the Portlet Palette.<br />
Modifying Palette settings<br />
You can change the settings to affect all instances of the Portlet Palette on every page or selected<br />
instances of the Portlet Palette by selecting a different portlet mode. When you initially open the Portlet<br />
Palette, you are either in the View or Personalize mode depending on your access level.<br />
When working with the Portlet Palette, keep the following tips in mind:<br />
v You should be logged in to the portal site using an ID with sufficient access rights to modify a page.<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. The portlets available to you are also filtered by any restricted portlet<br />
lists that exist for a page.<br />
172 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v The drag-and-drop feature is present for default portal themes in rows and containers that are not<br />
locked.<br />
v Entries in the Portlet Palette could become obsolete. For example, when an administrator deletes a<br />
portlet from the portal while a user is creating or editing pages, the user may not be aware of these<br />
updates. A user must log out and log back in to the portal to view the changes made by the<br />
administrator. If a user attempts to drag a portlet from the Portlet Palette when the portlet no longer<br />
exists, a message is recorded to the portal logs. Although this is a rare situation, administrators should<br />
not remove and add portlets during normal business hours.<br />
v The Portlet Palette does not support the use of double quotes in category names.<br />
v The Portlet Palette is available in the Portal theme.<br />
These instructions assume that you are leaving the View or Personalize mode to modify the settings for<br />
other users by using the Edit Shared Settings or Configure mode as appropriate. Depending on your<br />
access level, you may not see all of these options.<br />
You cannot drag portlets to the page while in Edit Shared Settings and Configure modes.<br />
Perform the following steps to change the settings of the Portlet Palette:<br />
1. Click on the drop-down menu located in the Portlets title bar.<br />
2. Click Edit Shared Settings or Configure as appropriate.<br />
a. The Edit Shared Settings mode allows you to change the default look of the Portlet Palette for all<br />
users. The updates you make here will affect all users who view the Portlet Palette on this page.<br />
The changes will not be reflected on any instances of this portlet that appear on other pages.<br />
b. The Configure mode allows you to change the default look of this portlet for all users across all<br />
pages. The updates you make here will affect all users who view this portlet on any page.<br />
3. To exit Edit Shared Settings or Configure modes, click the drop-down menu located in the Portlets<br />
title bar and select Back.<br />
Access control for the Palette<br />
Access control for customizing and working with the Portlet Palette is based on portlet roles, portlet<br />
modes, and page permissions. By default, users are assigned to the All Authenticated Portal Users role<br />
which only provides read access to the Portlet Palette. Users will only see portlets on the Portlet Palette<br />
that they have user access to view.<br />
Permissions for portlet and page roles<br />
The following table provides descriptions for the available permissions associated with different portlet<br />
roles.<br />
Table 26. Available permissions associated with different portlet roles<br />
Portlet and Page Roles<br />
User@portlet, User@Portlet Palette<br />
page<br />
Description of Permissions<br />
Read-only access to the Portlet Palette. Users can drag portlets from the<br />
Portlet Palette to the page but cannot modify or customize the Portlet<br />
Palette.<br />
Setting up a portal site 173
Table 26. Available permissions associated with different portlet roles (continued)<br />
Portlet and Page Roles<br />
Description of Permissions<br />
Privileged User@portlet, Privileged<br />
User@Portlet Palette page<br />
Editor@portlet, Editor@Portlet Palette<br />
page<br />
All of the privileges of the User role, plus the ability to customize your<br />
private view of the Portlet Palette while in the Personalize mode. You can<br />
perform the following tasks:<br />
v Adding a portlet to category<br />
v Creating a category<br />
v Searching for portlets<br />
v Rearranging categories<br />
v Coping a portlet to another category<br />
v Copying a portlet to multiple categories<br />
v Renaming a category you create<br />
v Deleting a category you create<br />
v Deleting a portlet you add to a category<br />
v Deleting a portlet you copy to another category<br />
Note: You cannot delete portlets or categories that are created in the Edit<br />
Shared Settings and Configure modes.<br />
All of the privileges of the User role, plus the ability to customize the<br />
Portlet Palette while in the Edit Shared Settings mode. These changes will<br />
display to all users who have access to this specific page. You can perform<br />
the following tasks while in the Edit Shared Settings mode:<br />
v Adding a portlet to category<br />
v Creating a category<br />
v Searching for portlets<br />
v Rearranging categories<br />
v Coping a portlet to another category<br />
v Copying a portlet to multiple categories<br />
v Renaming a category that you create<br />
v Deleting a category created in this mode<br />
v Deleting a portlet you copy to another category in this mode<br />
Note:<br />
v In order to Personalize your individual instance of the Palette, you must<br />
also have Privileged User access role on the Portlet Palette.<br />
v You cannot drag portlets to the page while in the Edit Shared Settings<br />
mode.<br />
v You cannot delete portlets or categories that are created in the Configure<br />
mode.<br />
174 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 26. Available permissions associated with different portlet roles (continued)<br />
Portlet and Page Roles<br />
<strong>Manager</strong>@portlet, <strong>Manager</strong>@Portlet<br />
Palette page<br />
Administrator@portlet,<br />
Administrator@Portlet Palette page<br />
Description of Permissions<br />
All the privileges of the Editor role plus the ability to modify all instances<br />
across all pages of the Portlet Palette while in the Configure mode. You can<br />
perform the following tasks while in the Configure mode:<br />
v Adding a portlet to category<br />
v Creating a category<br />
v Searching for portlets<br />
v Rearranging categories<br />
v Coping a portlet to another category<br />
v Copying a portlet to multiple categories<br />
v Renaming a category<br />
v Deleting a category<br />
v Deleting a portlet you copy to another category<br />
Note:<br />
v In order to Personalize your individual instance of the Portlet Palette, you<br />
must also have Privileged User access role on the Portlet Palette.<br />
v You cannot drag portlets to the page while in the Edit Shared Settings or<br />
Configure modes.<br />
All the privileges of the Privileged User and <strong>Manager</strong> roles. The<br />
Administrator role can perform tasks within the Personalize, Edit Shared<br />
Settings, and Configure modes.<br />
Note: You cannot drag portlets to the page while in the Edit Shared Settings<br />
or Configure modes.<br />
Using portlet wires<br />
Use wires to exchange information or actions between portlets.<br />
To access the wiring Tool portlet, proceed as follows:<br />
1. Access the Manage Pages portlet.<br />
2. Locate the page for which you want to add wires.<br />
3. Click the Edit Page Layout icon for that page. This takes you to the Edit Layout panel.<br />
4. Click the Wires tab. You can now start working with wires.<br />
Working with portlet wires<br />
Wires allow portlets to interact with each other. For example, portlets can exchange information, or an<br />
action in one portlet can update another portlet.<br />
A wire allows two or more portlets to transfer information so that an action, publishing event, or click in<br />
a source portlet automatically triggers an action or event and updates the display in the target portlet. As<br />
a result, multiple portlets can be updated simultaneously when information is changed. You can create<br />
wires only between cooperative portlets and portlets that define events, that is portlets that have been<br />
developed to share information with other portlets. When you first open the Wires portlet, all public<br />
wires and your personal wires for the page are displayed.<br />
Use the Wires portlet to perform the tasks described in the topics listed below. When you have completed<br />
working with the wires, click Done to save your changes. You are returned to the page from which you<br />
first accessed Wires.<br />
Notes:<br />
Setting up a portal site 175
1. While you make changes to the wires on its page, the page is deactivated.<br />
2. While you edit the page, all changes are effective immediately. You cannot undo or cancel your<br />
updates.<br />
3. Other users will not be able to access the page until you commit the changes by clicking Done.<br />
4. For a complete description of portal terms such as portlet, refer to the portal page help.<br />
Selecting the matching mode<br />
Select the matching mode to determine under which circumstances a wire can be created between<br />
portlets.<br />
The matching mode that you select determines whether or not a wire can be created between a source<br />
portlet and a target portlet, depending on the semantic or payload types that the portlets support. Before<br />
you create a wire, select one of the following matching modes:<br />
Consider semantic types only for matching sources and targets.<br />
This option determines that a wire can be created if the namespaced semantic types defined for<br />
the source and target portlets match. The payload type of the information that is transported over<br />
the wire is not taken into consideration. For example, this payload type can be java.lang.string<br />
or java.util.HashTable. This is the default matching mode. This mode is the most similar one to<br />
portal versions earlier than Version 6.1.<br />
Consider payload types only for matching sources and targets.<br />
By this option a wire can be created if the payload types of the source and target portlets match,<br />
regardless of the namespaced semantic type defined for the source and target portlets.<br />
Consider semantic or payload type for matching sources and targets.<br />
By this option a wire can be created if the namespaced semantic types or the payload types of the<br />
source and target portlets match. This is the least restrictive matching mode.<br />
Adding a wire<br />
Learn how to add a wire.<br />
Prerequisites:<br />
1. If you create a cross-page wire, make sure that the target portlet has global targets defined. Refer to<br />
“Defining global targets” on page 177 for more information.<br />
2. Before you create a wire, select the matching mode. The matching mode specifies the criteria that<br />
determine whether a wire can be created or not. For details refer to “Selecting the matching mode.”<br />
To create a wire, proceed as follows:<br />
1. From the table for adding a new wire, select an option from each of the following drop-down lists:<br />
Source portlet<br />
The portlet that sends the information to other portlets on the page. You can only select<br />
portlets on the page that provide information for other portlets.<br />
Sending<br />
The type of information that the portlet is capable of sending.<br />
Target page<br />
The page that contains the communication target. The drop down list contains only peer<br />
pages that have global targets defined. If the required page is not listed, select More. Then<br />
select the required page or search for the target page.<br />
Note: If a target page with no global targets defined is selected for cross-page wires, you will<br />
not be able to select target portlets or communication targets.<br />
176 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Switch page<br />
This flag is relevant for cross-page wires only. Use it to disable and enable the redirect to the<br />
target page of the wire. This flag does not have any influence on the actual processing of the<br />
wire target action or event. If multiple cross-page wires that point to different pages are<br />
invoked at the same time, make sure that only one of these has the page switch flag set. You<br />
need to do this to determine unambiguously to which target page the user will be directed.<br />
Target portlet<br />
The portlet that receives the information from the source. Only portlets that can process the<br />
Sending information are shown.<br />
Receiving<br />
The action that the portlet can perform or the event that the portlet can process after receiving<br />
the information. Only actions that can handle the selected information are shown.<br />
2. Optional: You can also select to create private wires for personal use instead. By default, wires that<br />
you create are public wires for all users if you have the required privileges. If you do not have the<br />
privileges required to create public wires, you can only create private wires.<br />
3. When you have completed your changes, click the Add new wire icon. The new wire appears in a<br />
list of all wires on the page each time you edit the wires for the page.<br />
Deleting a wire<br />
Learn how to delete a wire.<br />
To delete a wire, proceed as follows:<br />
1. Click the Delete icon in the row for the wire you want to delete. A message is displayed for you to<br />
confirm whether to delete the wire.<br />
2. Click OK. The wire is deleted from the list.<br />
Defining global targets<br />
Learn how to define global targets.<br />
Cross-page wires allow portlets to exchange properties across pages. Before you create a cross-page wire,<br />
you must define communication targets for the target page as global on its portlets. Defining a target as<br />
global will also make that target available to Click-to-Action menus. To set global targets on the target<br />
page, proceed by the following steps:<br />
1. Navigate to the target page on the portal.<br />
2. Select Edit Page<br />
3. Select the Wires tab.<br />
4. Click the Define Global Targets ...button.<br />
5. Select Global to make a communication target on a portlet available to wires and Click-to-Action<br />
menus from cooperative portlets on other pages.<br />
6. Click OK to enable the communication targets.<br />
7. For details about how to add a cross-page wire refer to “Adding a wire” on page 176.<br />
Designing and setting up a portal site<br />
<strong>Web</strong>Sphere Portal 7 provides improved page builder and improved client side rendering and has a new<br />
default portal theme, the Page Builder theme. Themes define how your portal site will look. After<br />
installation, a default theme is deployed and you can either customize that theme or create your own.<br />
The new themes approach introduced in 7 involves less editing of JSPs and allows you to mix iWidgets<br />
and portlets on the same portal page and take advantage of both client side and server side rendering<br />
Setting up a portal site 177
mode. <strong>Web</strong>Sphere Portal 7 continues to support other themes, including your custom themes. If you have<br />
an existing portal site you can continue to use your existing themes or you can migrate your themes to<br />
the new standard.<br />
Tip: To view your changes without restarting the server, follow the steps described in the Enabling<br />
automatic JSP reloading section.<br />
The following list shows which themes are available with and supported by <strong>Web</strong>Sphere Portal Version<br />
7.0:<br />
Page Builder theme<br />
This theme is shipped with the portal and deployed as the portal default theme.<br />
Breadcrumb - Free Form Layout<br />
Breadcrumb - Column Layout<br />
These themes are shipped with the portal and supported, but not installed. To be able to use<br />
these themes, you need to run the configuration task deploy-portal-mashup-ui .<br />
Tab Menu - Page Builder theme<br />
Portal <strong>Web</strong>2 theme<br />
These themes are shipped with the portal and supported, but not installed. To be able to use<br />
these themes, you need to deploy them. They are located under the following directory:<br />
PortalServer_root/installer/wp.ear/installableApps/wps_theme.ear/wps_theme.war/themes/<br />
html<br />
<strong>IBM</strong> theme<br />
Other themes from portal V 6.0.x<br />
These themes are also supported, but they are not shipped with portal Version 7.0.<br />
Your own custom themes<br />
Designing a site using Page Builder themes and skins<br />
<strong>IBM</strong> <strong>Web</strong>Sphere Portal Version 7.0 introduces a page and theme architecture that allows you to mix<br />
iWidgets and portlets on the same portal page and take advantage of both client side and server side<br />
rendering mode. This can simplify creating and editing themes for you.<br />
Here is an overview of the new architecture:<br />
v Static pages use plain HTML. This can include placeholders for dynamic content, such as portlets or<br />
iWidgets. You can create and edit static pages by using an HTML editor tool of your choice.<br />
v The Page Builder theme allows you to render and edit static pages that include portlets and iWidgets.<br />
The theme allows you for each page to configure whether that page is rendered in client side<br />
aggregation mode, or in server side aggregation mode. Users with editor rights on the page can toggle<br />
pages between client side and server side mode. The Page Builder theme consists of a plain HTML file<br />
and several other components. You can customize it by using a HTML editor tool of your choice. The<br />
portal provides several include files that you can use to add the logic for starting and editing the page.<br />
v You can use portlets and iWidgets to add application logic to a static page. JSR168 and 286 define the<br />
standard for portlets, and the iWidget specification 2.0 defines iWidgets. Both portlets and iWidgets are<br />
self-contained pieces of application logic that you can develop, deploy, and use in a flexible manner.<br />
You need to distinguish between the types of code and its execution:<br />
– Portlets are written as Java code. They are designed to be executed in a portlet container on the<br />
server side. If they are rendered by client side execution instead, the portal translates them into<br />
iWidgets markup that can be executed in the browser.<br />
– iWidgets are written as Javascript logic. They are designed to be executed in the browser on the<br />
client side. For server side execution the portal wraps iWidgets into portlets.<br />
178 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
You can use the Common Component portal configuration service to configure common component<br />
properties for working with Page Builder themes and skins. For details refer to the topic about the<br />
Common Component Service.<br />
Related tasks:<br />
“Working with Page Builder” on page 129<br />
Page creation and customization is easier than ever before. You can create a page with a single click by<br />
using the Page Builder theme. Users can use the portal Page Builder feature to quickly and easily create,<br />
customize, and share pages with teammates and community members. They can add content to these<br />
pages using a variety of sources made available on the content catalog, such as portal portlets and shared<br />
pages. Other custom content sources that you can configure include <strong>IBM</strong> Mashup Center feeds, widgets,<br />
and pages, and <strong>IBM</strong> <strong>Lotus</strong> Connections activities, communities, and social bookmarks.<br />
The Page Builder theme<br />
The Page Builder theme facilitates the rapid creation, customization, and sharing of portal pages. Page<br />
Builder supports a page and theme architecture that allows you to mix iWidgets and portlets on the same<br />
portal page and take advantage of both client side and server side rendering mode. This can simplify<br />
creating and editing themes. You can work with and customize themes, theme resources, theme<br />
templates, skin templates, widgets, and portlets.<br />
Working with themes:<br />
Portal themes need to fulfill a set of requirements.<br />
The minimal requirements for a theme are these:<br />
v A theme must be registered in the portal database.<br />
v A theme must contain a Default.jsp that the portal server calls to render a page that has this theme<br />
assigned.<br />
When the Default.jsp is executed, the theme needs to do the following:<br />
v Initialize the page structure, head, and body sections given by HTML or other markup<br />
v Load any common resources required by the theme or page contents, such as JavaScript and CSS<br />
v Render the structure of the site, for example the banner and footer of the page<br />
v Render the navigation to provide the user a way to navigate from page to page within the site<br />
v Render the contents of the current page.<br />
Traditionally themes have used JSPs and related technologies to meet these requirements. Static based<br />
theme elements have been introduced to provide a way to implement themes that work with static<br />
HTML, CSS, and JavaScript, without having to work with JSPs and other J2EE artifacts.<br />
Note: For <strong>Web</strong>Sphere Portal Version 7 and later versions you need theme management rights to be able<br />
to create, update, and delete themes and skins. For details refer to the portal information center topics<br />
about access rights.<br />
Elements of a theme:<br />
Themes contains various elements that you can work with, including JSPs, theme HTML, layout<br />
templates, and skins.<br />
Default.jsp:<br />
The file Default.jsp is one of the main entry points for a theme that is deployed to an enterprise web<br />
application on the portal by using a standard J2EE WAR file. The file Plain.jsp is another possible entry<br />
point. It is commonly used for portlet helps or for rendering a portlet with the iframe skin.<br />
To achieve rendering the page in the portal, the Default.jsp can use the following mechanisms:<br />
Setting up a portal site 179
v include other JSPs<br />
v reference static resources<br />
v execute other server side logic.<br />
In the default case with the theme architecture of <strong>Web</strong>Sphere Portal V 7 and later versions, the Default.jsp<br />
can be simple. It bootstraps any required infrastructure, and then delegates all markup rendering to the<br />
static theme.html file.<br />
Page Builder theme templates (theme.html):<br />
You can use static HTML to write portal themes. The static theme template is named theme.html .<br />
A theme.html file is located in the root directory of the theme on <strong>Web</strong>DAV \fs-type1\themes\themename\,<br />
and there are localized theme.html files located within the nls directory under the theme<br />
\fs-type1\themes\theme-name\nls\ . The theme.html includes the full HTML structure of the page<br />
including , , and sections. It can include both static and dynamic content.<br />
Notes:<br />
v The folder nls contains a file named theme.html without a locale associated with it. This file is not<br />
used. You can ignore it.<br />
v Remember to modify the theme template files by using the <strong>Web</strong>DAV entry point fs-type1 . When you<br />
use this entry point, your changes to the theme template are immediately reflected upon a browser<br />
refresh.<br />
Root theme template<br />
In a default <strong>Web</strong>Sphere Portal installation, the portal does not render the template file theme.html located<br />
in the root directory of the theme. Instead, this file links to the localized templates, and the portal renders<br />
the appropriate localized template. The links to the localized templates are in the section of the<br />
root template. They have the following form:<br />
<br />
An example of a link to the English template file is as follows:<br />
<br />
If you do not want to use localized theme templates, you can remove these links from the top section of<br />
the theme.html template in the root directory. If you do this, the portal renders this root template.<br />
This theme template also includes Apache ANT scripting in the following form:<br />
${bundle_name:bundle_key:character_encoding}<br />
The character encoding replaces special characters with the escape sequence determined by the specified<br />
encoding. The available types of encoding are xml or json . You can chain multiple instances of encoding<br />
as follows:<br />
${bundle:key:json:xml} or ${bundle:key:xml:json}<br />
You can use the Apache ANT build framework to generate localized templates based on this root<br />
template. This can be useful if you want to update one template during development and then generate<br />
the localized templates by using the ANT build process. If you want to use only the root template,<br />
replace the ANT scripting with the preferred text that you want to be rendered. You can learn more about<br />
the ANT build tool here at the web link to the Apache Ant Welcome page given below.<br />
180 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Localized theme templates<br />
In a default <strong>Web</strong>Sphere Portal installation, Page Builder renders content by using the localized theme<br />
templates. These templates are located in the nls subdirectory under the theme directory on <strong>Web</strong>DAV.<br />
These files have the locale code appended to the end of the template name, for example theme_en.html<br />
for English. These templates have translated static text inline within the template.<br />
When you use the localized theme templates and want to view your changes, update the template that<br />
the portal renders in the browser. For example, if your preferred language is English, update the<br />
filetheme_en.html .<br />
Adding static content to the theme.html<br />
You can add static content to the theme.html in the following ways:<br />
Adding content directly:<br />
You can add static content, such as HTML markup and images directly to the file theme.html .<br />
Adding content from <strong>Web</strong>DAV:<br />
You can add content that is located in <strong>Web</strong>DAV relative to the theme.html file with a relative URL<br />
reference.<br />
Adding content by relative URLs:<br />
You can use relative URLs to reference static content located in the /common-resources/ folder in<br />
the <strong>Web</strong>DAV file store. If the relative path does not successfully resolve to a file within the theme<br />
folder, the portal uses the folder /common-resources/ as a fallback location to locate the resource.<br />
This way the theme can reference common resources and still preserve the ability to override a<br />
file in that folder with a resource of the same name in the theme folder.<br />
Adding server-side dynamic content to the theme.html<br />
Dynamic content changes per user, or per page, or per some other server state. Therefore you cannot<br />
define it statically in the theme file. Instead, you insert it into the response at runtime. To do this, you<br />
edit the theme.html and identify these dynamic content spots. Then at runtime a server side theme parser<br />
identifies and resolves dynamic content spots, and streams their output into the final response to the<br />
browser.<br />
The format of a dynamic content spot is as follows:<br />
<br />
rel="dynamic-content"<br />
The theme template parser recognizes the element rel="dynamic-content" . It resolves the href<br />
attribute and inserts its output into the response.<br />
href<br />
The href can point to any URI that is resolved by the resource addressability framework.<br />
Examples:<br />
1. The following example is a special content spot that renders the referenced layout template and<br />
content of the current page:<br />
<br />
2. The following example includes a dynamic content spot from the mapping that is specified in the<br />
WP_Dynamic<strong>Content</strong>SpotMappings REP or theme metadata:<br />
<br />
3. The following example includes the output of a theme JSP using a resolver POC URL :<br />
<br />
Setting up a portal site 181
Adding client-side dynamic content to the theme.html<br />
Dynamic content can also be added to the theme after the browser receives the response. To do this, use<br />
JavaScript, AJAX, iWidget components, or other client-side technologies. You can add iWidget<br />
components by either of the following options:<br />
v You can add an iWidget definition directly to the theme.html. When the portal loads the page, it parses<br />
the entire markup of the page for iWidgets and instantiates the widgets.<br />
v You can add the iWidget to a server-side JSP dynamic content spot. This allows the JSP to return the<br />
initial markup for the iWidget in the initial browser response, while the widget is parsed at page load<br />
and handles subsequent user interactions. This avoids the rendering flicker caused by the small time<br />
delay between the browser receiving the response and the widget parsing, loading and rendering.<br />
For more details about Dynamic content spots see Working with dynamic content spots.<br />
Changing the theme template location<br />
You can change the location of the theme template. For this purpose, the theme contains a metadata<br />
parameter that stores the location of the theme template theme.html . The parameter name is<br />
com.ibm.portal.theme.template.ref . If required, you can point it to an external location. For example,<br />
you can specify a POC URI or the URL to an external server. Therefore you do not necessarily need to<br />
store the theme template on <strong>Web</strong>DAV. In a default portal installation, the metadata parameter for the<br />
Page Builder theme looks as follows:<br />
<br />
<br />
<br />
Related tasks:<br />
http://ant.apache.org/: Apache Ant Welcome page<br />
Related reference:<br />
“Working with dynamic content spots” on page 202<br />
You can add dynamic content to your custom theme by using either client-side or server-side logic.<br />
Theme layout templates (layout.html):<br />
Layout templates control the layout and positioning of the content on a page. The static layout template<br />
is called layout.html . The author of the layout template defines the HTML fragment markup and CSS<br />
for the layout of the page. The HTML fragment uses microformat to specify containers and components,<br />
such as portlets and iWidgets, to include in the page.<br />
Example<br />
<br />
<br />
<br />
<br />
<br />
<br />
The example above defines a two-column layout, with a hidden container for widgets which participate<br />
in the wiring of the page, but are not visible themselves. The meaning of the elements is as follows:<br />
class="component-container"<br />
The static page parser recognizes this microformat to define containers in the page layout model<br />
that can contain components. These components can be portlets or widgets.<br />
182 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
name="ibmMainContainer"<br />
The name attribute on a component container identifies that container uniquely to the page. The<br />
static page parser uses the name to correlate containers when it updates the page definition.<br />
Using consistent names across layout templates preserves your container contents across template<br />
switches.<br />
class="ibmDndColumn"<br />
class="ibmDndRow"<br />
These classes are required for client-side drag and drop support.<br />
class="ibm2Col"<br />
class="ibmRightCol"<br />
These classes provide CSS positioning information. These classes will differ, depending on the<br />
requirements of the particular layout.<br />
Adding portlets and iWidgets to layout templates<br />
You can add portlets and iWidgets directly to the layout template definition by using the portlet<br />
microformat for static pages, or the iWidget definition specification. You can add portlets or iWidgets<br />
inside or outside of containers. The template is applied to the page as a copy. Therefore every page that<br />
uses the template has a new instance of the portlet or iWidget.<br />
Related tasks:<br />
“Registering iWidgets for use with the Page Builder theme” on page 197<br />
To make your portal aware of available iWidgets, you register the iWidget definitions in your portal by<br />
telling the portal the location from where it can load the iWidget definition XML.<br />
Skin layout templates (skin.html):<br />
The portal provides a base skin template and localized skin templates. The static skin template is named<br />
skin.html .<br />
The skin.html file is located in the root directory of the skin on <strong>Web</strong>DAV \fs-type1\skins\skin-name\,<br />
and there are localized skin.html files located within the nls directory under the skin<br />
\fs-type1\skins\skin-name\nls\ . The skin.html provides the full markup for decoration around a<br />
portlet or iWidget. Just as with theme templates, you can use dynamic content spots to add dynamic<br />
elements to the skin template at runtime.<br />
Notes:<br />
v The folder nls contains a file named skin.html without a locale associated with it. This file is not used.<br />
You can ignore it.<br />
v Remember to modify the skin template files by using the <strong>Web</strong>DAV entry point fs-type1 . When you<br />
use this entry point, your changes to the skin template are immediately reflected upon a browser<br />
refresh.<br />
Root skin template<br />
In a default <strong>Web</strong>Sphere Portal installation, the portal does not render the template file skin.html located<br />
in the root directory of the theme. Instead, this file links to the localized templates, and the portal renders<br />
the appropriate localized template. The links to the localized templates are at the top of the root template.<br />
They have the following form:<br />
<br />
An example of a link to the English template file is as follows:<br />
<br />
Setting up a portal site 183
You can place the class ibmHideTemplate on these links so that the browser does not expose the anchor<br />
element in the user interface. This class makes sure that accessible technologies, such as screen readers,<br />
do not encounter these links in the tabbing order.<br />
If you do not want to use localized skin templates, you can remove these links from the top section of the<br />
skin.html template in the root directory. If you do this, the portal renders this root template.<br />
This skin template also includes Apache ANT scripting in the following form:<br />
${bundle_name:bundle_key:character_encoding}<br />
The character_encoding replaces special characters with the escape sequence determined by the specified<br />
encoding. The available types of encoding are xml or json . You can chain multiple instances of encoding<br />
by or as follows:<br />
${bundle:key:json:xml} or ${bundle:key:xml:json}<br />
You can use the Apache ANT build framework to generate localized templates based on this root<br />
template. This can be useful if you want to update one template during development and then generate<br />
the localized templates by using the ANT build process. If you want to use only the root template,<br />
replace the ANT scripting with the preferred text that you want to be rendered. You can learn more about<br />
the ANT build tool here at the web link to the Apache Ant Welcome page given below.<br />
Localized skin templates<br />
In a default <strong>Web</strong>Sphere Portal installation, Page Builder renders content by using the localized skin<br />
templates. These templates are located in the nls subdirectory under the skin directory on <strong>Web</strong>DAV.<br />
These files have the locale code appended to the end of the template name, for example skin_en.html for<br />
English. These templates have translated static text inline within the template.<br />
When you use the localized skin templates and want to view your changes, update the template that the<br />
portal renders in the browser. For example, if your preferred language is English, update the<br />
fileskin_en.html .<br />
Server-side dynamic content spots<br />
<br />
This inserts the portlet title into the skin.<br />
<br />
This renders the content of the portlet.<br />
Client-side dynamic content spots<br />
Client-side content spots are replaced at page load time or at runtime via JavaScript by the<br />
RuntimeSkinModel and live text service.<br />
class='lm-dynamic-icon'<br />
This provides a client-side way for changing the icon for the portlet or iWidget in the skin<br />
dynamically.<br />
For example, to set the icon, the second parameter is a URL that is the src of the icon img tag.<br />
skinNode.setDynamic<strong>Content</strong>(skinConstants.DYNAMIC_CONTENT_ICON, "http://www.mysite.com/icon.gif")<br />
Where:<br />
v var controlId = the string ID of the layout node for which the title or icon is changed<br />
v var runtimeSkinModel = com.ibm.mashups.enabler.runtime.skin.Factory.getRuntimeSkinModel()<br />
v var skinNode = runtimeSkinModel.find(controlId)<br />
184 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v var skinConstants = com.ibm.mashups.enabler.runtime.skin.Constants<br />
However, the skins starting in Mashups 2.4 (and therefore in portal V 7) do not contain the<br />
lm-dynamic-icon spot. If you want support for a dynamic icon, you need to add an image tag to<br />
the titlebar markup in the skin HTML template:<br />
<br />
<br />
this.contextMenu = dojo.query(".decoration-contextMenu", rootNode)[0]; // rootNode is the control root DOM node<br />
if(this.contextMenu) {<br />
this.connect(this.contextMenu, "onclick", "openContextMenu");<br />
}<br />
For more examples, review the decoration modules located within the file skin.js on <strong>Web</strong>DAV.<br />
This file is located at /fs-type1/skins/skin_name/skin.js .<br />
Related tasks:<br />
http://ant.apache.org/: Apache Ant Welcome page<br />
Location of theme resources:<br />
This topic lists the location of theme resources. Theme resources can be either dynamic J2EE resources or<br />
static resources, such as HTML, CSS, JavaScript, and image files.<br />
The theme has two types of resoursces:<br />
Dynamic J2EE resources<br />
Dynamic J2EE resources consist of JSPs. Dynamic resources must be located in a WAR file, as<br />
they must be compiled and executed on the server.<br />
Static resources<br />
Static resources consist of static HTML, CSS, JavaScript, and image files. Static resources can be<br />
located either in <strong>Web</strong>DAV or in a WAR file.<br />
In a default portal installation, the content stored in <strong>Web</strong>DAV consists of static resources, such the theme,<br />
skin, and layout templates, as well as CSS, images, and JavaScript. The dynamic resources, such as JSPs<br />
are deployed in a WAR file. They are used by dynamic content spots within the theme and skin<br />
templates. To learn more about dynamic content spots, refer to Working with dynamic content spots.<br />
Note: Do not edit any of the themes provided with <strong>Web</strong>Sphere Portal, as they are updated by <strong>Web</strong>Sphere<br />
Portal fixes and are static. Instead, update and deploy your own copy of the theme WAR in <strong>Web</strong>Sphere<br />
Application Server.<br />
Theme resources reside in the following locations:<br />
J2EE resources<br />
When you work with J2EE theme resources, be aware of the following:<br />
v Theme J2EE resources are deployed at installation to the directory PortalServer_root/theme/<br />
wp.mashup.cc.theme/installedApps/wp.mashup.cc.theme.ear/PageBuilder2.war/.<br />
v In the past themes were also deployed to PortalServer_root/installer/wp.ear/<br />
installableApps/wps.ear/wps.war/. Deploying customer themes to this location is no longer<br />
supported.<br />
v Note that PortalServer_root is a read only directory. Do not make any changes to these files,<br />
as they can be updated by service updates. Instead, if you want to customize a theme shipped<br />
with Portal, deploy your own copy of the theme WAR in <strong>Web</strong>Sphere Application Server. For<br />
instructions about deploying themes see Deploying a theme.<br />
v When you deploy your theme in its own WAR file, the resources are deployed to the portal<br />
profile directory wp_profile_root/installedApps/node/your-ear-name.ear/your-war-name.war/<br />
.<br />
Static resources<br />
In earlier portal versions themes deployed their static resources with their WAR file. With the<br />
page builder theme in portal Version 7 and later versions, static resources are deployed to<br />
<strong>Web</strong>DAV. You can access all <strong>Web</strong>DAV file store entry points listed below through the root URL<br />
http://hostname:port/wps/mycontenthandler/dav/entrypoint/ .<br />
186 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Administration entry points:<br />
/themelist/<br />
This is the administrative entry point for managing themes.<br />
/skinlist/<br />
This is the administrative entry point for managing skins.<br />
For more details about these entry points, see Using <strong>Web</strong>DAV to manage themes and skins.<br />
File store entry points:<br />
/fs-type1/themes/<br />
This is the entry point for creating, updating, or deleting static theme HTML,<br />
CSS, JavaScript, and image resources.<br />
/fs-type1/skins/<br />
This is the entry point for creating, updating, or deleting static skin HTML,<br />
JavaScript, and image resources.<br />
/fs-type1/layout-templates/<br />
This is the entry point for creating, updating, or deleting static layout templates.<br />
/fs-type1/common-resources/<br />
This is the entry point for common static resources that are shared by multiple<br />
themes.<br />
You can access all <strong>Web</strong>DAV entry points listed above through the root <strong>Web</strong>DAV entry point URL.<br />
This URL is http://hostname:port/wps/mycontenthandler/dav/entrypoint/. For more details<br />
refer to the topics about Working with static themes.<br />
Dojo and other JavaScript resources<br />
Dojo is deployed to the directory PortalServer_root/theme/wp.theme.dojo/installedApps/<br />
dojo.ear/dojo.war/. Multiple versions of dojo are provided here to support migrated themes that<br />
were implemented for a particular version of dojo. Dojo V 1.3.2 is provided in the root directory<br />
of dojo.war. Dojo V 1.4.3 and future versions are provided in a subdirectory named by the<br />
version, for example /v1.4.3/.<br />
Source<br />
The Dojo 1.4.3 source including all custom Page builder JavaScript and widgets is<br />
included in a compressed .zip file. The location of this file is: PortalServer_root/theme/<br />
wp.theme.dojo/installedApps/dojo.ear/dojo.war/source.zip . This zip file includes the<br />
Dojo profile with which the theme JavaScript layers are built. It is named<br />
portal_dojo_143.profile.js . Use this source and Dojo profile to create new custom<br />
layers. If you add a significant amount of custom JavaScript to the theme, create a new<br />
JavaScript layer before going into production. For more information about the Dojo build<br />
process see the web link to the Dojo Build System below.<br />
JavaScript Layers<br />
The theme utilizes two minmized and compressed JavaScript layers: theme.js and<br />
theme.edit.js . Both are located at PortalServer_root/theme/wp.theme.dojo/<br />
installedApps/dojo.ear/dojo.war/v1.4.3/com/ibm/themes/PageBuilder2 .<br />
theme.js<br />
This layer is included when the page is initially rendered. It includes all modules<br />
and widgets required for view mode.<br />
theme.edit..js<br />
This layer is included when a page enters Edit mode. It includes all modules and<br />
widgets required for customizing the page.<br />
Setting up a portal site 187
The same directory includes uncompressed versions of both files, You can edit these files<br />
during development or use them for debugging purposes. To use these uncompressed<br />
files, follow these steps:<br />
1. Access the <strong>Web</strong>Sphere Application Server administrative console.<br />
2. Select Resources > Resource Environment > Resource Environment Providers.<br />
3. Locate the WP CommonComponentConfigService.<br />
4. Select Custom Properties.<br />
5. Select the property cc.isDebug. Note that this property is on the second page of the<br />
properties list.<br />
6. Change the value of the property cc.isDebug to true.<br />
7. Restart your portal.<br />
Directory structure of theme resources<br />
Inside a WAR file or <strong>Web</strong>DAV root folder, theme resources are grouped in the directory /themes/.<br />
There are additional folders such as, css, images, js, menuDefinitions, and system. This directory can<br />
be structured into subdirectories as follows:<br />
/theme/theme_name/nls<br />
Example: /themes/html/PageBuilder/en/. For more information see Aggregation under the section<br />
about the Search order for portal resources.<br />
Related concepts:<br />
“Using <strong>Web</strong>DAV to manage themes and skins” on page 192<br />
You can use <strong>Web</strong>DAV for <strong>Web</strong>Sphere Portal to administer portal themes and skins by using the <strong>Web</strong>DAV<br />
standard operating system tools. This way you can browse, read, and write themes and skins by using<br />
file explorers or editors.<br />
Related tasks:<br />
http://docs.dojocampus.org/build/index: Dojo Build System<br />
Related reference:<br />
“Working with dynamic content spots” on page 202<br />
You can add dynamic content to your custom theme by using either client-side or server-side logic.<br />
Editing pages with the Page Builder theme:<br />
You can edit portal pages with the Page Builder theme by assigning theme templates to pages.<br />
Assigning a theme template to the page:<br />
By default, the theme template assigned to the page is theme.html. You can author multiple theme.html<br />
templates, store them all in the theme root <strong>Web</strong>DAV folder, and specify which theme template you want<br />
to use for which page by setting page metadata on the page as follows:<br />
com.ibm.portal.theme.template.file.name.html=[name_of_file]<br />
where name_of_file can be, for example customized-theme.html . This allows you to implement different<br />
templates or customize how different parts of your site can look, without implementing an entirely<br />
different theme. Before you use multiple templates, consider the additional maintenance required, as<br />
changes to elements that are shared between multiple templates must be made to each template.<br />
Assigning and refreshing layout templates:<br />
You assign the layout template to the page by using the Page Builder theme customization features.<br />
Proceed as follows:<br />
1. From the theme banner area select Actions > Edit Page > Customize > Change Layout.<br />
188 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
2. Select a new layout template.<br />
3. Click Save.<br />
When you select a layout template, it is stored as a static page definition for the page. In other words, the<br />
page definition is a copy of the template as it is at the time when you assign the template to the page.<br />
This has several implications.<br />
1. You can edit the static page definition as a traditional static page definition. A user with the<br />
appropriate access permission can add or remove containers, add explicit portlets or iWidgets to the<br />
page. This affects the current page only, but not the source template.<br />
2. Similarly, subsequent changes to the original template are not automatically applied to pages that use<br />
the template. Page definitions store a reference to the source template, and the Page Builder and Page<br />
administration portlets provide an option to Refresh from template. The Manage Pages portlet<br />
provides a refresh icon named Synchronize a page with the latest layout template.<br />
These options become available if the source template has been modified since it was last applied to<br />
the page. Page authors can choose to refresh the page definition with the latest version of the source<br />
template, but in doing so, all edits they made to the static page definition directly are overridden.<br />
Note: This override applies only to the static page layout definition directly, not to portlets or iWidget<br />
that were added to the containers by using the portal user interface.<br />
The actual refresh is performed by a portal configuration task named refresh-page-layout . See the<br />
topic about the Task refresh-page-layout.<br />
How to add widgets to pages:<br />
iWidgets are modeled in the portal as portlets. Therefore iWidgets registered in the portal can be added<br />
and rendered wherever portlets can be added to a page.<br />
To add iWidgets to a page, users use either the Edit Layout administration portlet or the Page Builder<br />
customization shelf in the theme. The portal user interface makes no distinction between a portlet and a<br />
widget. If you require such a distinction, you can achieve it by assigning tags to the portlets and iWidgets<br />
when you deploy them. In the Page Builder theme Customize shelf portlets are categorized by tags.<br />
How to wire widgets and portlets in page builder:<br />
For wiring widgets together, the Page Builder theme includes the wiring widget that the <strong>IBM</strong> Mashup<br />
Center and mashup integration use. This widget has been extended to accommodate the additional<br />
wiring options. These include wire matching by qname and the payload matching supported by<br />
iWidgets.<br />
The wiring interface works in the same way, regardless of whether the source or target component is a<br />
widget or portlet.<br />
Limitations:<br />
1. You cannot wire across pages to a widget.<br />
2. To set up cross page wiring for portlets, use the wiring portlet, not the wiring widget.<br />
3. You can only wire a portlet to a widget, if the page is client side.<br />
4. You cannot wire widgets by using the wiring portlet; that portlet does not list the widgets.<br />
5. Cross page wiring only works if the sending page is server-side; it cannot be client-side.<br />
To wire two components together, proceed as follows:<br />
1. Activate Edit mode by selecting Actions > Edit Page from the theme Actions menu.<br />
2. To launch the Wiring widget, activate the skin Actions menu of the source component.<br />
Setting up a portal site 189
3. Make your selection from the available content that the source component can send to another<br />
widget.<br />
4. From the list of widgets on the page select the widget that you want to receive the content.<br />
5. Select the action that you want the target widget to take when it receives the content.<br />
6. Click Done to close the Wiring widget.<br />
7. Click Save to save the changes or click Save & Exit to save the changes and leave the Edit mode.<br />
Note: When using the Page Builder to make changes to the wire model, the changes will not be<br />
reflected until after reloading the portal page. To always refresh the portal page automatically when<br />
saving changes made in the Edit mode, navigate to Resources > Resource environment > Resource<br />
environment providers > WP CommonComponentConfigService. Set the<br />
cc.theme.alwaysRefreshOnPageSave property to true and restart the Portal server.<br />
You have wired the widgets or portlets together.<br />
Client-side and server-side page rendering modes:<br />
The Page Builder theme supports two rendering modes. These are referred to as client-side and<br />
server-side aggregation modes.<br />
Client-side mode<br />
In client-side mode the following applies:<br />
v Page changes occur without a browser full page refresh. Upon a user request a SWITCH_PAGE<br />
client-side event is fired. This triggers the update of the page navigation, and the contents of<br />
the new page are loaded and replace the content of the prior page.<br />
v Interaction with portlets and widgets updates only the affected portlet or widget, and possibly<br />
others as a result of wiring. Portlets are rendered as iWidgets by means of an iWidget Wrapper.<br />
v The implementation and programming model for client-side mode is provided by the Mashups<br />
Enabler common component, and public builder events.<br />
Server-side mode<br />
In server-side mode the following applies:<br />
v Page changes cause a browser full page refresh.<br />
v Interactions with portlets result in a browser full page refresh.<br />
v However, iWidgets are rendered and interact within the page just as in client-side mode.<br />
Theme element handling of rendering mode<br />
To render the portal theme, the same theme elements are used in both rendering modes. In general, you<br />
can write navigation iWidgets to fire a SWITCH_PAGE event. The internal JavaScript<br />
NavigationController of the theme determines the current rendering mode of the page and processes the<br />
event appropriately.<br />
Activating page rendering in client-side mode<br />
To activate the client-side mode by using the iWidget standard, you need to do the following two things:<br />
1. Change the page theme to one that uses client side rendering.<br />
2. Set the render type to client-side mode by using one of the following two ways:<br />
v By using the Page Properties portlet:<br />
a. Select Edit Page Properties either from the Actions menu in the theme, or from the Manage<br />
Pages administration portlet.<br />
b. Find the radio button group for Page Rendering Mode and select Client-side rendering mode.<br />
c. Click OK to save your changes.<br />
190 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v By setting the appropriate page metadata on the page.<br />
For example, you can do this by using <strong>Web</strong>DAV and the following content model URL:<br />
http://my_server:portal_port/wps/mycontenthandler/dav/contentmodel/wps.content.root/metadata.properties<br />
Make sure the following two lines have been added:<br />
com.ibm.portal.rendertype=iwidget<br />
com.ibm.portal.rendertype.version=2.0<br />
The Page Builder CSS<br />
Discusses the use and location of the CSS files used for the Page Builder theme.<br />
The Page Builder theme contains four style sheets. The style sheets were created by concatenating and<br />
minifying several other style sheets by using Dojo build tools to optimize performance.<br />
tundra.css<br />
v Styles for Dojo widgets<br />
v Location: PortalServer_root/theme/wp.theme.dojo/installedApps/dojo.ear/dojo.war/v1.4.3/<br />
dijit/themes/tundra/tundra.css<br />
v Bidi version: tundra_rtl.css<br />
v Uncompressed version: none<br />
common.css<br />
v Defines the structure of the page. Can be used in any theme that shares the Page Builder<br />
HTML markup.<br />
v location: dav:fs-type1/common-resources/ibm/css/common.css<br />
v Bidi version: commonRTL.css<br />
v uncompressed version: common.css.uncompressed.css<br />
v contains:<br />
– oneui/v2.1/base/core.css - The basic OneUI page structure.<br />
– oneui/v2.1/base/dojo.css - OneUI structure for common dojo widgets.<br />
– portal/ibmPortlets.css - Basic styles used by <strong>IBM</strong> portlets.<br />
– portal/PortalSprite.css - Styles for a CSS sprite containing Portal images.<br />
master.css<br />
v Applies color, gradient, and other design elements for the Page Builder color scheme<br />
v location: dav:fs-type1/themes/PageBuilder2/css/master.css<br />
v bidi version: masterRTL.css<br />
v uncompressed version: master.css.uncompressed.css<br />
v contains:<br />
– default/default.css - The blue and black OneUI version 2.1 design.<br />
– default/dojoTheme.css - OneUI styles for common Dojo widgets.<br />
– portal/portal.css - Since OneUI was written for multiple <strong>IBM</strong> products, this CSS contains<br />
styles specific to <strong>Web</strong>Sphere Portal.<br />
widgets_combined.css<br />
v Styles for some of the theme widgets: navigation, tagging, and rating<br />
v location: PortalServer_root/theme/wp.theme.dojo/installedApps/dojo.ear/dojo.war/v1.4.3/<br />
com/ibm/widgets<br />
v bidi version: none<br />
v uncompressed version: widgets_combined.css.uncompressed.css<br />
v contains:<br />
Setting up a portal site 191
– widgets_v21.css - Styles for the Page Builder navigation widgets.<br />
– trcWidgets.css - Styles for the tagging widgets.<br />
– ../../../../dojox/form/resources/Rating.css - Styles for the rating widgets.<br />
OneUI<br />
The Page Builder theme acquires much of its CSS from the <strong>IBM</strong> <strong>Lotus</strong> User Interface (referred to as<br />
OneUI), which describes the CSS and HTML markup structure used in many <strong>IBM</strong> products.<br />
Documentation for OneUI can be found at dav:fs-type1/common-resources/ibm/css/oneui/v2.1/<br />
lotusOneUIv2.1_Documentation.zip.<br />
All the style sheets except widgets_combined have a corresponding bidirectional (bidi) version. This<br />
means that the page lays out from right to left, instead of left to right. These style sheets are used when<br />
the page is in a bidirectional language, such as Arabic or Hebrew.<br />
All the style sheets except tundra are compressed to make the files smaller for performance. Compressing<br />
the files also makes the files harder to read, so uncompressed versions are provided. It is best to use<br />
uncompressed versions when editing and debugging your theme CSS.<br />
1. Open this file: \theme\wp.mashup.cc.theme\installedApps\<br />
wp.mashup.cc.theme.ear\PageBuilder2.war\themes\html\PageBuilder2\head.jsp<br />
2. Find this code:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
You can work with folders as usual, for example by performing drag-and-drop operations with theme or<br />
skin resources. The folders in the administrative <strong>Web</strong>DAV entry points also contain property files that<br />
represent metadata, such as the title and description of the theme or skin. You can edit the property files<br />
to update theme and skin metadata. When you save the updated file, the updates are transferred and<br />
applied to the portal model directly. The provided folder and file structure is only simulated and is not a<br />
real file system structure.<br />
Connecting to <strong>Web</strong>DAV to administer portal themes and skins<br />
The portal contains the <strong>Web</strong>DAV service and enablement layer. Before using <strong>Web</strong>DAV for <strong>Web</strong>Sphere<br />
Portal, you need to set up your <strong>Web</strong>DAV client. After you have set up the <strong>Web</strong>DAV client, you can<br />
connect to <strong>Web</strong>DAV and work with portal themes and skins. To connect to <strong>Web</strong>DAV for administering<br />
themes or skins, enter the <strong>Web</strong>DAV entry URL as follows:<br />
Themes:<br />
For working with themes, connect by using the following <strong>Web</strong>DAV entry URL:<br />
http://server:port/wps/mycontenthandler/dav/themelist/<br />
If you want a specific theme rather than the full list of themes, you can add the friendly name,<br />
unique name, or object ID of the theme to the URL above.<br />
Skins: For working with skins, connect by using the following <strong>Web</strong>DAV entry URL:<br />
http://server:port/wps/mycontenthandler/dav/skinlist/<br />
If you want a specific skin rather than the full list of skins, you can add the friendly name,<br />
unique name, or object ID of the skin to the URL above.<br />
Replace the placeholder variables as follows:<br />
server Specify the host name of the portal.<br />
port Specify the port number of the portal.<br />
Security: The <strong>Web</strong>DAV entry point requires user authentication via HTTP basic authentication. SSL<br />
access is not supported at this time. To use <strong>Web</strong>DAV, users log in to the portal with their portal user ID.<br />
Users can then access and work with portal pages according to their access permissions as set by Portal<br />
Access Control.<br />
Virtual portals: Themes and skins are not scoped. Therefore you can work only with the themes and<br />
skins of a complete portal installation, not with the themes and skins of virtual portals.<br />
<strong>Web</strong>DAV file store: Do not use the <strong>Web</strong>DAV entry point fs-type1 for administering themes and skins.<br />
The entry point fs-type1 is used for storing static resources. For more information about this entry point<br />
refer to Using <strong>Web</strong>DAV file store for the Page Builder theme and mashup integration.<br />
Note: If you have problems using the entry point /themelist/, try /themelist/all , as some <strong>Web</strong>DAV<br />
clients have issues with a URL without the appended suffix all .<br />
You can perform the following tasks on the <strong>Web</strong>DAV themelist and skinlist entry points:<br />
v Browse through the available themes and skins of a portal. Each theme or skin is represented as a<br />
folder. The name of the folder is the friendly name of a theme or a skin. Depending on the <strong>Web</strong>DAV<br />
client, this can also be the unique name or the object ID.<br />
v Modify the friendly name of a theme or skin. The friendly name is stored in the metadata attribute<br />
com.ibm.portal.friendly.name . However, do not change the name by updating the metadata<br />
properties. To update the friendly name, change the name of the theme or skin folder.<br />
Setting up a portal site 193
v Retrieve globalization information of a theme or skin, such as its title or description. The globalization<br />
information is represented by properties files that are contained in the metadata subfolder of a theme<br />
or skin folder. Each available locale is represented by a separate file named<br />
localized_locale.properties .<br />
v Change globalization information of the theme or skin. To do this, edit and save the related properties<br />
file. To create new locale information, you create a new file with the following file name convention:<br />
localized_locale.properties . To delete locale information, you delete the related file.<br />
v Retrieve public and non-hidden metadata of a theme or skin. The metadata is contained in a<br />
metadata.properties file in the related theme or skin folder. Metadata that starts with the prefix<br />
com.ibm.portal is not displayed in this file. This metadata does in fact exist, but it is not exposed<br />
through the <strong>Web</strong>DAV interface. You can use the portal XML configuration interface to modify these<br />
metadata values.<br />
v Change metadata of a theme or skin. To do this, you edit and save the metadata.properties file.<br />
v Delete a theme or skin. To do this, delete the folder that represents the theme or skin. When you delete<br />
a folder, the artifacts of the folder are not deleted. You must manually delete the artifacts to remove<br />
them.<br />
Note: The related model and all information, such as metadata or globalization information is deleted<br />
immediately.<br />
You can perform the following additional tasks for special themes and skins or for themes and skins that<br />
you created by using <strong>Web</strong>DAV:<br />
v Mirror additional resources, for example HTML files, JavaScript files or images in the theme or skin<br />
folder. This option is available if the theme has metadata with the parameter<br />
com.ibm.portal.theme.template.ref or the skin has the parameter com.ibm.portal.skin.template.ref<br />
defined, and the values of these parameters point to the file structure. The resources are mirrored in<br />
the theme or skin folder.<br />
v Manage the mirrored resources. To do this, create, modify, or delete additional files in the theme or<br />
skin folder. This management option is available only if the reference metatada points to a portal<br />
<strong>Web</strong>DAV file store folder. If you create a new theme or skin by using <strong>Web</strong>DAV, this metadata points to<br />
a related theme or skin folder in the <strong>Web</strong>DAV file store after you created a new file in the theme or<br />
skin. Example: The theme link is generated with the name fs-type1/themes/name_of_the_theme .Ifyou<br />
create, modify, or delete files through the entry point themelist , usually a portal restart is required.<br />
For working with theme files, use the entry point fs-type1 . For a description of the theme and skin<br />
folders in the <strong>Web</strong>DAV file store fs-type1 refer to Using <strong>Web</strong>DAV file store for the Page Builder theme and<br />
mashup integration.<br />
Note: If you delete a theme or skin, the related base files in <strong>Web</strong>DAV are not deleted with it. This<br />
means that if you want to delete a theme or skin including the static resources, you need to delete the<br />
mirrored files in the <strong>Web</strong>DAV file store manually. For example, this is required if you want to recreate<br />
a theme with the same name as a previously existing theme; if you do not delete the files of the earlier<br />
theme, the files that exist from the previous theme are linked to the new theme with the same name.<br />
Limitations of the <strong>Web</strong>DAV file structure that lists themes and skins<br />
1. The metadata subfolder of a theme or skin allows only globalization information properties files with<br />
the following filename convention: localized_locale.properties .<br />
2. The properties files are only simulated. They contain parameters and their values. You cannot save<br />
any additional information, for example comments.<br />
3. These entry points do not support the copy action directly. If you encounter an error when you copy<br />
and paste theme folders within /themelist, do the following:<br />
a. Copy the theme folder to your local file system.<br />
b. Give the theme a new title by editing the appropriate localized_locale.properties file under the<br />
metadata folder. If you do not change the theme title, the portal will show multiple themes with<br />
the same titles in selection lists.<br />
194 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
c. Copy the new folder to the /themelist folder.<br />
Required access control permissions<br />
v Users who want to browse or read the theme or skin <strong>Web</strong>DAV folder structure including resources<br />
need no additional access control permission.<br />
v Users need managing access control rights to perform the following tasks:<br />
– to manage themes or skins<br />
– to modify metadata or resources<br />
– to create, modify, or delete resources in the linked portal <strong>Web</strong>DAV file store theme and skin folders.<br />
To give users the access rights for these tasks assign the users MANAGER role on the virtual resource<br />
THEME MANAGEMENT in Portal Access Control.<br />
Activating rendering in client side mode<br />
You can activate client side rendering for portal pages. Client side rendering mode is only active if the<br />
theme that renders the page supports client side rendering mode, for example, the Page Builder theme. If<br />
the theme does not support client side rendering, server side rendering is used as the fallback.<br />
You can activate client side rendering by one of the following two methods:<br />
v Setting client side rendering mode for individual pages by using the Page Properties portlet.<br />
v Setting the corresponding page metadata by using the XML configuration interface or <strong>Web</strong>DAV. To set<br />
client side rendering mode, use the following metadata:<br />
com.ibm.portal.rendertype=iwidget<br />
com.ibm.portal.rendertype.version=2.0<br />
To set server side rendering mode, use the following metadata:<br />
com.ibm.portal.rendertype=SSA<br />
If you do not explicitly set the rendering mode on a page, the portal uses the rendering mode set for the<br />
parent page.<br />
Related reference:<br />
“Client-side and server-side page rendering modes” on page 190<br />
The Page Builder theme supports two rendering modes. These are referred to as client-side and<br />
server-side aggregation modes.<br />
Working with content from your previous portals<br />
With <strong>Web</strong>Sphere Portal Version 7.0 and the Page Builder theme you can use pages from your previous<br />
portal versions.<br />
Portal pages from previous portals<br />
With the Page Builder theme, you can view, but not edit portal pages from your previous portal<br />
versions. You can edit such portal pages by using the Manage Pages portlet.<br />
Mashup pages from previous portals<br />
To work with mashup pages from <strong>Web</strong>Sphere Portal Version 615, you need to use the themes<br />
named Breadcrumb - Free Form Layout and Breadcrumb - Column Layout from that version.<br />
Using widgets<br />
The page builder theme architecture allows the portal to render both iWidgets and portlets alongside on<br />
the same portal pages.<br />
Managing your widgets rendered on your pages is similar to managing your portlets. For details about<br />
managing widgets refer to the following topics.<br />
Note: The portal supports only iWidgets written to comply with the iWidget specification 2.1.<br />
Setting up a portal site 195
When you use widgets, refer to the hints and tips about using widgets given under the topic about Hints<br />
and tips for the Page Builder theme and widgets.<br />
Related reference:<br />
“Hints and tips for the Page Builder theme and widgets” on page 208<br />
Some hints and tips for working with the Page Builder theme and widgets.<br />
How iWidgets are represented in the portal model:<br />
For easy handling of iWidgets <strong>Web</strong>Sphere Portal provides a dedicated IWidget Wrapper portlet. This<br />
portlet maps the iWidget concept into the portal administration model.<br />
The portal unique name of this portlet is wp.p.IWidgetWrapper .<br />
An iWidget definition is identified by a corresponding unique iWidget Definition URI. For each<br />
individual iWidget definition the portal has at least one corresponding clone of the IWidget Wrapper<br />
portlet that provides management access to this iWidget. The portal creates such an IWidget Wrapper<br />
portlet clone in the following cases:<br />
v When you register a specific iWidget definition URI in your portal by using the configuration task<br />
register-iwidget-definition<br />
v When you deploy static page markup to your portal that contains a specific iWidget definition URI.<br />
When you register a new iWidget definition URI in your portal, the portal infrastructure loads the<br />
corresponding iWidget definition XML file and maps the information provided by the referenced iWidget<br />
definition into corresponding portlet metadata. This includes information about events and modes that<br />
the iWidget supports. The title and description of the created IWidget Wrapper clone are derived from<br />
the corresponding values of the iWidgets idescriptor item set.<br />
The portal maps all preferences exposed by individual iWidgets, that is elements of the iWidget<br />
attributes item set, directly to corresponding portlet preferences. Consequently you can configure the<br />
values for those preferences by using the corresponding portal administration interfaces. For example, if<br />
an iWidget defines an attribute named zipcode, the corresponding IWidget Wrapper portlet clone defines<br />
a portlet preference named zipcode. You can modify this value, for example, by using the Manage<br />
Portlets portlet. You can also create additional clones of such IWidget Wrapper portlet clones for<br />
supporting multiple pre-configuration variants of the same iWidget definition. Users can overwrite these<br />
preferences in the Edit Shared Settings and Personalize modes in the same way as portlet preferences.<br />
The iWidget specification includes an attribute named sandbox. You can use it to determine whether you<br />
want the corresponding iWidget definition to be rendered in an iWidget sandbox. For details about the<br />
iWidget sandbox refer to the iWidget specification. The portal maps this iWidget sandbox attribute to a<br />
portlet preference named com.ibm.portal.iw:iwidget:sandbox. You can modify this preference by using<br />
the same approach as mentioned in the previous section to control whether the corresponding iWidget<br />
definition is rendered in an iWidget sandbox.<br />
The portal stores the URI that points to an iWidget Definition used for a specific IWidget Wrapper clone<br />
in a portlet preference with the key com.ibm.portal.iw:iwidget:base . If the actual IWidget Definition<br />
changes, for example if new events are declared in the definition, this URI allows to reload the updated<br />
iWidget definition information from the given URI and update the IWidget Wrapper portlet accordingly.<br />
You trigger such reloads by one of the following two options:<br />
v By explicitly calling the configuration task refresh-iwidget-definitions<br />
v By scheduling the scheduled task com.ibm.portal.services.RefreshIWidgetDefinitionsTask .<br />
You manage access control privileges on individual iWidgets by granting users and user groups access to<br />
the corresponding IWidget Wrapper portlet clones. The portal applies the same access control<br />
enforcement model that it uses for portlets to iWidgets wrapped by IWidget Wrapper portlets. This<br />
means:<br />
196 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Users who have User role access rights on a specific IWidget Wrapper portlet have read only access to<br />
the corresponding iWidget.<br />
v Users who have Editor role access rights on the same portlet can edit shared settings of that iWidget.<br />
Registering iWidgets for use with the Page Builder theme:<br />
To make your portal aware of available iWidgets, you register the iWidget definitions in your portal by<br />
telling the portal the location from where it can load the iWidget definition XML.<br />
The portal can load the iWidget definitions from the following locations:<br />
v A location that the portal can access via HTTP routed through the portal Ajax Proxy<br />
v A server relative URL that is relative to the portal server<br />
v A location within the portal <strong>Web</strong>DAV file store that is identified by a corresponding portal <strong>Web</strong>DAV<br />
URI.<br />
Registered iWidgets become available to the portal administration via corresponding IWidget Wrapper<br />
portlet clones. These are created during the iWidget registration process.<br />
You can register iWidgets for use with the Page Builder theme by one of the following methods:<br />
iWidget registration via the configuration task register-iwidget-definition<br />
This is the typical way of registering iWidgets in your portal. For details about using this task<br />
refer to the corresponding IC section.<br />
iWidget registration via static page deployment<br />
This means that you create a new page by uploading an archive or compressed file that contains<br />
your static page markup files. This static page deployment process checks whether any of the<br />
referenced iWidget definitions contained in the given static page index HTML file exist in the<br />
portal already and then registers the ones that do not exist yet. Example: Your static page content<br />
contains the following HTML element:<br />
<br />
<br />
<br />
In this case the static page deployment process makes sure that the iWidget defined by the<br />
SampleWidget.xml file contained in the location /iwidgets/sampleWidget of the <strong>Web</strong>DAV file store<br />
is registered in your portal after the page is created.<br />
iWidget availability<br />
After you register an iWidget in your portal, you can place it on a page by using the<br />
Customization shelf. After registering the iWidget, clear your browser cache and navigate to the<br />
Add <strong>Content</strong> panel in the Customization shelf. For details about how to do this see the topic<br />
about Adding content. The registered iWidget should be available in the All category and for<br />
search. For more details see the topic about How to add widgets to pages.<br />
Related tasks:<br />
“Adding content” on page 132<br />
Add content to a page by selecting a portlet for portal pages or a widget for mashup pages from the<br />
content source: Create, All, Administration, Collaboration, Tools.<br />
“How to add widgets to pages” on page 189<br />
iWidgets are modeled in the portal as portlets. Therefore iWidgets registered in the portal can be added<br />
and rendered wherever portlets can be added to a page.<br />
Access rights required for iWidget registration:<br />
Setting up a portal site 197
The process of registering a new iWidget definition in the portal includes duplicating the IWidget<br />
Wrapper portlet. Therefore it requires the same access right privileges as duplicating the IWidget Wrapper<br />
portlet.<br />
For registering a new iWidget definition a user needs at least all of the following roles assigned:<br />
v Editor role at the virtual resource PORTLET APPLICATIONS<br />
v User role at the IWidget Wrapper portlet. The custom unique name of the portlet is<br />
wps.p.IWidgetWrapper.<br />
v User role at the portlet application named com.ibm.wps.resolver.iwidget.portlet. This portlet<br />
application contains the IWidget Wrapper portlet and all other duplicated IWidget Wrapper portlet<br />
clones.<br />
Note: By default, due to the role inheritance concept in portal access control, all portlet applications<br />
inherit role assignments from the virtual resource PORTLET_APPLICATIONS, and all IWidget Wrapper<br />
portlet clones inherit role assignments from their enclosing com.ibm.wps.resolver.iwidget.portlet<br />
portlet application. If you want to change this behavior, you can block the default inheritance, for<br />
example by inserting role propagation blocks on the PORTLET APPLICATIONS virtual resource and the<br />
com.ibm.wps.resolver.iwidget.portlet portlet application.<br />
For more details about portal security, access control, and roles refer to the topic links below.<br />
Reusing registered iWidgets:<br />
When you register an iWidget in your portal, a copy or clone of the IWidgetWrapper portlet is created to<br />
map the iWidget model to the portal model. The new portlet carries the title and the description as<br />
defined in the iWidget definition: this way you can locate and manage it as other portlets in your portal.<br />
While this mechanism allows for the most common use cases, you can also reuse and customize<br />
registered iWidgets.<br />
Example: An iWidget that gives information about the weather in a specific city is registered once in your<br />
portal, but you want to place it on different portal pages to show the weather for different cities. You can<br />
achieve different behaviors for the iWidget instances by one of these two ways:<br />
v Overwrite the corresponding iWidget attributes in the iWidget microformat that is used to include the<br />
iWidget in the portal page. In this example overwrite the area code for the city for which you want to<br />
show the weather.<br />
v Copy the portlet that wraps the iWidget and customize the corresponding iWidget attributes of this<br />
copy by editing the related portlet preferences. This option allows you not only to reuse a registered<br />
iWidget, but also to preconfigure it and the related portlet, regardless of whether it is currently<br />
integrated into a portal page or not. Moreover, iWidget attributes are handled differently from other<br />
aspects of iWidget definitions during updates of the iWidget definition so that such customization is<br />
retained across refresh operations.<br />
Customizing iWidget attributes:<br />
When you register an iWidget in your portal, most sections of the iWidget definition and microformat are<br />
stored in the portal model as portlet preferences of a copy or clone of the IWidgetWrapper portlet.<br />
Each iWidget definition corresponds to a distinct copy of that portlet. The portlet preferences carry a<br />
prefix com.ibm.portal . This identifies them as parameters that are used internally. Values of iWidget<br />
attributes, that is items of the attributes item set of an iWidget are stored without prefix. Instead, the item<br />
identifier is used as a key to the item value. This way you can easily distinguish iWidget attributes from<br />
other preferences when you want to customize their values after registering an iWidget in your portal.<br />
This is useful to preconfigure an iWidget definition that is integrated on different portal pages by using<br />
the corresponding iWidget microformats.<br />
198 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Another important aspect of iWidget attributes and their corresponding portlet preferences in the portal<br />
model is that the update behavior can be specified, which allows for use cases when you want to retain<br />
customization across updates of an iWidget definition.<br />
Updating iWidget attributes when refreshing iWidget definitions:<br />
In general, when you refresh an iWidget definition, the previous iWidget definition data stored in the<br />
portal model of the portal are replaced. The exception to this rule are iWidget attributes, that is items of<br />
the attributes item set, which are defined in the iWidget definition.<br />
There are two options to determine how the value of an item of the iWidget attributes item set is<br />
handled:<br />
Conditional update of iWidget attributes<br />
Use this option if you or your users customized iWidget attributes in your portal model after you<br />
registered an iWidget in the portal and if you want to retain this customization across iWidget<br />
definition updates.<br />
Replacing of iWidget attributes<br />
Use this option to handle iWidget attributes as any other iWidget definition data when you<br />
refresh an iWidget definition.<br />
Both options are described in more detail in the following.<br />
Conditional update of iWidget attributes<br />
The default update behavior of values of iWidget attributes is determined by the readOnly attribute of the<br />
item given in the new iWidget definition. It indicates whether updating the iWidget definition overwrites<br />
an existing item value stored in the portlet preferences of the portlet definition that corresponds to the<br />
iWidget definition:<br />
readOnly="true"<br />
This setting indicates that the new item value is set and overwrites a value that may have been<br />
stored in course of an earlier deployment of the iWidget definition.<br />
readOnly="false"<br />
This setting is the default. It indicates that the new item value is set only if the item value has not<br />
been defined in the previous version of the iWidget definition.<br />
Note: Unlike the iWidget model, this read only flag is bound to a value in the portal model. Therefore, if<br />
you set the readOnly attribute to true, but you do not specify a new item value, then the previous value<br />
is removed from the portal model and the read only flag is not persisted. To define a read only item, you<br />
need to provide a value; this can be an empty string.<br />
The following table provides an overview of how values of iWidget attributes are updated when<br />
refreshing an iWidget definition stored in the portal:<br />
Table 27. Update behavior of iWidget attributes when an iWidget definition is refreshed<br />
Previous iWidget attribute:<br />
id="someAttribute"<br />
New iWidget attribute:<br />
id="someNewAttribute"<br />
Update result<br />
value: previousValue<br />
readOnly: true or false<br />
value: previousValue<br />
readOnly: true or false<br />
value: previousValue<br />
readOnly: true or false<br />
value: previousValue<br />
readOnly: true or false<br />
value: newValue<br />
readOnly: true<br />
value: newValue<br />
readOnly: false<br />
value: newValue<br />
readOnly: n/a<br />
value: n/a<br />
readOnly: true<br />
value: newValue<br />
readOnly: true<br />
value: previousValue<br />
readOnly: false<br />
value: previousValue<br />
readOnly: false<br />
value: n/a<br />
readOnly: n/a<br />
Setting up a portal site 199
Table 27. Update behavior of iWidget attributes when an iWidget definition is refreshed (continued)<br />
Previous iWidget attribute:<br />
id="someAttribute"<br />
New iWidget attribute:<br />
id="someNewAttribute"<br />
Update result<br />
value: previousValue<br />
readOnly: true or false<br />
value: previousValue<br />
readOnly: true or false<br />
value: n/a<br />
readOnly: n/a<br />
value: n/a<br />
readOnly: n/a<br />
value: n/a<br />
readOnly: n/a<br />
value: n/a<br />
readOnly: false<br />
value: n/a<br />
readOnly: n/a<br />
value: newValue<br />
readOnly: true<br />
value: newValue<br />
readOnly: false<br />
value: newValu<br />
readOnly: n/a<br />
value: previousValue<br />
readOnly: false<br />
value: previousValue<br />
readOnly: false<br />
value: newValue<br />
readOnly: true<br />
value: newValue<br />
readOnly: false<br />
value: newValue<br />
readOnly: false<br />
Note: Attributes defined on items of the attributes item set other than value are not affected by the<br />
refresh mechanism described in this section, that is, they are always set according to the new iWidget<br />
definition. For example, the read only attribute is updated regardless of changes to the value of the item.<br />
Replacing iWidget attributes<br />
You can overrule the mechanism described above by setting a special portlet preference on the portlet<br />
definition of the IWidgetWrapper portlet corresponding to the iWidget definition:<br />
com.ibm.portal.replace.attributes = true | false<br />
Setting the value of this preference to true results in the deletion of all portlet preferences related<br />
to the previously deployed iWidget definition, including the ones iWidget attributes upon<br />
updating the iWidget definition. The default settings is false .<br />
Custom themes<br />
You can create custom themes that contain the styles and branding for your portal site.<br />
Developing custom themes:<br />
You can develop custom themes that suit your specific needs by adding static or dynamic content to<br />
themes. For example, you can add images, iWidget definitions, JavaServer Pages (JSP), and so on to your<br />
custom themes.<br />
Creating your own theme:<br />
The best way to start creating your own custom theme is by copying the portal Page Builder theme. This<br />
ensures that your theme has all the required elements for the theme to function.<br />
Before you create a new theme, see the topic about the Location of theme resources and familiarize<br />
yourself with the types of resources the theme includes and the location of those resources.<br />
Note: Do not modify the standard Page Builder theme directly, because future fix packs and service<br />
changes can overwrite your changes.<br />
To create a new theme proceed as follows:<br />
1. Mount the /themelist <strong>Web</strong>DAV entry point with your <strong>Web</strong>DAV client:<br />
/WpsContextRoot/mycontenthandler/dav/themelist/<br />
Replace WpsContextRoot with the value of your WpsContextRoot if you have changed it.<br />
2. Copy and rename the folder of the theme on which you want to base your new theme.<br />
200 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Note: The /themelist <strong>Web</strong>DAV entry point does not support the copy action directly. If you<br />
encounter an error when you copy and paste theme folders within /themelist, do the following:<br />
a. Copy the theme folder to your local file system.<br />
b. Give the theme a new title by editing the appropriate localized_locale.properties file under the<br />
metadata folder. If you do not change the theme title, the portal will show multiple themes with<br />
the same titles in selection lists.<br />
c. Copy the new folder to the /themelist folder.<br />
After you have completed these steps, your new theme is defined in the portal database. If you do<br />
not see your new theme in the Themes and Skins or Page Properties portal administration portlets,<br />
edit a theme that you find listed, then press OK without making any updates. This refreshes the<br />
theme model list; your new theme should now show. As an alternative, you can also restart the<br />
portal.<br />
You can now assign the theme to pages as required. To customize your theme, edit the theme files in<br />
<strong>Web</strong>DAV.<br />
To perform administrative customization, for example to the title, description, or metadata of the theme,<br />
continue to use the /themelist/ entry point. To customize the templates and static resources, use the<br />
/fs-type1/ entry point. At this point your theme still points to the same Default.jsp and dynamic<br />
content spots as the portal Page Builder theme.<br />
Note: If you have problems using the /themelist/ entry point, try /themelist/all , as some <strong>Web</strong>DAV<br />
clients have issues listening without the all .<br />
Changing the theme template location<br />
The theme contains a metadata parameter that stores the location of the theme template theme.html . This<br />
parameter is named com.ibm.portal.theme.template.ref . Its value can point to an external location if<br />
required, for example to a POC URI or an external server. Therefore the theme template does not need to<br />
be stored on <strong>Web</strong>DAV. In a default portal installation the metadata parameter for the Page Builder theme<br />
looks like this:<br />
<br />
<br />
Related concepts:<br />
“Using <strong>Web</strong>DAV to manage themes and skins” on page 192<br />
You can use <strong>Web</strong>DAV for <strong>Web</strong>Sphere Portal to administer portal themes and skins by using the <strong>Web</strong>DAV<br />
standard operating system tools. This way you can browse, read, and write themes and skins by using<br />
file explorers or editors.<br />
“Location of theme resources” on page 186<br />
This topic lists the location of theme resources. Theme resources can be either dynamic J2EE resources or<br />
static resources, such as HTML, CSS, JavaScript, and image files.<br />
Customizing your theme:<br />
You can customize your theme in several ways as described in the following.<br />
Adding images or other static resources:<br />
To add images or other static resources to your theme, proceed as follows:<br />
1. Copy the static resources, such as images, CSS or Javascript files, into the root directory of your theme<br />
in <strong>Web</strong>DAV.<br />
2. Create subdirectories as required to organize your files.<br />
Setting up a portal site 201
3. Reference these resources in your theme.html file. For ease of development you can reference these<br />
resources by using a relative URL.<br />
Example: Example: You create a folder /images that contains a file logo.png : For improved runtime performance in production, use server relative or<br />
absolute URLs, such as the following:<br />
<br />
s<br />
Referencing resources common to multiple themes and skins:<br />
You can use some resources in multiple themes, such as JavaScript libraries and common CSS style<br />
sheets. You can store these resources in the <strong>Web</strong>DAV folder /wps/mycontenthandler/dav/fs-type1/<br />
common-resources/ .<br />
You can reference these resources as if they were relative to your theme folder. If the resource is not<br />
found in your theme folder, the portal uses the folder /common-resources/ as a fallback location. This also<br />
allows a theme to override a file from the folder /common-resources/ by providing its own file of the<br />
same path.<br />
Adding iWidgets to the theme:<br />
You can add iWidget definitions directly to the file theme.html. They are parsed and initialized<br />
automatically when the portal loads the page.<br />
Adding a JSP to your static theme.html:<br />
You cannot add a JSP file to <strong>Web</strong>DAV, as it needs a servlet context in order to compile and execute.<br />
However, you can call a JSP and have its response included in your file theme.html at runtime. To do<br />
this, use the following syntax:<br />
<br />
This works by using a dynamic content spot. The theme parser recognizes the snippet<br />
rel="dynamic-content" and resolves the value of the href attribute through the resource addressability<br />
framework. This invokes the JSP and streams its output into the corresponding position in the file<br />
theme.html at runtime.<br />
Note: To use this mechanism, you also need to deploy your JSP in a WAR into <strong>Web</strong>Sphere Application<br />
Server.<br />
Working with dynamic content spots:<br />
You can add dynamic content to your custom theme by using either client-side or server-side logic.<br />
Client-side logic<br />
You can add client-side logic, for example JavaScript, iWidgets, live text, to the <strong>Web</strong>DAV file store<br />
and reference it in the file theme.html.<br />
Server-side logic<br />
You cannot add a JSP to <strong>Web</strong>DAV, as it needs a servlet context to compile and execute. But you<br />
can reference a JSP in the file theme.html by using a dynamic content spot.<br />
For details about the syntax and examples of referencing dynamic content in the theme.html template<br />
refer to topic about Writing theme HTML.<br />
202 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
There are cases where it can be better to not reference the dynamic content directly, but rather reference it<br />
by a logical name.<br />
v Reference by name abstracts the dynamic content away from the implementation. This is necessary if<br />
the theme needs to run on multiple runtimes, for example <strong>Web</strong>Sphere Portal and <strong>IBM</strong> Mashup Center.<br />
The portal implementation of the navigation tabs can be a JSP that contains portal specific code. The<br />
Mashup Center on the other hand cannot execute portal JSP code, but provides an iWidget instead.<br />
v Reference by name isolates the theme author from having to know the underlying code information.<br />
This is useful if the theme author is an HTML and CSS designer, but not a J2EE or JavaScript<br />
developer. The HTML and CSS developer needs to know only the list of named content spots and the<br />
simple syntax to add it. This developer can then write code without having to know JSP path names<br />
etc.<br />
Examples:<br />
v Including a named dynamic content spot mapping:<br />
<br />
v Including a theme JSP directly:<br />
<br />
v Including an iwidget definition:<br />
Table 28. Named content spots shipped in a default portal installation (continued)<br />
Name of the<br />
content spot Value Description<br />
config<br />
res:/PageBuilder2/themes/html/<br />
PageBuilder2/config.jsp<br />
The config for the theme, setup of ibmCfg<br />
object<br />
Caching:<br />
The parameter max-age can be set on a dynamic spot POC URL to define caching. The value for max-age<br />
is set in seconds, while a value of -1 means that information is cached for as long as the server is<br />
running. A server restart refreshes the cache.<br />
Example:<br />
res:/PageBuilder2/themes/html/PageBuilder2/spot.jspmax-age=604800<br />
You can modify this configuration by using the <strong>Web</strong>Sphere Application Server administrative console.<br />
When you work with this configuration, observe the following hints and tips:<br />
1. To change the implementation of a JSP, do not modify the version of the JSP provided with the portal.<br />
Either change this configuration to point to your own JSP in your own WAR file, or reference this JSP<br />
directly in your theme and bypass the configuration.<br />
2. The REP configuration is global, not per theme. Therefore, if you change the configuration, the change<br />
applies to all themes in your portal.<br />
3. To override a configuration for a specific theme only, set a theme metadata parameter with<br />
key=com.ibm.portal.dynamic-content-spot.dynamic spot name and a value equal to the overriding<br />
POC URL (Piece Of <strong>Content</strong> URL). An override requires the theme to be specified on the dynamic<br />
content spot. You can specify the theme by using @tl:oid: at the end of the<br />
mapping name.<br />
Example: <br />
4. Theme metadata is easier to modify than the REP: Theme metadata is accessible for updates through<br />
the themelist entry point on <strong>Web</strong>DAV and does not require a server restart for the changes to take<br />
effect. You might consider overriding the defaults through theme metadata, particularly at<br />
development time, even if the changes are global in production<br />
Note: When viewing metadata through the themelist <strong>Web</strong>DAV entry point, all keys with the prefix<br />
com.ibm.portal are hidden from view. You can add the metadata using this entry point and it will be<br />
applied, but after persisting the change to the back-end, reopening the metadata properties file might<br />
not display it.<br />
5. You are not limited to the dynamic spots that are shipped with the portal. If your theme design<br />
requires additional named content spots, you can add them.<br />
6. Changes to the Resource Environment Provider require a server restart to take effect.<br />
Related reference:<br />
“Page Builder theme templates (theme.html)” on page 180<br />
You can use static HTML to write portal themes. The static theme template is named theme.html .<br />
Developing custom layout templates:<br />
You can add new layout templates so that they can be assigned to portal pages.<br />
Layout templates are stored in the <strong>Web</strong>DAV filestore at the location /fs-type1/layout-templates. Toadd<br />
a new layout template so that it can be assigned to portal pages, create a new folder or copy and rename<br />
an existing layout template folder inside the root folder. Include all CSS files in the theme that are used<br />
by the new layout template.<br />
204 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
If you implement a complex layout template that requires its own JavaScript handling, ensure that the<br />
required JavaScript components are loaded and initialized by the theme. For best performance, build and<br />
minify all JavaScript used into a single, cachable file that can be loaded once and cached by the browser.<br />
For details about the syntax and elements of layout templates refer to the topic about Theme layout<br />
templates.<br />
Related reference:<br />
“Theme layout templates (layout.html)” on page 182<br />
Layout templates control the layout and positioning of the content on a page. The static layout template<br />
is called layout.html . The author of the layout template defines the HTML fragment markup and CSS<br />
for the layout of the page. The HTML fragment uses microformat to specify containers and components,<br />
such as portlets and iWidgets, to include in the page.<br />
Creating your own custom skins:<br />
You can create skins to customize the Page Builder theme as required. A successful approach to creating<br />
custom skins is copying the standard Page Builder skin, csa2.standard, then adding images, JavaScript<br />
files, and other custom resources. Copying the standard Page Builder skin is the best way to ensure that<br />
your custom skin contains all the required elements.<br />
Note: Do not modify the standard Page Builder skin directly, because future fix packs and service<br />
changes can overwrite your changes.<br />
To create custom skins, proceed by the following steps:<br />
1. Creating a new skin. To create a custom skin, proceed by these steps:<br />
a. Mount the /skinlist <strong>Web</strong>DAV entry point with your <strong>Web</strong>DAV client here: /wps/<br />
mycontenthandler/dav/skinlist/ .<br />
Replace wps with your WpsContextRoot value, if you have changed it.<br />
b. Copy and rename the folder of the Page Builder skin that you plan to use as the base for your<br />
custom skin.<br />
Note: Some <strong>Web</strong>DAV clients do not let you copy directly within the /skinlist folder. As an<br />
alternative, do the following:<br />
1) Copy the appropriate folder to your local file system.<br />
2) Give the skin a new title by editing the appropriate localized_locale.properties file under<br />
the metadata folder. If you do not change the title, the portal will show multiple skins with the<br />
same title in selection lists.<br />
3) Copy the new folder to the <strong>Web</strong>DAV /skinlist folder.<br />
Note: If you have trouble using the /skinlist/ entry point, try /skinlist/all, as some <strong>Web</strong>DAV<br />
clients have issues listening without the all appended.<br />
Your new skin is now defined in the portal database. To customize your skin, you edit the skin files<br />
in <strong>Web</strong>DAV. You can then assign the skin to portlets. To perform administrative customization to the<br />
title, description, or metadata of your skin, continue to use the /skinlist/ entry point. If you want to<br />
customize the templates and static resources, use the /fs-type1/ entry point.<br />
2. Adding static resources to your skin. To add images or other static resources to your skin, proceed as<br />
follows:<br />
a. Mount the /fs-type1/ <strong>Web</strong>DAV entry point with your <strong>Web</strong>DAV client here: /wps/<br />
mycontenthandler/dav/fs-type1/<br />
Replace wps with your WpsContextRoot value, if you have changed it.<br />
b. Add images or other static resources to your skin as follows:<br />
1) Copy the required static resources, such as images or JavaScript files, into the root directory of<br />
your skin in <strong>Web</strong>DAV.<br />
Setting up a portal site 205
2) Organize your files in subdirectories as necessary.<br />
3) Use server relative or absolute URLs to reference the resources in your skin.html file. For<br />
example, if you create a folder named /images that contains a file named logo.png, you can<br />
use the following references:<br />
Server relative URL: <br />
Absolute URL: <br />
Note: When you create a file for the skin on the /fs-type1/ entry point, there is a link that<br />
exposes this file also through the /skinlist/ entry point. This link makes it possible to use the<br />
path defined to the image as skinlist instead of fs-type1 . You can still use an absolute path to<br />
the /fs-type1/ entry point if required, for example <br />
Staging to production of theme artifacts:<br />
When you promote code from staging to production, you need to make sure to move all theme artifacts.<br />
Theme artifacts fall into two categories:<br />
v J2EE resources deployed in EAR or WAR files<br />
v Static resources deployed to the <strong>Web</strong>DAV filestore<br />
When you promote code from staging to production, make sure that you move both categories of<br />
resources. You can move J2EE resources from staging to production by deploying or updating the EAR or<br />
WAR file. You can move static resources by one of the following ways:<br />
v By using a manual copy operation. You can use a <strong>Web</strong>DAV client to copy the folder from the source<br />
portal server or cluster to the target portal server or cluster.<br />
v By using the portal ConfigEngine configuration task webdav-deploy-zip-file . Proceed as follows:<br />
1. Create a copy of the theme or the skin directory from your development server by using your<br />
<strong>Web</strong>DAV client. Make sure that all the files in this directory are checked into a source control<br />
library system such as Rational ClearCase.<br />
2. Create a deployable unit by creating a compressed file and adding that file to your deployment<br />
package.<br />
3. Deploy this package to a portal server or cluster in another environment. Follow the instructions<br />
given in the topic about the Task webdav-deploy-zip-file.<br />
For more details about the specific locations of all theme related artifacts refer to the topic about the<br />
Location of Theme Resources.<br />
Related reference:<br />
“Location of theme resources” on page 186<br />
This topic lists the location of theme resources. Theme resources can be either dynamic J2EE resources or<br />
static resources, such as HTML, CSS, JavaScript, and image files.<br />
Migrating existing themes to the new theme architecture<br />
The new Page Builder theme architecture of <strong>Web</strong>Sphere Portal Version 7.0 is designed to be a single<br />
architecture to replace past traditional portal themes and Mashup themes.<br />
You can use two approaches for converting an existing theme into the new theme architecture:<br />
1. Start with the new portal V 7 theme, and move in components from your existing custom theme. To<br />
take advantage of all the new features of the new Page Builder theme, it is usually easier to use this<br />
option. This makes sure that your new theme includes all new infrastructure and API required to<br />
support all the latest features of the current portal version.<br />
206 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
2. Start with your existing custom theme and add in what is required for the new features. Use this<br />
option, if you do not need all features, for example, if you do not plan to exploit client-side rendering.<br />
Moving a JSP-based theme to the new architecture:<br />
You can migrate your JSP-based theme to the new theme architecture by using different ways.<br />
Minimal conversion to support server-side rendering mode only:<br />
JSP-based themes are comprised of JSPs that include markup, JSP logic. They can be factored into<br />
multiple JSP fragments that are included into the base Default.jsp. For a minimal conversion to the new<br />
architecture you create only a static theme.html file that delegates everything to JSP components. To<br />
migrate your existing custom theme, proceed as follows:<br />
1. Start out with a copy of the portal Page Builder theme. This includes the bootstrapping and <br />
contributions required for the new theme.<br />
2. Edit the file theme.html and include the static markup produced by the JSP-based theme.<br />
3. Convert JSP elements into dynamic content spots in the file theme.html .<br />
Notes:<br />
a. All inline JSP logic needs to be isolated into a separate JSP and included as a dynamic content<br />
spot<br />
b. Dynamic content spots are dynamic includes, not static includes. This means that the JSP is<br />
executed independently, and is not compiled into a parent page, and it can therefore not access<br />
content or state set in another JSP. This often requires some slight tweaking of the included JSPs to<br />
include required headings, jspInit() functions, variable presets, that the JSP needs to setup itself<br />
rather than have it set up by a parent JSP.<br />
Example:<br />
v JSP element:<br />
<br />
v Static template dynamic content spot:<br />
<br />
4. You need to replace with .<br />
Adding client-side rendering support:<br />
Client-side rendering requires JavaScript and iWidget components to handle the client-side interaction<br />
model rather than the server-side elements. Starting with the minimal migration you need to implement<br />
or reuse existing iWidgets for each JSP dynamic content spot that you want to support the client-side<br />
model.<br />
Moving a mashup theme to the new architecture:<br />
Mashup themes are already a static theme.html file that contains client-side iWidgets to handle the<br />
interaction model. Therefore the conversion effort is small.<br />
To convert your mashup theme to the new architecture, proceed as follows:<br />
1. To invoke the layout template rendering, add a dynamic content spot to your file theme.html as<br />
follows:<br />
<br />
2. Replace the Mashups 2.0 layout widget by the new layouttemplate widget.<br />
Setting up a portal site 207
You can now use your theme with the new <strong>Web</strong>Sphere Portal Version 7.0 Page Builder theme<br />
architecture.<br />
Hints and tips for the Page Builder theme and widgets<br />
Some hints and tips for working with the Page Builder theme and widgets.<br />
Hints and tips for working with the Page Builder theme<br />
When you work with the Page Builder theme, observe the following hints and tips:<br />
v Pages with the Page Builder theme do not support composite applications.<br />
v Pages with the Page Builder theme do not support Portal business process integration.<br />
v Client side mode imposes some limits on the use of friendly URLs. In client side mode friendly names<br />
shown in the browser URL field do not always and necessarily reflect the page that is shown in the<br />
browser. For example, when a user changes to a different portal page in client side mode, the portal<br />
page changes, but the friendly name in the browser URL field remains the same, as the user request<br />
sent to the server is not for a complete refresh of the page. Only a full page refresh changes the<br />
friendly name in the browser URL field. Users can still insert a friendly name in the browser URL<br />
address field to access a particular page. That page is then rendered by a request to the server and a<br />
subsequent full page refresh.<br />
Hints and tips for working with widgets<br />
When you work with iWidgets, observe the following implications, hints, and tips:<br />
v <strong>Web</strong>Sphere supports iWidgets that comply with the iWidget specification Version 2.1. More details<br />
about this specification are available under the link to the iWidget Specification v2.1 given below. The<br />
portal iWidget registration process validates the iWidget definition XML file against this specification<br />
and rejects widgets that do not comply with it.<br />
v As the parsed iWidget definition is persisted in the portal database, this information can become<br />
outdated if the iWidget definition file is updated. You can refresh the iWidget definition data persisted<br />
in the portal database. To do this, use the configuration task refresh-iwidget-definitions. To refresh<br />
the information, you can run the task manually or schedule the task by using the portal task scheduler.<br />
v Portal access control guards the rendering of iWidgets on portal pages and the read/write access to<br />
iWidget metadata, such as preferences. Portal access control does not guard the direct HTTP based<br />
access to the iWidget files. If this is a concern, you need to provide such access control by the<br />
infrastructure that serves the iWidget files. For example, use J2EE authorization for iWidgets that you<br />
deploy as J2EE applications.<br />
v When you register iWidgets located on external servers, be aware of the following additional<br />
implications and restrictions:<br />
– The Ajax Proxy needs to be opened to allow accessing the iWidget files on the external servers.<br />
– When rendering the iWidget, the external server needs to be accessible by the portal, as the portal<br />
loads the widget files from the external server.<br />
Related tasks:<br />
iWidget Specification V 2.1: http://public.dhe.ibm.com/software/dw/lotus/mashups/developer/<br />
iwidget-spec-v2.1.pdf<br />
208 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Building a web content system<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to create, manage and deliver web content within<br />
your <strong>Web</strong>Sphere Portal system. Set up your web content system by defining libraries, building templates,<br />
and specifying other key components of the system. Once the system is in place, you can begin adding<br />
elements to your templates and use them to create content items.<br />
Before setting up your web content system, you should read the entire <strong>Web</strong>Sphere Portal Planning and<br />
Installing sections to determine the best overall configuration for your <strong>Web</strong>Sphere Portal system.<br />
You should also review the <strong>Web</strong>Sphere Portal Family Wiki. This site covers a wide variety of topics that<br />
product experts have found critical to a successful implementation.<br />
<strong>Web</strong> content library management<br />
As an administrator you need to periodically assist content managers with library maintenance, such as<br />
disabling or deleting a library. Keep in mind that some library tasks can reduce the performance of your<br />
server while running. Therefore library maintenance should only occur during off-peak periods when the<br />
least number of users are accessing a library.<br />
Important: Some library tasks can reduce the performance of your server while running. It is<br />
recommended that library maintenance occur only during off-peak periods when the least number of<br />
users are accessing a library.<br />
Related tasks:<br />
“Working with blogs” on page 677<br />
Use blogs and blog libraries to provide news and commentary on a variety of subjects pertinent to your<br />
intranet and extranet sites. Blogs and blog libraries typically combine text with graphics and links to<br />
other blogs and <strong>Web</strong> sites. Entries that you create and post are arranged in reverse-chronological order,<br />
with the newest entry displayed first. Readers can post comments about your entries, fostering<br />
discussions and online networking. You can manage your own blog entries and comment on other blog<br />
entries.<br />
“Working with wikis” on page 681<br />
Use wikis to share community content on a variety of subjects pertinent to your intranet and extranet<br />
sites. Wikis typically combine text with graphics and links to other wikis and <strong>Web</strong> sites. You can monitor<br />
and manage your own wiki articles.<br />
Creating web content libraries<br />
You create web content libraries in the <strong>Web</strong>Sphere Portal administration portlet.<br />
You must be an administrator to create web content libraries.<br />
1. Click Administration to open the administration portlet.<br />
2. Go to Portal <strong>Content</strong> and then <strong>Web</strong> <strong>Content</strong> Libraries.<br />
3. Click Create new library.<br />
4. Enter a name and description.<br />
209
5. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> user interface. The key is used to<br />
look up a string from the selected text provider. The text provider displays a different library name<br />
for each locale it has been configured for. The text entered in the library name field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
6. Select a language for the library. This option can only be set on creation. You cannot change the<br />
language of a library once the library has been created.<br />
Note: If a language does not exist in the list of languages available when creating a library, you can<br />
add that language to the list of supported <strong>Web</strong>Sphere Portal languages. See Language Support in<br />
the <strong>Web</strong>Sphere Portal information center for further information.<br />
7. If you want to prevent the library from being deleted, select Prohibit library from being deleted.<br />
8. Enable the library if you want to library to immediately be available.<br />
9. Select Include default items in the new library to add a set of default web content items to the<br />
library when it is created.<br />
10. Click OK to create the library.<br />
11. Add the new library to the list of configured libraries for each authoring portlet that requires access<br />
to the new library including authoring portlets on servers that you subscribe your library to. See<br />
“Selecting web content libraries” on page 216 for further information.<br />
Renaming Libraries:<br />
Ensure that your library is named correctly when first created as renaming a library after you have<br />
started to create web content can lead to errors. For example, menus and navigators may not correctly<br />
display results after a library has been renamed until all caches have been cleared.<br />
Related concepts:<br />
“<strong>Web</strong> content libraries” on page 531<br />
Your web content system can contain multiple libraries. The number of libraries required is determined<br />
by the type of website you are creating, and the types of users who require access to each library.<br />
Deleting a web content library<br />
When a web content library is no longer required, you can delete the library.<br />
Note:<br />
v You must be an administrator to delete web content libraries.<br />
v A library cannot be deleted if there are references to items in the library being deleted from items in<br />
other libraries.<br />
v A library is only deleted on the current server. If syndicating to other servers, you must delete each<br />
library on each server separately.<br />
v If you want to prevent any changes being made to items stored in a library, but would like those items<br />
to still appear on a rendered site, you should disable the library instead.<br />
v You should backup your library before deleting it.<br />
v Do not shut down your server during deletion as this will corrupt the library. You will need to reinstall<br />
your library from your backup if this happens.<br />
v Deleting a library is an intensive process and will increase the load on your server. A less load<br />
intensive alternative to deleting a library is disabling a library. See “Disabling a web content library”<br />
on page 211 for further information. Disabling a library can also be used as an alternative to deleting a<br />
library when a library cannot be deleted because there are references from items in other libraries.<br />
To delete a library:<br />
210 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
1. Go to Administration > <strong>Web</strong>Sphere Portal > Portal <strong>Content</strong> > web <strong>Content</strong> Libraries<br />
2. Click on the library you would like to delete.<br />
3. Click System Reports to open a list of library deletion reports.<br />
4. Click the latest report to review the library deletion.<br />
Note: Items that were previously deleted but not purged from the library are not included in the<br />
"total items deleted successfully" count.<br />
Disabling a web content library<br />
When a web content library is no longer required, you can disable the library. This prevents the library<br />
from being accessed from an authoring portlet, preventing users from updating any items stored in the<br />
library. Any items referenced from this library are still rendered in web content.<br />
You must be an administrator to disable web content libraries.<br />
1. Go to Administration > <strong>Web</strong>Sphere Portal > Portal <strong>Content</strong> > web <strong>Content</strong> Libraries<br />
2. Click on the library you would like to edit.<br />
3. Clear the "Enabled" check box. This disables the web content library.<br />
4. Click OK.<br />
Unlocking a library<br />
A library can become locked when a long running task, such as restoring all content items in a library,<br />
fails to unlock the library. In the rare event where a library becomes locked, you can use the unlock<br />
library tool to unlock the library.<br />
You must first enable the unlock library tool by adding the following parameters to the WCM<br />
WCMConfigService service using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console:<br />
v connect.businesslogic.module.unlocklibrary.class=com.aptrix.pluto.security.UnlockLibraryModule<br />
v connect.businesslogic.module.unlocklibrary.remoteaccess=true<br />
v connect.businesslogic.module.unlocklibrary.autoload=false<br />
Note: This tool only unlocks a web content library, not the items stored in the web content library.<br />
1. Log in to the portal as an administrator.<br />
2. To unlock a library, enter the following URL in the browser:<br />
http://hostname.yourco.com:port_number/wps/wcm/connect<br />
MOD=UnlockLibrary&library=libraryname<br />
Defining roles within a library<br />
You can define the access of a user or group for a library to determine who has access to a library, and to<br />
define access to the different views within the authoring portlet.<br />
You must have administrator access to edit web content libraries.<br />
Additive and subtractive methodology:<br />
You can assign roles to both a whole library, and the item types within a library using either an additive<br />
or subtractive methodology.<br />
For example, with an additive methodology, you apply the "All Authenticated Portal Users" to the<br />
"Contributor" role to the entire library. This grants "All Authenticated Portal Users" access to the library<br />
Building a web content system 211
and any authoring portlets configured to use the library. You then apply Editor, <strong>Manager</strong>, or<br />
Administrator roles to specific resource types to grant additional access to specified users or groups.<br />
With a subtractive methodology, you apply the <strong>Manager</strong> or Administrator role to a user or group to the<br />
entire library. You then apply Editor, Contributor, or User roles to specific item types and clear the<br />
inheritance check box. This reduces the access to different item types for specified users or groups.<br />
It is good practice to enable propagation from the web content library because this simplifies<br />
administering library access and because disabling propagation results in access-related errors.<br />
Assigning access permissions to a library and library item types:<br />
1. Open the administration portlet.<br />
2. Go to Portal <strong>Content</strong> and then Manage <strong>Web</strong> <strong>Content</strong> Libraries.<br />
3. Set your library access permissions:<br />
a. Click on the library you would like to edit.<br />
b. Click on the role you would like to edit.<br />
c. Click Add and search for any users or groups you would like to assign to a role.<br />
d. Click OK.<br />
e. Click Resources to return to the previous view.<br />
f. Click Done.<br />
4. Set access permissions to the different library item types. This defines the views and actions that are<br />
available from within the authoring portlet:<br />
a. Click on the library you would like to edit.<br />
b. Click on the role you would like to edit.<br />
c. Click Add and search for any users or groups you would like to assign to a role.<br />
d. Click OK.<br />
e. Click Resources to return to the previous view.<br />
f. Click Done.<br />
Item-level security inheritance:<br />
By default, each role's access is automatically inherited down to each item in a library. To prevent a user<br />
or group from automatically having inherited access to an item, you need to turn off inheritance on that<br />
item.<br />
The permissions set for item types in a library do not automatically give you access to individual items.<br />
They only give you access to specific tasks and views within the authoring portlet.<br />
To disable automatic inheritance you, specify the following property in the WCM WCMConfigService service<br />
using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console:<br />
v Property name: default.inherit.permissions.enabled<br />
v Value: false<br />
You need to restart <strong>Web</strong>Sphere Portal to enable any configuration changes.<br />
212 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related concepts:<br />
“Developing an access control strategy” on page 532<br />
You can restrict access to selected users and groups to the views within an authoring portlet, the items<br />
managed by the authoring portlet, and to elements and pages displayed within a website.<br />
Related tasks:<br />
“Assigning blog access to users” on page 679<br />
The Portal administrator can assign Editor access to you if you need to create and manage blogs within<br />
the site. If you are given Editor access to a blog, you can create or modify posts in that blog. If you are<br />
given Editor rights to a blog library, you can create and modify blogs and you can create and modify<br />
posts in that blog library. If you have <strong>Manager</strong> rights to a blog, you can create, modify, and delete posts<br />
and delete comments in that blog. If you are given <strong>Manager</strong> rights to a blog library, you can create,<br />
modify, and delete blogs and you can create, modify, and delete posts and delete comments within the<br />
blogs.<br />
“Assigning wiki access to users” on page 683<br />
If you are the administrator, you have <strong>Manager</strong> access and can assign Editor access to other users who<br />
need to create and manage wikis within the site. If you are the owner of a wiki site, you have <strong>Manager</strong><br />
access. As wiki site <strong>Manager</strong>, you can also delete any wiki page or wiki. If you have Editor access, you<br />
can create and edit any wiki site and wiki pages. All wiki editors can modify all pages of a wiki site.<br />
Related reference:<br />
“<strong>Web</strong> content management roles” on page 532<br />
You define the access of a user or group for a library to determine who has access to a library, and to<br />
define access to the different views within the authoring portlet.<br />
Restoring items in a library<br />
You can restore a set of items within a library that either have the same label or were versioned at, or<br />
before, a specified date and time.<br />
v You can only restore one set of items at a time. You cannot execute a second restore request until the<br />
first request has been completed. If you are restoring many items, this action may take some time.<br />
v When restoring items that contain links or references to other items you are prompted to select a new<br />
item to link or reference if the original item no longer exists.<br />
v You must be an Administrator to work with web content libraries.<br />
v A library cannot be restored while there are any items currently locked or checked out by users. Before<br />
restoring a library you, must view all published items in a library and unlock any items marked as<br />
checked out or locked.<br />
v Labels that you apply to versions are not syndicated to subscribers.<br />
1. Click Administration to open the administration portlet.<br />
2. Go to Portal <strong>Content</strong> and then <strong>Web</strong> <strong>Content</strong> Libraries.<br />
3. Click Additional Tasks:<br />
Restore all by Date<br />
Select this option to restore the most recent version of all items in a library saved before the<br />
specified date and time. The date and time selected here are based on the timezone of the<br />
server you are accessing, not the timezone of the computer you are using.<br />
Restore all by Label<br />
Select this option to restore all items that match the specified label.<br />
4. Click Additional Tasks and then View Report to open a list of library restore reports.<br />
Building a web content system 213
Related concepts:<br />
“Managing versions of items” on page 490<br />
You can configure your system to either automatically save a version of an item each time it is published,<br />
or allow users to select when to save a version of an item. You can restore items individually, or choose<br />
to restore a set of items within a library that either have the same label or were versioned at, or before, a<br />
specified date and time.<br />
Label a set of items in a library<br />
You can apply a label to the most recent versions of all items in a library. This action does not create a<br />
version, it simply updates the label of the most recent version. If you have created a label, at a later time<br />
you can restore items in the library based on that label.<br />
You can only label one set of items at a time. You cannot execute a second label request until the first<br />
request has been completed. If you are labeling many items, this action may take some time.<br />
You must be an Administrator to work with web content libraries.<br />
1. Click Administration to open the administration portlet.<br />
2. Go to Portal <strong>Content</strong> and then <strong>Web</strong> <strong>Content</strong> Libraries.<br />
3. Click Additional Tasks on the library you would like to label.<br />
4. Click Label.<br />
5. Type a label.<br />
6. Click OK.<br />
7. Click Additional Tasks and then View Report to open a list of library label reports.<br />
8. Click the latest report to review labeled items.<br />
Setting root access for all web content libraries<br />
By default, only administrators have access to work with <strong>Web</strong> content libraries. To allow other users to<br />
work with web content libraries, such as virtual portal administrators, you need to assign them access to<br />
the JCR content root node.<br />
You must have administrator access to assign access to the JCR content root node.<br />
This task can be used to assign users a specific level of access to all libraries available through the web<br />
content authoring portlet, or to assign virtual portal administrators "contributor" or "administrator" access<br />
to the JCR content root node so that they can administer libraries through the web <strong>Content</strong> Library view<br />
of the Administration page. Although it is possible to assign non-administrator users "contributor" or<br />
"administrator" access to the JCR content root node, they cannot work with web content libraries because<br />
only administrators have access to the administration page.<br />
1. Go to Administration>Portal <strong>Content</strong>><strong>Web</strong> <strong>Content</strong> Libraries<br />
2. Click Set access on root<br />
3. Assign users access to a role type:<br />
a. Grant virtual portal administrators "administrator" access to enable them to create new libraries<br />
and view, edit, and delete all existing libraries.<br />
b. Grant virtual portal administrators "contributor" access to enable them to create new libraries and<br />
view, edit, and delete libraries they have created. You can assign these users administrator access<br />
to libraries they have not created by editing the access settings of individual libraries.<br />
c. Grant users a specific level of access to all libraries available through the web content authoring<br />
portlet.<br />
4. Click Done<br />
214 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<strong>Web</strong> content authoring interface strategies<br />
The primary role of a web content authoring system is to allow your content creators to author content in<br />
the form of content items. There are various features you can use to customize the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
user interface to simplify the content authoring process for your content creators.<br />
Custom portal pages for authoring<br />
You do not have to use the default <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> page to create content. You can create a new<br />
portal page to act as the home page of your authoring system.<br />
You can create separate sub-pages under an authoring home page. For example:<br />
v add an authoring portlet to one sub-page<br />
v add web content viewer portlets to other sub-pages to allow you quickly preview different parts of<br />
your website<br />
You can also create pages specifically for different types of users. For example, you can create a separate<br />
page for your site designers and content creators. The authoring portlets you add to each page can be<br />
configured specifically for each user type.<br />
Example authoring home page<br />
In this example you have two users groups; site designers and content creators. The website is split<br />
between a design library and a content library.<br />
To create a shared authoring environment for both sets of users you would create a parent home page<br />
with separate sub-pages for each group, plus a third sub-page which will be used to preview the site:<br />
Table 29. Example authoring sub-pages<br />
Site designers page <strong>Content</strong> creators page Header<br />
v Includes an authoring portlet<br />
configured to use both the design<br />
and content libraries<br />
v<br />
Only site designers can access this<br />
page<br />
v<br />
v<br />
Includes an authoring portlet<br />
configured to use only the content<br />
library<br />
Only content creators can access<br />
this page<br />
v<br />
v<br />
Includes a web content viewer<br />
portlet used to preview the website<br />
Both site designers and content<br />
creators can access this page<br />
Related concepts:<br />
“Working with pages” on page 121<br />
Read about the different tasks associated with the Manage Pages portlet.<br />
Related information:<br />
“Managing portlets on a page” on page 163<br />
The Portlet Palette provides you with a collection of portlets that you can drag to the page for quick and<br />
easy page customization.<br />
Authoring system access strategies<br />
The roles you assign each library on your authoring system will determine what views and features in an<br />
authoring portlet are accessible to your users.<br />
You should only grant each user or group access to roles and item types to match the kind of work they<br />
will perform. For example:<br />
v Only assign website designers "edit" access to authoring templates and presentation templates as they<br />
are required to create new authoring templates.<br />
v Assign both website designers and web content authors "edit" access to components if they are both<br />
required to create components.<br />
Building a web content system 215
v <strong>Content</strong> approvers are only assigned "Contributor" access to content as they are not required to create<br />
new content items, but need approve access to content items during a workflow.<br />
Authoring portlet customization<br />
You can edit the shared settings of each authoring portlet on your authoring system to customize each<br />
authoring portlet for the people who use them.<br />
For example:<br />
v Select only the libraries that will be used by your users. For example, if you are configuring an<br />
authoring portlet to be used only by content creators, only select libraries used to store content items.<br />
v Edit the preview options to best suit your users and the type of website they are creating. You can<br />
choose to preview pages in a standard website, a local web content viewer on the same server as the<br />
authoring portlet or a remote web content viewer portlet on a different server.<br />
v Customize the look and feel of the authoring portlet by defining various user interface settings. You<br />
can use these settings to change some of the default settings of an authoring portlet, or to select a<br />
custom launch page to use in place of the default user interface.<br />
v Select an appropriate rich text editor for your users.<br />
Related concepts:<br />
“Authoring portlet settings”<br />
An authoring portlet is used to create and manage web content. You can edit the settings of an authoring<br />
portlet from within the Preferences section of the authoring portlet.<br />
Authoring portlet settings<br />
An authoring portlet is used to create and manage web content. You can edit the settings of an authoring<br />
portlet from within the Preferences section of the authoring portlet.<br />
Use the Configure mode to specify settings for all users of all instances of the authoring portlet,<br />
regardless of the page on which the portlet instance appears.<br />
Use the Shared Settings mode to specify settings for the current instance of an authoring portlet.<br />
Selecting web content libraries:<br />
You select which libraries are available to users when using this authoring portlet in the Library Selection<br />
section.<br />
1. Select Show selected libraries to select the libraries you want to make visible in the authoring portlet.<br />
a. To add a library, select a library from the list of available libraries, then click Add.<br />
b. To remove a library, select a library from the list of selected libraries, and then click Remove.<br />
c. Use the arrow buttons to change the order of the selected libraries. This determines the order the<br />
libraries appear in the authoring portlet.<br />
2. Select Show new libraries in the library explorer if you want any newly created libraries to<br />
automatically be shown in the library explorer.<br />
3. Alternately, to make all libraries visible in the authoring portlet, select Show all libraries. You can<br />
then select individual libraries to hide in the authoring portlet.<br />
a. To hide a library, select a library from the list of available libraries, and then click Add.<br />
b. To remove a library from the list, select a library from the list of selected libraries, and then click<br />
Remove.<br />
Configuring or editing shared settings of an authoring portlet:<br />
216 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Libraries selected using the "configure" view are available on all instances of the authoring portlet,<br />
regardless of the page on which the portlet appears. Libraries selected with the "edit shared settings"<br />
view are only available for the current instance of an authoring portlet.<br />
The libraries available in the "insert links" and "insert images" dialogues are based on the libraries<br />
selected in the "configure" view. If you select a library in the "edit shared settings" view that is not<br />
selected in the "configure" view, you are not able to select items from this library when using the "insert<br />
links" and "insert images" dialogues.<br />
You can select libraries specifically for the "insert links" and "insert images" dialogues by doing the<br />
following:<br />
1. Go to Administration > <strong>Web</strong>Sphere Portal > Portal User Interface > Manage Pages >.<br />
2. Search for the page with the unique name of com.ibm.wps.hiddenpage.wcm.Authoring_Portlet.<br />
3. Edit the page layout.<br />
4. Edit the shared settings of the web <strong>Content</strong> Authoring portlet.<br />
5. Select the required libraries and click OK.<br />
6. Click Done.<br />
Note:<br />
If you syndicate or import a library, it is not automatically added to the list of configured libraries for an<br />
authoring portlet on the target server. You need to add the syndicated or imported library to each<br />
authoring portlet on each server.<br />
Defining preview options:<br />
The preview options determine how content can be previewed. Preview options are defined within the<br />
Previewing Options section.<br />
1. Select Allow authors to preview content in a <strong>Web</strong> page to allow users to preview pages using the<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> servlet.<br />
2. To allow users to preview content in portal pages, you must select specific portal pages from the list<br />
located under Allow authors to preview content in the local portal pages selected below. The portal<br />
pages displayed here are the pages available on the same instance of the portal where your <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> application is installed. The selected pages must contain a web content viewer to<br />
display the content.<br />
3. To allow users to preview content in a portlet located on a different portal server, you must enter the<br />
URL to the remote portal page in the Allow authors to preview content using the following URLs<br />
field. The portal pages entered here must contain a web content viewer to display the content.<br />
Note: When using a web content viewer to preview content, ensure that the web content viewer is<br />
configured to receive links from Other portlets and this portlet. Otherwise the preview will not work.<br />
Defining user interface options:<br />
You use the User Interface Options section to define the user interface options of an authoring portlet.<br />
1. Select Hide the open item and view lists to hide these functions from users in the authoring portlet.<br />
2. Select a default view:<br />
a. To use the default user interface, select Library Explorer.<br />
b. If you have created a custom launch page to use in place of the default user interface, select<br />
Launch Page. For example, file.jsp. A custom launch page is a JSP file and must be stored in the<br />
WAR file directory for the Authoring portlet. was_profile_root/installedApps/cellname/<br />
Building a web content system 217
PA_WCM_Authoring_UI.ear/ilwwcm-authoring.war/jsp/html, where cellname is unique to your<br />
installation. Enter the name of the JSP file in the custom launch page field. See "Creating a custom<br />
launch page" for further information.<br />
3. To improve performance you can limit the number of tasks a user can open at the same time in the<br />
authoring portlet by entering a number in the Maximum open tasks per Authoring Portlet instance<br />
field.<br />
4. To improve performance you can limit the number of items a user can select in an index at the same<br />
time in the authoring portlet by entering a number in the Maximum selected items per action before<br />
warning and Maximum selected items per action before denying the action fields.<br />
5. The number of rows that appear in an index is defined in the Maximum rows per table field. If left<br />
blank, this defaults to 10. A maximum of 500 rows can set.<br />
6. To enable People Awareness, select Enable people awareness. People Awareness allows you to select<br />
user names that appear in views and forms within the Authoring Portlet, and send those users an<br />
email or Sametime message.<br />
7. Select the default display mode of the library explorer.<br />
List view mode:<br />
This mode only displays lists of items as you browse a library.<br />
Tree view mode:<br />
This mode displays both lists of items plus a navigational tree as you browse a library.<br />
Defining rich text options:<br />
You can configure <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to use either the standard rich text editor, an advanced rich<br />
text editor, or a third-party rich text editor in rich text fields.<br />
There are three options available when configuring the default rich text editor for your authoring portlet:<br />
Default<br />
Select this option to use the standard JavaScript editor.<br />
Advanced<br />
Select this option to use the advanced editor. This editor has more features than the default editor<br />
but requires a working Java runtime environment in the browser on the client computer.<br />
Custom<br />
Selecting Custom allows you to use a third-party rich text editor as your default editor. Before<br />
using a compatible third-party rich text editor, you should read the installation and configuration<br />
instructions of the third-party rich text editor. These should include instructions for enabling the<br />
third-party rich text editor to be used in a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> solution.<br />
When configuring a third-party rich text editor, you need to copy a JSP file supplied by the<br />
third-party rich text editor. This file is used to launch the third-party rich text editor. You enter<br />
the name of this JSP file in the Rich Text Options section of the authoring portlet configuration.<br />
If the third-party rich text editor is not available the standard rich text editor is used.<br />
Storing JSP Files:<br />
JSP files can be located:<br />
v within the was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war directory of your<br />
server.<br />
The JSP page is also stored in the client war directory of the local rendering portlet or of the<br />
servlet or portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. For example, to<br />
218 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
ender a JSP page on a local rendering portlet, you would also need to store a copy of the JSP<br />
file under was_profile_root/installedApps/node-name/PA_WCMLocalRendering.ear/ilwwcmlocalrende.war<br />
v within any other web application running on portal. When referencing JSP files in another web<br />
application, use the following path: contextPath;jspPath<br />
For example: /wps/customapplication;/jsp/editor.jsp<br />
Working with authoring templates<br />
An authoring template determines the design of a content form, defines what fields and elements appear<br />
on a content form and specifies default values for fields and elements.<br />
Authoring template types<br />
The type of content item you can create is determined by the type authoring template you create:<br />
<strong>Content</strong> template<br />
If you configure an authoring template to be a content template then the content items you create<br />
will be standard content items. These are designed to store elements that can be rendered within<br />
presentation templates.<br />
Resource template<br />
If you configure an authoring template to be a resource template then the content items you<br />
create will be based on a file stored in a file resource element. When a resource content item is<br />
rendered, the file stored in the selected file resource element is rendered on the web page. No<br />
presentation template is used when the file is rendered, only the content of the file itself. This is<br />
useful when you want to store a file, such as a PDF file, and render it directly on a page but<br />
would also like to have the PDF file listed in navigational components such as menus and<br />
navigators.<br />
Element selection for content items<br />
The fundamental purpose of the authoring template is to provide a way for the template author to select<br />
the elements that appear on the content form. When constructing the authoring template, you can select<br />
more than one element field of the same element type. For example, you might add three text element<br />
fields, two rich text element fields, and four image element fields to the same authoring template.<br />
Default values for content<br />
When you create an authoring template, you can specify default values to be used when creating new<br />
content based on the template. Well selected default values can make it easier and more efficient for a<br />
content author to create new content and can streamline the content creation process.<br />
You can set default content values for the following sections of the authoring template:<br />
Identification<br />
Contains descriptive information identifying the template, such as the name, title, and<br />
description. In addition you can specify additional authors and owners who can access and<br />
manage content items created with this template.<br />
Profile<br />
Contains profile information that can be used to group and categorize content items or to build<br />
page elements such as menus. You can select categories to associate with the content item or<br />
enter keywords that will be assigned to the content item.<br />
<strong>Content</strong> properties<br />
On a content form, this section contains information about the current content item including<br />
template maps and the site areas that the item is stored under.<br />
Building a web content system 219
<strong>Content</strong><br />
Contains the elements or components that are available for rendering as part of the content form.<br />
For each element or component, you can specify default values or settings as appropriate for the<br />
item. For example, for a text element you could specify the default text that would appear in the<br />
field on the content form, as well as related information such as the height and width of the field.<br />
Workflow<br />
Contains workflow information, including the default workflow that will be associated with a<br />
content item generated with the template. In addition to specifying the default workflow, you can<br />
set other workflow-specific properties such as the date and time when the content item should be<br />
published or expired.<br />
Access Control<br />
Contains information about which users and groups have access to the content item. You can<br />
restrict access according to user, type of access, or combination thereof.<br />
Tip: In most cases, you should be sure to specify default values for the following options when creating<br />
an authoring template:<br />
v Workflow<br />
v Access Control<br />
Simplified form layout<br />
The authoring template provides features that help you simplify the presentation of the content form and<br />
screen the content author from unnecessary complexity.<br />
<strong>Content</strong> form layout options<br />
You can control the general layout of the fields on the content form by specifying a content form<br />
layout option. Depending on the layout option you select, this can reduce the vertical space<br />
required to display the elements on the content form.<br />
Hidden fields<br />
In addition to organizing a content form with a layout option for the fields, you can further<br />
simplify the form presented to the content author through the use of hidden fields. With the<br />
exception of those fields that are required for a content form, you can designate any other field in<br />
the authoring template to be hidden. A field marked to be hidden in the authoring template is<br />
not displayed on the content form, thereby streamlining the form's visual appearance. Note,<br />
however, that although a hidden field is not displayed on the content form, the information<br />
defined in the field is still associated with the content form and will be processed with the form.<br />
This is particularly useful when used in conjunction with a default value for a field because it<br />
enables you to specify a setting for a field and then hide the field on the content form to ensure<br />
that the field's value cannot be changed by the content author. For example, you might want to<br />
set access control levels for content generated from the authoring template in the Access Control<br />
section of the template and then hide that section on the resulting content form. When a content<br />
item is generated from the template, the access control levels for the content item will be derived<br />
from the default values in the template.<br />
Customized help text<br />
To further help tailor the content form for a content author, <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> provides the<br />
capability of adding customized help text to the authoring template.<br />
v You can define help text for the entire content form that is generated from the authoring template. This<br />
help text can be used to describe the purpose of the form, for example, or to explain at a higher level<br />
how the form contributes to the site content that the form supports. Because it is fully customizable,<br />
you are free to include whatever specific information you feel would be of use to the content authors<br />
using the form.<br />
220 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v In addition to the HTML text you can add to describe the entire content form, you can also specify<br />
in-line help text that is displayed with each element on the form. This help text can provide targeted<br />
information for a particular field on the form, explaining possible values or noting special conditions<br />
related to the field.<br />
Presentation templates and authoring templates<br />
When referencing content components in a presentation template:<br />
v It is essential that all the components (and component types) the presentation template uses are<br />
available in the authoring template the content is based on.<br />
v It is acceptable to have more or less components stored within a content item than are actually used<br />
within one particular presentation template.<br />
You should also be aware that an authoring template could be used by different presentation templates in<br />
different site areas.<br />
Labeling elements<br />
The names of element labels in different content items must be the same if an element reference in a<br />
presentation template is to change depending on the current content. This is an important consideration if<br />
two authoring templates will be using the same presentation template. The element types however, do<br />
not have to be consistent.<br />
Table 30. Example: An element reference called Heading from Current Site Area<br />
Site area Element label Element type<br />
Business Heading Image<br />
Personal Heading Rich Text<br />
Features Heading Text<br />
News Heading Text<br />
Related tasks:<br />
“Creating an authoring template” on page 237<br />
Create an authoring template to design a content item form and determine what elements can be<br />
included in the form.<br />
Custom authoring interfaces<br />
You can use the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API and remote action parameters to create customized authoring<br />
interfaces specifically for your content creators.<br />
You may not want to use an authoring portlet as the user interface for all your users. In some cases it<br />
may be better to create a custom authoring interface using the the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API and remote<br />
action parameters. For example, you could create a very simple content authoring interface for a specific<br />
content authoring team.<br />
Custom launch pages<br />
You can configure an authoring portlet to use a launch page of your own design instead of the default<br />
user interface. A custom launch page can either be a JSP or HTML file. You use remote actions to call<br />
different views and functions from with the authoring portlet's user interface. You can also use the web<br />
content API to add other functions to your launch page. Once you have created a custom launch page,<br />
you then configure your authoring portlet to use the custom launch page instead of the default authoring<br />
portlet user interface.<br />
Building a web content system 221
Remote actions<br />
Remote actions are used in the query string of a URL to trigger actions from the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
application. You can use remote actions to add standard <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> functions to a custom<br />
user interface.<br />
Related concepts:<br />
“Creating a custom launch page” on page 704<br />
You can configure an authoring portlet to use a launch page of your own design instead of the default<br />
user interface.<br />
“Using remote actions” on page 696<br />
Remote actions are used to trigger actions from the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application.<br />
“Working with pages” on page 121<br />
Read about the different tasks associated with the Manage Pages portlet.<br />
“The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API” on page 687<br />
You can use the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API to extend functions of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Related information:<br />
“Managing portlets on a page” on page 163<br />
The Portlet Palette provides you with a collection of portlets that you can drag to the page for quick and<br />
easy page customization.<br />
<strong>Web</strong> content inline editing strategies<br />
An inline editing system is used to deliver editable web sites such as an intranet or a wiki. It combines<br />
the features of both an authoring system and a delivery system.<br />
Authoring tools element<br />
The authoring tool element is used to add authoring portlet functions to web pages.<br />
You can add the following authoring portlet functions to a web page:<br />
v Create a new content item.<br />
v Perform inline editing of a content item displayed in a web page.<br />
v Delete the content item displayed in a web page.<br />
v Approve or reject the current content being previewed. These buttons are only visible to approvers<br />
when previewing a draft item, or by opening the URL sent by an email action during a workflow.<br />
Authoring tools can be referenced within presentation templates, menu element designs and navigator<br />
element designs. When added to menus and navigators, the edit, delete and approve functions are<br />
applied to each item displayed in a menu or navigator.<br />
Creating an authoring tool element<br />
You can only use an authoring tool element by creating an authoring tool component. You cannot add an<br />
authoring tool element to authoring templates, site areas or content items.<br />
Using an authoring tool<br />
When previewing content, users with access to an authoring tool are able to execute various authoring<br />
portlet functions.<br />
Note: Care should be taken when previewing content items that use a presentation template that<br />
includes an authoring tool. Some functions are active and ready to use while other functions may not<br />
work as normal.<br />
The authoring tool will also be visible when viewing a published site.<br />
222 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Using an authoring tool on multiple servers<br />
When using an authoring tool on more than one server, you use two-way syndication to keep each server<br />
being used to author content synchronized. This may lead to the occasional "save" conflict where an item<br />
updated on one server will be overwritten with changes to the same item on another server when<br />
syndication occurs.<br />
User access to an authoring tool<br />
The authoring tools available to users on a web page are determined by:<br />
v Whether a user has access to the authoring tool component.<br />
v Which tools have been enabled in the authoring tool element.<br />
v The user's level of access to the content item displayed in a web page.<br />
v Whether a user has access to the authoring portlet. It is recommended that users are assigned at least<br />
contributor access to each web content library in a site to ensure they have access to the authoring<br />
portlet.<br />
v You only grant "editor" access or above to users who need to edit the authoring tool.<br />
v You only grant "user" access to users who also have access to the authoring server and who will be<br />
using the authoring tool.<br />
v In most cases, users who only have access to the published site would not be granted access to an<br />
authoring tool as the tool is designed to be used as an authoring tool on an authoring server, not a<br />
published site.<br />
Related tasks:<br />
“Using an authoring tools element” on page 293<br />
The authoring tool element is used to add authoring portlet functions to web pages. When creating an<br />
authoring tool element, you need to define the layout of the authoring tool and any required actions, and<br />
select parameters for each action layout as required.<br />
Working with authoring tools components in the JSR 286 web content viewer<br />
When rendering authoring tool components in the JSR 286 <strong>Web</strong> content viewer, you must account for<br />
some changes in the way placeholder tags are specified and in the way users navigate to pages<br />
containing authoring tool components. Authoring tasks accessed through a JSR 286 web content viewer,<br />
such as inline editing, require the use of an instance of the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> authoring portlet<br />
that is reserved specifically for such tasks.<br />
Controlling the behavior of authoring tools components:<br />
Authoring tools components rendered in a JSR 286 web content viewer enable you to create, read, edit,<br />
delete, approve, or reject content items directly in the web content viewer, instead of requiring you to<br />
navigate to the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> authoring portlet to perform the same action. While the<br />
traditional web content viewer launches authoring actions in its portlet window, the JSR 286 <strong>Web</strong> content<br />
viewer either launches a pop-up window that opens from the current page or redirects the user to<br />
another portal page that contains the authoring portlet.<br />
You can specify which behavior to use in the authoring tools element design. Typically placeholder tags<br />
are used to display authoring tools elements. The value of the format attribute of the placeholder tag<br />
determines what kind of URL is created to perform an authoring task:<br />
format="tag"<br />
The placeholder is rendered as a URL that opens a pop-up window containing the authoring<br />
portlet.<br />
format="url"<br />
The placeholder is rendered as a URL that redirects the user to another portal page that is used<br />
by the JSR 286 web content viewer for inline editing.<br />
Building a web content system 223
Note: Authoring tasks performed in the JSR 286 web content viewer are accomplished through a special<br />
instance of the authoring portlet that is reserved specifically for these tasks and is installed on a page that<br />
is hidden from the page navigation available to typical users. You can customize the authoring experience<br />
for these tasks by configuring the reserved authoring portlet and the page used to display it.<br />
Using authoring tools components when launching a pop-up window<br />
When using a pop-up window to perform an authoring task, the pop-up window opens above the portal<br />
page and can be moved within the boundaries of the browser window while still showing the portal<br />
page underneath. After you complete the task triggered by the authoring tools element, the pop-up<br />
window closes automatically, and the portal page refreshes, updating the view in the JSR 286 web content<br />
viewer. You can cancel the authoring task by clicking the close icon in the pop-up window's title bar.<br />
When cancelling the task, no <strong>Web</strong> content information is saved, unless you explicitly save changes before<br />
manually closing the window.<br />
The default value of the format attribute for a placeholder tag is tag, so to use pop-up windows for<br />
inline editing, it is not necessary to specify a value for the format attribute. Either of the following design<br />
examples creates a URL that opens a pop-up window for authoring tasks:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Note: It is not possible to launch the pop-up window in a separate browser window by adding<br />
target="_blank" to the HTML anchor tag in the design.<br />
Using authoring tools components when navigating to another page<br />
Instead of performing tasks from authoring tools elements in a pop-up window above the current page,<br />
you can perform authoring tasks by navigating to a hidden portal page that contains a JSR 286 web<br />
content viewer containing the reserved authoring portlet. Clicking a link for an authoring tools element<br />
automatically redirects you to the other page, but after you complete the authoring task, you must<br />
manually navigate back to the original page. If the page with the reserved authoring portlet was opened<br />
in a new browser window or tab, you must close the window or tab and manually refresh the original<br />
page to see any changes.<br />
To redirect users to another page for authoring tasks, specify a value of url for the format attribute in the<br />
placeholder tag in the authoring tools element design. Either of the following design examples creates a<br />
URL that redirects users to another portal page for authoring tasks:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Note: You can open the portal page in a separate browser window by adding target="_blank" to the<br />
HTML anchor tag in the design.<br />
224 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related tasks:<br />
“Configuring the reserved authoring portlet” on page 74<br />
The reserved authoring portlet is essential to the proper operation of web content pages and the JSR 286<br />
web content viewer, so it is important that the configuration of the reserved authoring portlet reflect<br />
similar settings for performing authoring tasks as the configuration of other instances of the <strong>IBM</strong> <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> authoring portlet.<br />
Related reference:<br />
“Defining authoring tools” on page 294<br />
You can format an authoring tool element's look and feel in different ways, including displaying<br />
authoring tools as text-based links, or image based links.<br />
Using the authoring portlet<br />
You use the web content authoring portlet to create and manage web content items including site areas,<br />
content items, authoring templates, presentation templates, components, categories, folders, projects, and<br />
workflow items.<br />
Working with the authoring portlet<br />
The authoring portlet is used to create and manage the items you use to create websites. There are a<br />
common set of features within the authoring portlet to assist you work with items.<br />
Accessing the authoring portlet<br />
To access the authoring portlet, open the main menu and go to Applications > <strong>Content</strong> > <strong>Web</strong> <strong>Content</strong><br />
Management .<br />
Authoring portlet access rights<br />
Access to the different views and items within the authoring portlet are determined by:<br />
v The role you have been assigned for each web content library.<br />
v The role you have been assigned for each view within the authoring portlet.<br />
v The access level you have been assigned for each <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> item.<br />
The <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> Java applet<br />
The first time you use a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system you will, at some point, be asked to authorize a<br />
Java Applet. Click Grant Always and this dialog will no longer display.<br />
If you ever receive an error stating that the "<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> applet failed to load or is<br />
unavailable", you may need to reinstall the applet:<br />
1. Remove the certificate for the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> applet. For example, on a Windows system, go<br />
to Control Panel > Java Plugin > Certificates. See your Java documentation for details.<br />
2. Reinstall or update your JRE.<br />
3. Open a new <strong>Web</strong>Sphere Portal session.<br />
4. Go to the <strong>Web</strong> <strong>Content</strong> Management tab.<br />
5. At some point, you will be asked to authorize a Java Applet. Click Grant Always and this dialog will<br />
no longer display.<br />
Navigating the authoring portlet<br />
You use different views within the authoring portlet to perform different tasks.<br />
View types<br />
You can navigate through lists of items using the authoring portlet navigator.<br />
Building a web content system 225
The library explorer<br />
The library explorer displays different lists of items you have access to. You can select a library<br />
and navigate through the different item-type views within each library. You can choose to display<br />
an explorer tree to assist you navigate through the items in each library. The library explorer is<br />
the view that will be displayed when you first access the authoring portlet.<br />
Item views<br />
You use this view to quickly display lists of related items:<br />
v Use the All items view to select different views by item type and item state.<br />
v Use the Deleted items view to view deleted items.<br />
v Use the External links view to view links that have been referenced in link elements.<br />
v Use the Projects view to select different list of projects.<br />
Group by Views<br />
You can view filtered lists of related items from the "Group by" navigator:<br />
v Use the authoring template filter to display lists of items that use the same authoring template.<br />
v Use the category filter to display lists of items that profiled with the same category.<br />
v Use the workflow filter to display lists of items that use the same workflow.<br />
Personal views<br />
You use this view to display lists of:<br />
v Recent items, which are items you have created, viewed or edited in the current session<br />
v Favorite items, which are items you have marked as "favorites"<br />
v Favorite locations, which are views you have marked as "favorites"<br />
v My items, which displays various lists of items where you are specified as an author<br />
v My deleted items, which displays deleted items where you are specified as an author<br />
v My pending approvals, which are items pending approval where you are individually<br />
specified as an approver<br />
Open views and items<br />
Any views or items that are currently open are listed in the Open Views or Open Items navigator.<br />
Filtering items displayed in an index<br />
Large websites contain large numbers of items. You can filter the items displayed within an index by<br />
using the filter feature.<br />
1. Click the Filter action above the attribute type to filter a view.<br />
2. Click Add a filter to add a new filter parameter.<br />
Filter by item type:<br />
v Select an item type.<br />
v Select to view either all items, items that are checked out or only items that are not checked<br />
out.<br />
Filter by title:<br />
v Select a condition.<br />
v Enter text to filter with.<br />
Filter by status:<br />
v Select either draft, published or expired.<br />
Filter by last saved date:<br />
v Select the appropriate filter parameter.<br />
226 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Enter a date or date range.<br />
Note: When using the "Before" or "After" parameters, the selected date is included in the date<br />
filter. When using the "Between" parameter, both dates are included in the search filter.<br />
Filter by author:<br />
v Select the authors to filter by.<br />
3. Click OK.<br />
4. To stop filtering an index, clear the filter.<br />
Working with favorites<br />
You can select any open item or view as a favorite. These are then accessible within the Personal Views<br />
menu.<br />
To save an item as a favorite:<br />
1. Open an item and click the button.<br />
2. The item is listed under Personal Views > Favorite items.<br />
To save a view as a favorite location:<br />
1. Open a view and click the button.<br />
2. Type a name for the new favorite location and click OK. Any applied filters will be saved in<br />
the new favorite location.<br />
3. The favorite location is listed under Personal Views > Favorite location.<br />
Removing a favorite:<br />
1. Open a favorite item or location and then click the button.<br />
Searching for items<br />
Large websites contain large numbers of items. You can search for items by using the search feature.<br />
1. To perform a basic search:<br />
a. Select an attribute to search for.<br />
b. Enter some text to search for:<br />
v The search looks for exact matches to the search text unless you specify a trailing asterisk (*)<br />
that acts as a wildcard. For example, searching for 'Span*' displays search results that contain<br />
words that begin with 'Span' such as 'Spanish'.<br />
v The asterisk character can also be used on its own, to specify that the search is for all items in<br />
the selected search form.<br />
v Usetheplus(+)andminus (-)symbols to specifically require a keyword's inclusion or<br />
exclusion in the search results. Searching for '+Span +Fran' specifies that the search display<br />
results must contain words 'Span' and 'Fran'.<br />
v The wildcard * character can only be used at the end of a search query, and cannot be used with<br />
negative exclusion. For Example: draft* is supported, but *draft and -draft* are not<br />
supported.<br />
v Search queries must contain a positive search term. For example: +content –draft is supported,<br />
but –draft is not supported.<br />
v You can explicitly search for phrases by enclosing keywords in double-quotes (").Ifyouare<br />
searching a double-byte character set language you must enter at least two characters.<br />
v The use of an underscore (_)character functions in the same manner as the space ( ) character.<br />
For example: _my_content displays results that contain the word "my" or "content".<br />
Building a web content system 227
v Common words (often called "stopwords"), such as "the," "and," or "of," are typically not<br />
included in search indexes. If you named an item "the home page" and then searched for "the",<br />
your search may return no results. To search for stopwords, enclose the word or phrase in<br />
double quotes. For example, "the".<br />
c. Click Search.<br />
Note: A basic search only searches for items in the current view:<br />
v If you select a top-level view, only items related to that view is shown in the search results for the<br />
basic search. For example:<br />
– If the "My items" view is selected, only items authored by the current user are searched for.<br />
– If the "<strong>Content</strong>" view is selected, only site areas and content are searched for.<br />
– If the "Site Areas" view is selected, only site areas are searched for.<br />
– If the "Categories" view is selected, only taxonomies and categories are searched for.<br />
– If the "Components" view is selected, only components are searched for.<br />
– If the "Authoring Templates" view is selected, authoring templates are searched for.<br />
– If the "Presentation Templates" view is selected, presentation templates are searched for.<br />
– If the "Workflow Items" view is selected, only workflows, workflow stages, and workflow actions<br />
are searched for.<br />
– If the "All Items" view is selected, all items are searched for.<br />
v If you open a sub-level view, only items displayed within this view is shown in the search results<br />
for the basic search. For example:<br />
– If the "My Items > Draft" view is selected, only draft items authored by the current user are<br />
searched for.<br />
– If the "<strong>Content</strong> > By Site Area" view is selected, only content, site areas, and content links are<br />
searched for.<br />
– If the "<strong>Content</strong> > By Title" view is selected, only content items are searched for.<br />
– If the "<strong>Content</strong> > By Category" view is selected, only content, taxonomies, and categories are<br />
searched for.<br />
– If the "Site Areas >" view is selected, only site areas are searched for.<br />
– If the "Categories > By Taxonomy" view is selected, only taxonomies and categories are searched<br />
for.<br />
– If the "Components > Image Components" view is selected, only image components are searched<br />
for.<br />
– If the "Workflow Items > Workflows" view is selected, only workflows are searched for.<br />
– If the "All Items > Draft" view is selected, only draft items are searched for.<br />
– If the "All Items > Items by Workflow" view is selected, only items that are workflowed are<br />
searched for.<br />
v When searching within the top level of "My Items" or "All Items", only published and expired<br />
content is displayed in search results. To search for draft or deleted items you need to open the<br />
"draft" or "deleted" views before searching.<br />
If you would like to search for items in all views, select the 'All items' view, or use the advanced<br />
search.<br />
2. To perform an advanced search:<br />
a. Click Advanced Search.<br />
b. To search for items within a specific index, select Selected path in the Search in drop-down list<br />
and then click Select Path to specify the path.<br />
c. To search for items in all libraries, select All libraries in the Search in drop-down list. To search<br />
for items within a specific library, select Selected Library in the Search in drop-down list and then<br />
select a library.<br />
228 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
d. Select the item types to search for.<br />
e. Select to search either published, draft or deleted items.<br />
f. Select an attribute to search for. You can choose to search an item's description, title, keywords or<br />
all of these.<br />
g. Select to either search for all words, any words, an exact phrase, or none.<br />
h. Enter some text to search for:<br />
v The search looks for exact matches to the search text unless you specify a trailing asterisk (*)<br />
that acts as a wildcard. For example, searching for 'Span*' displays search results that contain<br />
words that begin with 'Span' such as 'Spanish'.<br />
v The asterisk character can also be used on its own, to specify that the search is for all items in<br />
the selected search form.<br />
v Usetheplus(+)andminus (-)symbols to specifically require a keyword's inclusion or<br />
exclusion in the search results. Searching for '+Span +Fran' specifies that the search display<br />
results must contain words 'Span' and 'Fran'.<br />
v The wildcard * character can only be used at the end of a search query, and cannot be used with<br />
negative exclusion. For Example: draft* is supported, but *draft and -draft* are not<br />
supported.<br />
v Search queries must contain a positive search term. For example: +content –draft is supported,<br />
but –draft is not supported.<br />
v You can explicitly search for phrases by enclosing keywords in double-quotes (").Ifyouare<br />
searching a double-byte character set language you must enter at least two characters.<br />
v The use of an underscore (_)character functions in the same manner as the space ( ) character.<br />
For example: _my_content will display results that contain the word "my" or "content".<br />
v Common words (often called "stopwords"), such as "the," "and," or "of," are typically not<br />
included in search indexes. If you named an item "the home page" and then searched for "the",<br />
your search may return no results. To search for stopwords, enclose the word or phrase in<br />
double quotes. For example, "the".<br />
i. Click Add an entry to add further search queries.<br />
j. Select options to filter the search with as required. You can filter search results based on:<br />
v Click Add an entry to add a filter option. You can filter a search by:<br />
– The authors and owners of items returned in a search result. If searching for a user, only<br />
items where the user has explicitly been set as the owner or author are searched for. If<br />
searching for a group, only items where the group has explicitly been set as the owner or<br />
author are searched for.<br />
– When an item was created, published, expired, or last modified.<br />
– The authoring template, category, workflow, or workflow stage used by items returned in a<br />
search result.<br />
v Click Add an entry to add further filter options.<br />
k. Click Search.<br />
Search indexes:<br />
Search indexes are updated periodically. This means newly created or updated items are not found in the<br />
search results until the search index has updated.<br />
Working with locked and draft items<br />
As you work in collaboration with other users, you will encounter items that are locked by other users,<br />
either because they are being edited by another user, or a draft item has been created.<br />
Building a web content system 229
Working with locked items<br />
When a user is editing an item, the item is locked to other users. This means other users cannot edit the<br />
item until the current user closes the item being edited. A lock symbol<br />
that are currently locked.<br />
is displayed against items<br />
Users with administrator access can unlock items currently being edited by a user by selecting an item<br />
and then clicking the Unlock button.<br />
Users with manager access can also unlock items so long as they have manager access to both the item<br />
and the library it is stored in.<br />
Hierarchical item locking options<br />
Locking of site areas, taxonomies, and categories are configurable and is not enabled by default.<br />
When locking is enabled for site areas you cannot create any children under the locked site area. For<br />
example, if a site area is locked, you cannot create any site areas or content items under that site area<br />
until it is unlocked. This only applies to items located one level below a locked parent. Items located<br />
under a child of a locked parent are not affected.<br />
Working with draft items<br />
When a new draft of a published item is created, a tick is displayed against the published item. This<br />
means that no other user can create a draft until the current draft progresses through a workflow and its<br />
state changes to published.<br />
Deleting items<br />
You cannot always immediately delete items. Sometimes you need to perform steps to prepare an item<br />
for deletion.<br />
To delete an item:<br />
1. Select an item in an index.<br />
2. Click Delete.<br />
You can view a list of deleted items in either the My Items>Deleted or All Items>deleted views.<br />
Referential integrity<br />
When deleting items that are referenced by other items, you need to resolve any references that is broken<br />
by deleting the item. A dialog opens listing the items that cannot be deleted:<br />
v Select an item from the list and click Edit References.<br />
– Select an item and click Replace Reference to replace the item you are currently deleting with a<br />
different item. For example, if you are deleting a text component that is referenced within a<br />
presentation template, you can replace the reference to the text component you are deleting with a<br />
different component.<br />
– Select an item and click Clear Reference to remove the reference to the item you are deleting. For<br />
example, if you are deleting a presentation template that is mapped to an authoring template, you<br />
can choose to clear the reference to the authoring template.<br />
Note: The referential integrity options available when deleting items depend on the level of referential<br />
integrity applied to different items. There are occasions where only one option is available. Other items<br />
may not be able to be deleted at all.<br />
230 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Restoring items<br />
You can restore a deleted item by restoring a version of an item. See Managing Versions of items for<br />
further information.<br />
Purging items<br />
Users who have been granted manager access or above to a library can purge deleted items by selecting<br />
deleted items in the "All Items" view and then clicking Purge. This removes all occurrences of the<br />
selected item, including all versions. You cannot restore purged items.<br />
Viewing references<br />
The "view references" tool assists you to view and manage all the links between items.<br />
There are two ways to access the View References button:<br />
1. Open an item, and click the View References button.<br />
2. Select an item in an index and then click More Actions > View References.<br />
To view references:<br />
Click the View References button.<br />
1. To view the items that reference an item, select Show references to item.<br />
2. To view the items that are referenced by an item, select Show references from item.<br />
Authoring portlet accessibility features<br />
Accessibility features help a user who has a physical disability, such as restricted mobility or limited<br />
vision, to use software products successfully.<br />
The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> authoring portlet supports the following accessibility features:<br />
Screen-reader software and a digital speech synthesizer:<br />
You can use these tools to hear what is displayed on the screen.<br />
Native browser accessibility features:<br />
The accessibility features of supported browsers (large fonts, high contrast colors) are supported<br />
in the authoring portlet.<br />
Note: The best accessibility experience is achieved with Firefox 3.5.x or higher.<br />
Accessibility features of the default rich text editor<br />
You access the accessibility features of the default rich text editor by typing control-shift-m. This launches<br />
the detached accessible toolbar. You then use the following keystrokes:<br />
Control-shift-t<br />
This launches the table insertion dialog. Users should first select the point at which to create the<br />
table in the edit window, and then launch the table insertion dialog. You use the tab button to<br />
navigate through the data entry fields that are used to define the table. Users may click the OK<br />
button to insert the table or click the Cancel button to cancel the action.<br />
Control-shift-g<br />
This launches the color picker dialog. Users should first select some text in the edit window, and<br />
then launch the color picker. Users can use the tab key to navigate through the color swatches.<br />
The selected color name and value are displayed in the top text area. Users may press the Enter<br />
key to apply the color to the selected text or press the Cancel button to cancel the action.<br />
The detached accessible toolbar can be closed by using the alt-F4 keystroke.<br />
Building a web content system 231
Note: Control-shift-t and Control-shift-g do not work when the focus is on the detached accessible<br />
toolbar You need to press Alt+Tab to set the focus back to the browser that contains the authoring portlet<br />
where the focus will be within the rich text editor area.<br />
You can customize the detached accessible toolbar keystrokes by editing the KeySequence.properties file<br />
located under the wp_profile_root\PortalServer\config\com\ibm\wps\odc\editors folder.<br />
Note: These features only apply to the default rich text editor. See the documentation of other rich text<br />
editors for details on any accessibility features used by those editors.<br />
Using JAWS with rich text fields<br />
JAWS users need to install the Java Access Bridge to be able to read the content of Java applet rich text<br />
fields. Otherwise the JAWS reader only identifies rich text fields as a RTE frame and not read the content<br />
of the rich text field.<br />
Note: This is not required for the default rich text editor which is not a Java applet rich text editor.<br />
Writing accessible web content<br />
The <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application does not check whether content written in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
is accessible or not. You will need to test your website to ensure the content is accessible.<br />
Creating items<br />
The basic item creation task is the same for all item-types.<br />
1. Click New and then select an item-type.<br />
a. Some items require that you select a related item before the item form is opened. For example, you<br />
need to select an authoring template when creating content items. Select an item and click OK.<br />
2. The form for the selected item opens in a new tab.<br />
3. Enter data and select parameters as required in each section of the form.<br />
Creating a folder<br />
You create a folder when you need to store a set of the same type of items in a logical grouping.<br />
To create a folder, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click New ><br />
Folder.<br />
Related concepts:<br />
“Working with folders” on page 474<br />
You use folders to group sets of item types into logical groupings.<br />
Enter identification details for the folder:<br />
Specify identification information for the folder, including the name, title and description of the folder.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
232 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the folder:<br />
When creating a folder you can specify the location of the folder.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Specify folder access settings:<br />
Specify the access control settings for the folder to determine which users have access to the folder and<br />
their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
Building a web content system 233
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating site areas<br />
To create a site framework, you need to create site areas.<br />
To create a project, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management, and then click New ><br />
Site Area.<br />
Related concepts:<br />
“Site areas and site frameworks” on page 443<br />
Site areas are used to define a hierarchical site framework. <strong>Content</strong> items are saved within the site<br />
framework to give your content structure and context.<br />
Specifying a location for a site area:<br />
When creating a site area you can specify the location of the site area.<br />
1. Select First child to save the site area as the first listed content item within a site area or library, and<br />
then click OK.<br />
2. Select Last child to save the site area as the last listed site area within a site area, and then click OK.<br />
3. Select Before specified child to save the site area before a selected child item. A further selection<br />
dialog opens if this option is selected. Select a child item and then click OK.<br />
4. Select After specified child to save the site area after a selected child item. A further selection dialog<br />
opens if this option is selected. Select a child item and then click OK.<br />
Note:<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Enter identification details for the site area:<br />
Specify identification information for the site area, including the name, title and description of the site<br />
area.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
234 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Define site area properties:<br />
Select default content for a site area and create template maps.<br />
1. To select the default content item to display when a link to this site area is executed, click Select<br />
Default <strong>Content</strong>.<br />
v Select a content item and then click OK.<br />
v Click None to clear any selected content items.<br />
2. To select the presentation template to use when displaying content items based on different authoring<br />
templates, click Manage Template Maps.<br />
v Click Add to create a template map.<br />
– Select one authoring template and then one presentation template and then click OK.<br />
v To edit an existing template map, select a template map from the index and then click Edit.<br />
– Edit the template map and then click OK.<br />
v To remove an existing template map, select a template map from the index and then click Remove.<br />
Add elements to the site area:<br />
You add elements to site areas to store <strong>Web</strong> content specific to the site area.<br />
To add, remove or edit elements, click Manage Elements from the toolbar of a site area, content item or<br />
authoring template form.<br />
v To add an element:<br />
1. Select an element type.<br />
2. Enter a name. Do not use double-byte and non-ASCII characters.<br />
3. Enter a display title to use as the title of the element displayed indexes and forms.<br />
4. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
Building a web content system 235
displays a different display title for each language it has been configured for. The text entered in<br />
the Display Title field is only used if an appropriate display title is not available from the selected<br />
text provider, or if the text provider is not available.<br />
5. Click Add.<br />
v To remove an element, click .<br />
v To copy an element, click .<br />
1. Enter a name. Do not use double-byte and non-ASCII characters.<br />
2. Enter a display title to use as the title of the element displayed indexes and forms.<br />
3. Click Add.<br />
v To edit an element, click . Changing an element type may result in data being lost from an existing<br />
element. Click Update to save any changes.<br />
v Use the arrow buttons to change the order that the elements appear in an item form.<br />
Note: Do not overuse elements in a single item. The more elements you add to an item, the longer it<br />
takes to open in the authoring portlet.<br />
Related concepts:<br />
“Using elements” on page 293<br />
Each content item you create contains at least one element type. The elements stored in a content item are<br />
determined by the authoring template selected when you created the content item. Depending on the<br />
authoring template you select, and your level of access, you may also be able to manage the elements in<br />
a content item.<br />
Define additional site area properties:<br />
Specify additional properties for the site area, including the list of authors and owners associated with<br />
the site area.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Define site area access settings:<br />
Specify the access control settings for the site area to determine which users have access to the site area<br />
and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
236 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating an authoring template<br />
Create an authoring template to design a content item form and determine what elements can be<br />
included in the form.<br />
To create a authoring template, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management, and click<br />
New > Authoring Template.<br />
Related concepts:<br />
“Working with authoring templates” on page 219<br />
An authoring template determines the design of a content form, defines what fields and elements appear<br />
on a content form and specifies default values for fields and elements.<br />
Enter authoring template identification details:<br />
Specify identification information for the authoring template, including the name, title and description of<br />
the authoring template.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
Building a web content system 237
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the authoring template:<br />
When creating an authoring template you can specify the location of the authoring template.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Define item properties:<br />
Specify the characteristics of the item generated from the authoring template, including the type of item<br />
to be created, where it can be saved and version control strategies.<br />
1. Select the type of authoring template to create:<br />
<strong>Content</strong> template<br />
If you configure an authoring template to be a content template then the content items you<br />
create are standard content items that are used to store elements that can be rendered within<br />
presentation templates.<br />
Resource template<br />
If you configure an authoring template to be a resource template then the content items you<br />
create are based on a file stored in a file resource element. When a resource content item is<br />
rendered, the file stored in the selected file resource element is rendered on the web page. No<br />
presentation template is used when the file is rendered, only the content of the file itself. You<br />
specify a resource template when you want to store a file, such as a PDF file, and render it<br />
directly on a page but would also like to have the PDF file listed in navigational components<br />
such as menus and navigators.<br />
You must add a file resource element to your authoring template before being able to select<br />
the resource template type. If you have added more than one file resource element you must<br />
select which element is displayed as the resource content item.<br />
2. If you want to define a default presentation template for content items that use this authoring<br />
template, click Select Presentation Template. If no valid template map in a site area exists for a<br />
content item that uses this authoring template, the default presentation template is used to render the<br />
content item.<br />
238 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
3. To create a site area to store a new content item under, select Create <strong>Content</strong> under new Site Area.<br />
For example, if you create a content named "yellow" and select the site area named "red" when first<br />
saving the content item, a new site area named "yellow" is also created under the site area named<br />
"red". The content item is saved under the new site area named "yellow" and the path to the content<br />
item is "red/yellow/yellow".<br />
4. Select whether content created with this authoring template can be saved to any available site area or<br />
only to those site areas specified by the template author.<br />
All available site areas<br />
Enable the content author to save content created from this template in any site area to which<br />
the author has access.<br />
To allow the content author to save the content to only one site area, select Allow only a<br />
single site area to be selected.<br />
Selected site areas only<br />
Select specific site areas where the resulting content can be displayed. To select site areas,<br />
complete the following steps:<br />
a. Click Selected site areas only.<br />
b. Click Add.<br />
c. Select the site area you want to include.<br />
d. Click OK.<br />
e. Select the saving option to be applied when the content author saves content created from<br />
this template:<br />
v<br />
v<br />
v<br />
Allow content item to be placed under a single site area only: Causes the content<br />
author to select only one of the site areas in the list when saving content.<br />
Allow content to be placed under multiple site areas: Enables the content author to<br />
select one or more site areas from the list when saving content.<br />
No option: <strong>Content</strong> is automatically saved to the site areas in the list, and the content<br />
author is not provided a choice when the content is saved.<br />
Note: When saving content under multiple site areas, the content item is saved under the first site<br />
area in the list and then linked to the other site areas.<br />
5. Specify where new content created from this authoring template is listed by selecting one of the<br />
following options from the Placement of new content item field. The option you select determines<br />
where the new content item is displayed in indexes and navigators.<br />
v First Child<br />
v Last Child<br />
6. Select whether to force a new item to be saved in the first workflow stage when using "Save as" or<br />
not. If selected, users will not have a choice about where to save an item when using "Save As" and<br />
the new item will be automatically saved in the first workflow stage.<br />
7. Select the type of version management to use when creating content using this authoring template:<br />
v Configured default: The default version management setting is used.<br />
See "<strong>Web</strong> content authoring options" for further information.<br />
v Allow users to manually version on demand: This option enables users to create versions of<br />
content items when required.<br />
v Automatically version every update: A new version of the content item is created each time the<br />
content item is saved.<br />
v Do not offer a manual version option, and do not version automatically: Version management is<br />
disabled for content items based on this authoring template.<br />
Define form properties:<br />
Building a web content system 239
Specify the layout and functions available to content authors when creating a new item based on this<br />
authoring template.<br />
1. Choose a layout option from the list in the Select content form layout field.<br />
v Collapsible sections: Organizes the sections vertically and enables the content author to expand<br />
and collapse the sections as needed.<br />
v Labeled sections: Organizes the sections of the content form vertically and separates the sections<br />
with a label.<br />
v Tabbed: Organizes the sections horizontally on the form and provides access to the different<br />
sections with tab-like links.<br />
v No Sections: Arranges all elements on the form vertically without organization by section.<br />
2. Select Allow elements to be managed by editors to allow content creators to add additional<br />
elements. If not selected, the "Manage elements" button is not visible to content creators.<br />
3. Select whether a default style sheet component is used when rendering rich text elements in the<br />
content form. When set, the selected style sheet is applied to rich text editors when viewed in the<br />
authoring portlet. This allow users to select css classes as styles when using the editor.<br />
a. Click Select default style sheet.<br />
b. Select a style sheet component from the list of available style sheet components, or click None if<br />
you do not want to apply a style sheet component.<br />
c. Click OK.<br />
4. Select which actions to hide from content creators.<br />
5. Select how the toolbar is displayed to content creators.<br />
6. To display button in reverse order, select Reverse the button order within the toolbar.<br />
7. If you want to override the default help text for the content form with help text specific to your<br />
environment, enter the help text in the <strong>Content</strong> form help text field.<br />
The help text you create in this field applies to the entire content form. When the content author<br />
clicks the Show help link on the content form, the help text is displayed in a dedicated area of the<br />
form.<br />
With the embedded editor provided in this field, you can add help text as HTML. You can format the<br />
HTML text using the design view, which provides toolbar buttons for common tasks, or you can work<br />
directly with the text in a source view that displays the HTML tagging. If you have previously<br />
prepared content in HTML format that you want to include in the help, you can import that content<br />
using the embedded editor.<br />
Note: Although link components can be selected using the insert link button, link components do not<br />
work in content form help.<br />
Authoring template properties:<br />
Specify properties for the authoring template, including the list of authors and owners associated with<br />
the authoring template.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
240 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting authoring template access:<br />
Specify the access control settings for the authoring template to determine which users have access to the<br />
authoring template and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Default identification settings for content items:<br />
Specify default identification information for content items created using this authoring template.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
Building a web content system 241
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Adding elements to the content form:<br />
Add elements to the content form generated from the authoring template. You can define default values<br />
for the elements and set properties that dictate how the elements are displayed or processed.<br />
To add, remove or edit elements, click Manage Elements from the toolbar of a site area, content item or<br />
authoring template form.<br />
v To add an element:<br />
1. Select an element type.<br />
2. Enter a name. Do not use double-byte and non-ASCII characters.<br />
3. Enter a display title to use as the title of the element displayed indexes and forms.<br />
4. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in<br />
the Display Title field is only used if an appropriate display title is not available from the selected<br />
text provider, or if the text provider is not available.<br />
5. Click Add.<br />
v To remove an element, click .<br />
v To copy an element, click .<br />
1. Enter a name. Do not use double-byte and non-ASCII characters.<br />
2. Enter a display title to use as the title of the element displayed indexes and forms.<br />
3. Click Add.<br />
v To edit an element, click . Changing an element type may result in data being lost from an existing<br />
element. Click Update to save any changes.<br />
v Use the arrow buttons to change the order that the elements appear in an item form.<br />
Note: Do not overuse elements in a single item. The more elements you add to an item, the longer it<br />
takes to open in the authoring portlet.<br />
242 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related concepts:<br />
“Using elements” on page 293<br />
Each content item you create contains at least one element type. The elements stored in a content item are<br />
determined by the authoring template selected when you created the content item. Depending on the<br />
authoring template you select, and your level of access, you may also be able to manage the elements in<br />
a content item.<br />
Default properties for content items:<br />
Specify default properties for content items created using this authoring template.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Default profile settings for content items:<br />
Specify the access control settings for the authoring template to determine which users have access to the<br />
authoring template and their level of access.<br />
1. To edit the list of categories that are used to profile this item, click Select Categories.<br />
a. To add a category, click Add.<br />
v Select the required categories from the index and then click OK.<br />
b. To remove categories, select the categories you want to remove and then click Remove.<br />
2. Enter any keywords you would like to profile this item with in the Keywords field separated by<br />
commas.<br />
Default workflow settings for content items:<br />
Specify the access control settings for the authoring template to determine which users have access to the<br />
authoring template and their level of access.<br />
1. To select a workflow, click Select Workflow.<br />
a. Select a workflow and then click OK.<br />
2. Enter dates and times to execute any date or time specific workflow actions.<br />
a. Click to select a date.<br />
b. Click to select a time.<br />
Publish Date<br />
Select the date and time to execute a publish action in a workflow stage.<br />
Expiry Date<br />
Select the date and time to execute an expire action in a workflow.<br />
Building a web content system 243
General dates<br />
These dates are executed when using custom actions to perform scheduled tasks not based on<br />
published or expired dates.<br />
Note: Selecting a publish or expire date does not cause the item to be published or expired. The<br />
selected workflow must include a publish or expire action for this to happen. The publish and expire<br />
dates and times do not represent the time the content is published or expired. They represent the time<br />
the publish or expire action can be executed which may occur before the content is moved to either<br />
the published or expired stage of the workflow cycle.<br />
If no date or time is selected then it will default to the date the content was created which allows the<br />
publish and expire actions to be executed immediately when the content is moved to the published or<br />
expired stage of the workflow cycle.<br />
The date and time selected here are based on the timezone of the server you are accessing, not the<br />
timezone of the computer you are using.<br />
3. To select additional users to those already specified as having access to the rendered item, click Select<br />
Additional Viewers.<br />
a. To add users or groups, click Add.<br />
v Select either Users or Groups.<br />
v Enter text to search for in the Search field and then click Search. (Leave the Search field blank<br />
to display all users or groups.)<br />
v Select the required users or groups and then click OK.<br />
b. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
Granting access to control authoring template modifications:<br />
Specify the access control settings for the authoring template to determine which users have access to the<br />
authoring template and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
244 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
7. Then click OK.<br />
Defining display settings of fields and elements:<br />
You can define the display properties of field and elements displayed on a content form. Different field<br />
and element types have different display properties.<br />
1. To hide an entire section in a content form from all users, select Hide Section. You must specify a<br />
default value in any required fields within the section to use this option.<br />
2. Click to open the display properties of a field or element. The following field properties can be<br />
set. Different field and element types have different display properties.<br />
a. To display a field or element as a required field select Identify this as a required field. Users<br />
must complete this field or element.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators can choose to display hidden fields and elements in a content item by<br />
clicking Show hidden fields.<br />
c. Type the number of pixels to use in Field Width to set the size of the displayed field. If you leave<br />
this field blank, the default field size is used.<br />
d. Type a number into the maximum or minimum characters or words fields to set limits on the<br />
number of characters or words a user can enter in a field.<br />
e. To change the label of a field or element, enter a name Field label.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays different field labels for each language it has been configured for. The text entered in the<br />
field label is only used if an appropriate text label is not available from the selected text provider,<br />
or if the text provider is not available.<br />
f. Type field-specific help into Field help text. This displays above the field or element in the content<br />
form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
g. The content of some fields can automatically be generated, such as the Name and Display title<br />
fields by selecting Generate. If selected, the field is no longer editable.<br />
v When selected in the Name field, a numeric name is automatically generated.<br />
v When selected in other fields you also select the field or element to use to generate the content<br />
of the field, as well as other options such as field size.<br />
h. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
i. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
j. You can restrict the range of dates and times that users can select in date and time fields by<br />
selecting a start and end date or time. You either select a specific date, or select the number of<br />
days, hours or minutes after the creation date to begin the range, or the number of days, hours or<br />
minutes after the start date to end the range.<br />
k. You restrict the items available to be selected on fields such as "Select Categories" or "Select<br />
Workflows" by selecting the items you want a user to select from. You can also restrict a user to<br />
select a single item.<br />
Building a web content system 245
l. You can choose not to use workflows for items created using an authoring template by selecting<br />
Dis able workflows for items using this authoring template in the workflow properties view.<br />
Selecting this option also disables the workflow section on item forms. Users are instead able to<br />
directly create drafts instead of progressing an item through a workflow.<br />
m. You can restrict the maximum and minimum sizes of files added to a file resource element. You<br />
can also restrict the mime type of files that can be added to file resource elements. You add<br />
multiple mime types separated by a space.<br />
n. A "custom JSP" field is available on some element types. You use this field to reference a JSP file to<br />
use instead of the default element view in the user interface. You can write JSP to control the look<br />
and feel of an element, and to restrict the values that can be entered into an element.<br />
When referencing the JSP file you can also specify whether the JSP is to be used in read or edit<br />
mode. For example:<br />
v readMode=/jsp/html/CustomJSP_ReadMode.jsp, editMode=/jsp/html/<br />
CustomJSP_EditMode.jsp<br />
Storing JSP Files:<br />
When referencing a JSP file in the custom JSP field of the element properties view, you can use<br />
the following formats.<br />
When located within the ilwwcm.war directory of your server use this format:<br />
was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war<br />
Note: The JSP page is also stored in the client war directory of the local rendering portlet<br />
or of the servlet or portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. For<br />
example, to render a JSP page on a local rendering portlet, you would also need to store a<br />
copy of the JSP file under was_profile_root/installedApps/node-name/<br />
PA_WCMLocalRendering.ear/ilwwcm-localrende.war<br />
When located within any other web application running on portal:<br />
contextPath;jspPath<br />
Specifies an edit mode version of the field where the JSP is located in another<br />
application. For example: /wps/customapplication;/jsp/editor.jsp<br />
jspPath<br />
Specifies an edit mode version of the field where the JSP is located in same<br />
application as <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
editmode=contextPath;jspPath<br />
Specifies an edit mode version of the field where the JSP is located in another<br />
application.<br />
editmode=jspPath<br />
Specifies an edit mode version of the field where the JSP is located in same<br />
application as <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
readmode=contextPath;jspPath<br />
Specifies a read mode version of the field where the JSP is located in another<br />
application.<br />
readmode=jspPath<br />
Specifies a read mode version of the field where the JSP is located in same<br />
application as <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
readmode=contextPath;jspPath,editmode=contextPath;jspPath<br />
Specifies an edit mode and read mode version of the field where the JSPs are<br />
located in another application.<br />
246 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
eadmode=jspPath,editmode=jspPath<br />
Specifies an edit mode and read mode version of the field where the JSPs are<br />
located in same application as <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
o. You can edit the default behavior of rich text elements.<br />
Use stylesheet, hide fonts/size/color<br />
Select this option if you want the text style to be determined by a style sheet. <strong>Content</strong><br />
creators will not be able to edit text properties such as fonts style, text size, and text color.<br />
Limit image picker to library images<br />
Select this option to prevent content creators from inserting images from the file system.<br />
They will only be able to select images stored as image components.<br />
Dis able source mode<br />
Select this option to prevent content creators from viewing the rich text editor in source<br />
mode.<br />
Filter active content on save<br />
Select this option to prevent users from saving active content, such as scripts, in the rich<br />
text element.<br />
p. You can also select to use either the default rich text editor of the authoring portlet, or a<br />
third-party rich text editor as the rich text editor for a rich text element:<br />
Portlet default editor<br />
If selected, the default rich text editor of the current authoring portlet is used. If the<br />
default editor is not available, the standard rich text editor is used.<br />
Custom<br />
Selecting Custom allows you to use a 3rd-party rich text editor as your default editor.<br />
Before using a compatible third-party rich text editor, you should read the installation and<br />
configuration instructions of the third-party rich text editor. These should include<br />
instructions for enabling the third-party rich text editor to be used in a <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> solution.<br />
When configuring a third-party rich text editor, you need to copy a JSP file supplied by<br />
the third-party rich text editor. This file is used to launch the third-party rich text editor.<br />
You enter the name of this JSP file in the Rich Text Options section of the authoring portlet<br />
configuration.<br />
If the third-party rich text editor is not available, the default rich text editor of the<br />
authoring portlet is used. If the default editor is not available, the standard rich text editor<br />
is used.<br />
When referencing a JSP file in the custom JSP field of the element properties view, you<br />
can use the following formats.<br />
When located within the ilwwcm.war directory of your server use this format:<br />
was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war<br />
Note: The JSP page is also stored in the client war directory of the local rendering<br />
portlet or of the servlet or portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> API. For example, to render a JSP page on a local rendering portlet, you<br />
would also need to store a copy of the JSP file under was_profile_root/<br />
installedApps/node-name/PA_WCMLocalRendering.ear/ilwwcm-localrende.war<br />
When located within any other web application running on portal:<br />
Building a web content system 247
contextPath;jspPath<br />
Specifies an edit mode version of the field where the JSP is located in<br />
another application. For example: /wps/customapplication;/jsp/<br />
editor.jsp<br />
jspPath<br />
Specifies an edit mode version of the field where the JSP is located in<br />
same application as <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
editmode=contextPath;jspPath<br />
Specifies an edit mode version of the field where the JSP is located in<br />
another application.<br />
editmode=jspPath<br />
Specifies an edit mode version of the field where the JSP is located in<br />
same application as <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
readmode=contextPath;jspPath<br />
Specifies a read mode version of the field where the JSP is located in<br />
another application.<br />
readmode=jspPath<br />
Specifies a read mode version of the field where the JSP is located in same<br />
application as <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
readmode=contextPath;jspPath,editmode=contextPath;jspPath<br />
Specifies an edit mode and read mode version of the field where the JSPs<br />
are located in another application.<br />
readmode=jspPath,editmode=jspPath<br />
Specifies an edit mode and read mode version of the field where the JSPs<br />
are located in same application as <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
3. Click Done to close the properties view.<br />
Using the reset and apply button:<br />
When editing display properties, click the Reset button to return the display properties to the values<br />
entered the last time the authoring template was saved.<br />
Click Apply to apply values entered in the properties fields. For example, apply the width of the field to<br />
the value entered in "field width" field.<br />
Customizing elements using JSP:<br />
A "custom JSP" field is available on some element types when added to an authoring template. You use<br />
this to reference a JSP file to use instead of the element default view in the user interface. You can write<br />
JSP to control the look and feel of an element, and to restrict the values that can be entered into an<br />
element.<br />
Storing JSP Files:<br />
JSP files can be located:<br />
v within the was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war directory of your server.<br />
The JSP page is also stored in the client war directory of the local rendering portlet or of the servlet or<br />
portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. For example, to render a JSP page on<br />
a local rendering portlet, you would also need to store a copy of the JSP file under<br />
was_profile_root/installedApps/node-name/PA_WCMLocalRendering.ear/ilwwcm-localrende.war<br />
v within any other web application running on portal. When referencing JSP files in another web<br />
application, use the following path: contextPath;jspPath<br />
248 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
For example: /wps/customapplication;/jsp/editor.jsp<br />
Custom bean and EditorBean API:<br />
The CustomBean and EditorBean API can be found under com.ibm.workplace.wcm.api.authoring in the<br />
Javadoc located under the was_profile_root\installedApps\nodename\wcm.ear\ilwwcm.war\<br />
webinterface\ folder.<br />
Referencing jsp files<br />
When referencing a JSP file in the custom JSP field of the element properties view, you can use the<br />
following formats.<br />
When located within the ilwwcm.war directory of your server use this format<br />
was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war<br />
Note: The JSP page is also stored in the client war directory of the local rendering portlet or of<br />
the servlet or portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. For example, to<br />
render a JSP page on a local rendering portlet, you would also need to store a copy of the JSP file<br />
under was_profile_root/installedApps/node-name/PA_WCMLocalRendering.ear/ilwwcmlocalrende.war<br />
When located within any other web application running on portal<br />
contextPath;jspPath<br />
Specifies an edit mode version of the field where the JSP is located in another application.<br />
For example: /wps/customapplication;/jsp/editor.jsp<br />
jspPath<br />
Specifies an edit mode version of the field where the JSP is located in same application as<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
editmode=contextPath;jspPath<br />
Specifies an edit mode version of the field where the JSP is located in another application.<br />
editmode=jspPath<br />
Specifies an edit mode version of the field where the JSP is located in same application as<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
readmode=contextPath;jspPath<br />
Specifies a read mode version of the field where the JSP is located in another application.<br />
readmode=jspPath<br />
Specifies a read mode version of the field where the JSP is located in same application as<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
readmode=contextPath;jspPath,editmode=contextPath;jspPath<br />
Specifies an edit mode and read mode version of the field where the JSPs are located in<br />
another application.<br />
readmode=jspPath,editmode=jspPath<br />
Specifies an edit mode and read mode version of the field where the JSPs are located in<br />
same application as <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Text element example<br />
<br />
<br />
<br />
Building a web content system 249
CustomItemBean customItem =<br />
(CustomItemBean) request.getAttribute("CustomItemBean");<br />
customItem.setSubmitFunctionName("myoptionsubmit");<br />
String fvalue = (String)customItem.getFieldValue();<br />
fvalue = fvalue.replaceAll("\"", """).replaceAll("\"","'");<br />
<br />
function myoptionsubmit()<br />
{<br />
document.getElementById(’’).value =<br />
document.getElementById(’_mycustomoption’).value;<br />
}<br />
<br />
<br />
Rich Text element example<br />
<br />
<br />
<br />
EditorBean editor = (EditorBean) request.getAttribute("EditorBean");<br />
<br />
function setHtml(id, html)<br />
{<br />
document.getElementById(id + "_rte").value = html;<br />
}<br />
function getHtml(id)<br />
{<br />
return document.getElementById(id + "_rte").value;<br />
}<br />
function setRichTextValue(theText)<br />
{<br />
document.getElementById(’_rte’).value = theText;<br />
}<br />
<br />
<br />
<br />
var initialValue = document.getElementById(’_inithtml’).value;<br />
var editorTextArea = document.getElementById(’_rte’);<br />
editorTextArea.value = initialValue;<br />
if (initialisedRTEs != null)<br />
{<br />
initialisedRTEs = initialisedRTEs + 1;<br />
}<br />
<br />
Custom option selection element example with validation<br />
This example is used to create a selection list of predefined options.<br />
<br />
<br />
<br />
250 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
CustomItemBean customItem =<br />
(CustomItemBean) request.getAttribute("CustomItemBean");<br />
customItem.setSubmitFunctionName("mysubmit");<br />
String fvalue = (String)customItem.getFieldValue();<br />
fvalue = fvalue.replaceAll("\"", """).replaceAll("\"","'");<br />
<br />
<br />
Option1<br />
Option2<br />
Option3<br />
Option4<br />
<br />
<br />
function mysubmit()<br />
{<br />
var selIndex=document.getElementById(’_mycustom’).selectedIndex;<br />
if (selIndex
%><br />
<br />
<br />
Jul 4, 2005<br />
Aug 15, 2005<br />
Dec 25, 2005<br />
Jan 26, 2006<br />
<br />
<br />
function mydatesubmit()<br />
{<br />
var selIndex=document.getElementById(’_mycustomdate’).selectedIndex;<br />
document.getElementById("").value =<br />
document.getElementById(’_mycustomdate’).options[selIndex].text;<br />
}<br />
<br />
Number element example<br />
This example is used to create a selection list of predefined numbers.<br />
<br />
<br />
<br />
<br />
CustomItemBean customItem =<br />
(CustomItemBean) request.getAttribute("CustomItemBean");<br />
customItem.setSubmitFunctionName("mynumbersubmit");<br />
String fvalue = (String)customItem.getFieldValue();<br />
fvalue = fvalue.replaceAll("\"", """).replaceAll("\"","'");<br />
<br />
<br />
6<br />
8.5<br />
12<br />
15.45<br />
<br />
<br />
function mynumbersubmit()<br />
{<br />
var selIndex=document.getElementById(’_mycustomnumber’).selectedIndex;<br />
document.getElementById("").value =<br />
document.getElementById(’_mycustomnumber’).options[selIndex].text;<br />
}<br />
<br />
User selection element example<br />
This example is used to create a field to enter a user name.<br />
<br />
<br />
<br />
<br />
<br />
function myusersubmit()<br />
{<br />
document.getElementById(’’).value =<br />
document.getElementById(’_mycustomuser’).value;<br />
}<br />
<br />
<br />
Creating content items<br />
<strong>Content</strong> items are based on authoring templates. The fields displayed in a content item form can be<br />
hidden from different users, so not all the steps outlined below may be required. Some fields and<br />
elements may already contain default data.<br />
To create a content item, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click New<br />
> <strong>Content</strong>.<br />
Building a web content system 253
Related concepts:<br />
“<strong>Content</strong> items” on page 442<br />
You use content items to store web page specific content in the form of elements.<br />
<strong>Content</strong> identification:<br />
Specify identification information for the content item, including the name, title and description of the<br />
content item.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Adding elements to a content item:<br />
You add elements to content item to store <strong>Web</strong> content specific to the content item. You can only add<br />
elements to a content item if the authoring template used to create the item allows you to add elements.<br />
Otherwise, you can only work with the elements defined in the authoring template.<br />
To add, remove or edit elements, click Manage Elements from the toolbar of a site area, content item or<br />
authoring template form.<br />
v To add an element:<br />
1. Select an element type.<br />
254 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
2. Enter a name. Do not use double-byte and non-ASCII characters.<br />
3. Enter a display title to use as the title of the element displayed indexes and forms.<br />
4. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in<br />
the Display Title field is only used if an appropriate display title is not available from the selected<br />
text provider, or if the text provider is not available.<br />
5. Click Add.<br />
v To remove an element, click .<br />
v To copy an element, click .<br />
1. Enter a name. Do not use double-byte and non-ASCII characters.<br />
2. Enter a display title to use as the title of the element displayed indexes and forms.<br />
3. Click Add.<br />
v To edit an element, click . Changing an element type may result in data being lost from an existing<br />
element. Click Update to save any changes.<br />
v Use the arrow buttons to change the order that the elements appear in an item form.<br />
Note: Do not overuse elements in a single item. The more elements you add to an item, the longer it<br />
takes to open in the authoring portlet.<br />
Related concepts:<br />
“Using elements” on page 293<br />
Each content item you create contains at least one element type. The elements stored in a content item are<br />
determined by the authoring template selected when you created the content item. Depending on the<br />
authoring template you select, and your level of access, you may also be able to manage the elements in<br />
a content item.<br />
<strong>Content</strong> item properties:<br />
Specify additional properties for the content item, including the list of authors and owners associated<br />
with the content item.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
<strong>Content</strong> item profile settings:<br />
Specify the profile information used to identify the current item, such as the categories to which the item<br />
belongs and any keywords that you want to associate with the item.<br />
1. To edit the list of categories that are used to profile this item, click Select Categories.<br />
a. To add a category, click Add.<br />
Building a web content system 255
v Select the required categories from the index and then click OK.<br />
b. To remove categories, select the categories you want to remove and then click Remove.<br />
2. Enter any keywords you would like to profile this item with in the Keywords field separated by<br />
commas.<br />
<strong>Content</strong> item workflow settings:<br />
Specify the workflow to be used by this content item.<br />
1. To select a workflow, click Select Workflow.<br />
a. Select a workflow and then click OK.<br />
2. Enter dates and times to execute any date or time specific workflow actions.<br />
a. Click to select a date.<br />
b. Click to select a time.<br />
Publish Date<br />
Select the date and time to execute a publish action in a workflow stage.<br />
Expiry Date<br />
Select the date and time to execute an expire action in a workflow.<br />
General dates<br />
These dates are executed when using custom actions to perform scheduled tasks not based on<br />
published or expired dates.<br />
Note: Selecting a publish or expire date does not cause the item to be published or expired. The<br />
selected workflow must include a publish or expire action for this to happen. The publish and expire<br />
dates and times do not represent the time the content is published or expired. They represent the time<br />
the publish or expire action can be executed which may occur before the content is moved to either<br />
the published or expired stage of the workflow cycle.<br />
If no date or time is selected then it will default to the date the content was created which allows the<br />
publish and expire actions to be executed immediately when the content is moved to the published or<br />
expired stage of the workflow cycle.<br />
The date and time selected here are based on the timezone of the server you are accessing, not the<br />
timezone of the computer you are using.<br />
3. To select additional users to those already specified as having access to the rendered item, click Select<br />
Additional Viewers.<br />
a. To add users or groups, click Add.<br />
v Select either Users or Groups.<br />
v Enter text to search for in the Search field and then click Search. (Leave the Search field blank<br />
to display all users or groups.)<br />
v Select the required users or groups and then click OK.<br />
b. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
Granting content item access:<br />
Specify the access control settings for the content item to determine which users have access to the<br />
content item and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
256 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Specifying the location of an item:<br />
When you first save a content item, you are required to specify the location of the item if the location has<br />
not been defined in the authoring template.<br />
Click Save and select a site area to store the content item under:<br />
1. If the selected authoring template allows only a single site area to be selected, or if the user only has<br />
access to a single site area, the content item is automatically saved.<br />
2. If the selected authoring template restricts the site areas that a user can select, a table of available site<br />
areas are displayed. Select the site areas you would like to save the content item under. You then<br />
select how to add the content item within the site area if a site area has children:<br />
v Select First child to save the content item as the first listed content item within a site area. Then<br />
click OK.<br />
v Select Last child to save the content item as the last listed content item within a site area. Then<br />
click OK.<br />
3. If the selected authoring template does not restrict which site areas can be selected but allows<br />
multiple site areas to be selected:<br />
v Select First child to save the content item as the first listed content item within a site area. Then<br />
click OK.<br />
v Select Last child to save the content item as the last listed content item within a site area. Then<br />
click OK.<br />
v Select Manage multiple selections to select multiple site areas. To choose a site area to save the<br />
content item under, select a site area and then click Move to top. The content item is saved under<br />
the first site area in the list and then linked to the other site areas.<br />
4. If the selected authoring template only allows a single site area to be selected, you select the site area<br />
you would like to store the content item under. You then select how to add the content item within<br />
the site area if the site area has children:<br />
v Select First child to save the content item as the first listed content item within a site area. Then<br />
click OK.<br />
Building a web content system 257
v Select Last child to save the content item as the last listed content item within a site area. Then<br />
click OK.<br />
v Select Before specified child to save the content item before a selected child item. A further<br />
selection dialog opens if this option is selected. Select a child item and then click OK.<br />
v Select After specified child to save the content item after a selected child item. A further selection<br />
dialog opens if this option is selected. Select a child item and then click OK.<br />
Creating components<br />
You create components to store a single element that is reused in multiple locations in your website.<br />
1. To create a component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management.<br />
2. Click New > Component.<br />
3. Click the required component type.<br />
The following sections are common to all component types:<br />
Related concepts:<br />
“Using elements” on page 293<br />
Each content item you create contains at least one element type. The elements stored in a content item are<br />
determined by the authoring template selected when you created the content item. Depending on the<br />
authoring template you select, and your level of access, you may also be able to manage the elements in<br />
a content item.<br />
Component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
258 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
Building a web content system 259
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating a presentation template<br />
You use a presentation template define the layout of elements displayed on a web page, and to define the<br />
default properties of a web page such as the background and default font of a web page.<br />
To create a presentation template, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Presentation Template.<br />
Related concepts:<br />
“Presentation templates” on page 470<br />
Presentation templates determine the structure of each web page in your site and which elements and<br />
components are displayed on each page.<br />
Enter presentation template identification details:<br />
Specify identification information for the presentation template, including the name, title and description<br />
of the presentation template.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
260 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
een configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the presentation template:<br />
When creating a presentation template you can specify the location of the presentation template.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Enter the HTML for the presentation template:<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
This is an example of a possible layout of a presentation template. Although it is recommended that<br />
HTML elements (such as tables) be used to specify the exact layout of a presentation template, you do<br />
not have to use them. You can lay out your page in any way you want.<br />
Once the layout of a page is defined, all you need to do is reference different components into the<br />
different sections of your HTML table. (You can reference more that one component within a single table<br />
cell.)<br />
You can also enter text and HTML tags directly into a presentation template. This is useful if you have an<br />
element that needs to appear on all pages using a common presentation template. However, if that<br />
element is used on other presentation templates, it would be more efficient to save it as a component.<br />
Example<br />
This is an example of the HTML you could enter in a presentation template to set the layout of a<br />
presentation template.<br />
Building a web content system 261
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Text and <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags are then added to the different table cells to create the finished<br />
web page.<br />
Enabling Connect tags<br />
Connect tags are advanced <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags that can be used to retrieve data from external<br />
sources and apply custom caching. Process connect tags must be selected in a presentation template form<br />
for connect tags to be processed.<br />
262 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Define presentation template properties:<br />
Specify properties for the presentation template, including the list of authors and owners associated with<br />
the presentation template.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Define the presentation template access settings:<br />
Specify the access control settings for the presentation template to determine which users have access to<br />
the presentation template and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
Building a web content system 263
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating a taxonomy<br />
you need to create a taxonomy to store a set of categories.<br />
To create a taxonomy, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click New ><br />
Taxonomy.<br />
Taxonomy identification:<br />
Specify identification information for the taxonomy, including the name, title and description of the<br />
taxonomy.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the taxonomy:<br />
When creating a taxonomy you can specify the location of the taxonomy.<br />
264 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Taxonomy properties:<br />
Specify properties for the taxonomy, including the list of authors and owners associated with the<br />
taxonomy.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting taxonomy access:<br />
Specify the access control settings for the taxonomy to determine which users have access to the<br />
taxonomy and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
Building a web content system 265
7. Then click OK.<br />
Creating a category for a taxonomy<br />
You create categories when developing a taxonomy.<br />
Note: At least one taxonomy must exist before creating a category.<br />
To create a category, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click New ><br />
Category.<br />
Category identification:<br />
Specify identification information for the category, including the name, title and description of the<br />
category.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the category:<br />
When creating a category you can specify the location of the category.<br />
Click Select Location to save the item under a different location than the default location.<br />
266 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Category properties:<br />
Specify properties for the category, including the list of authors and owners associated with the category.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting category access:<br />
Specify the access control settings for the category to determine which users have access to the category<br />
and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Building a web content system 267
Creating a project<br />
You use a project to manage changes to a set of items.<br />
To create a project, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click New ><br />
Project.<br />
Related concepts:<br />
“Working with projects” on page 487<br />
Projects allow you to change a set of items and ensure that they are published together at the same time.<br />
Project identification:<br />
Specify identification information for the project, including the name, title and description of the project.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Working with items in a project:<br />
There are a set of tools availble in the project form to allow you to manage the items in a project.<br />
268 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Working with items in a project<br />
To add an item to a project, you can either:<br />
v open an item in read mode and click Add to project.<br />
v open an item in edit mode and click Add to project and then save the item. If the item is closed before<br />
saving, the item is not added to the project.<br />
v select items in a view and click More actions > Add to project.<br />
v open a project and click the Add to project button and then select an item to add to the project.<br />
v open a project and click New to create a draft item in the project.<br />
Note: The maximum number of items that can be used in a single project is 500.<br />
Note: In order to add an item to a project, you must have editor access to that item.<br />
When you add an item to a project:<br />
v You can also select items that are referenced by the item you are adding to the project.<br />
v Non-workflowed item types are saved as a draft.<br />
v Workflowed items are added to a project in the first workflow stage of their workflow.<br />
Once added to a project, you work with your items in the same way as any other item by selecting an<br />
item in the project and clicking Edit:<br />
v Non-workflowed item types are saved as drafts until you are ready to publish them by clicking<br />
Approve.<br />
v Workflowed items are processed through a full workflow cycle until reaching a pending state.<br />
v Draft items in a project are displayed alongside other items in your item views, but are displayed with<br />
a status of draft. If you have created a draft of a previously published item, both the draft and<br />
published versions of your item will appear in your item views.<br />
v When using selection dialogs, draft items from your current project appear alongside currently<br />
published items allowing you to select and link to both current items and draft project items.<br />
Workflow item types:<br />
Workflows, workflow stages and workflow actions cannot be added to projects.<br />
Previewing items in a project<br />
While you are working on a project, you can preview the draft items in the project as if they were<br />
published together on the live site.<br />
Deleting items in a project<br />
Remove From Project<br />
When you select an item in a project and click Remove From Project, the draft item is removed<br />
from the project but is still visible in the Library Explorer.<br />
Delete When you select an item in a project and click Delete, the draft is removed from the project and<br />
also deleted.<br />
Mark for deletion<br />
When an item is marked for deletion, the item is deleted when the project is published.<br />
You can mark items for deletion in a project by:<br />
1. adding the item to a project<br />
2. opening a draft project item in read mode and clicking Mark for deletion.<br />
Building a web content system 269
Project status<br />
When an item is marked for deletion, other buttons in the edit view of the item are disabled. To<br />
cancel a deletion, click Cancel deletion.<br />
Note: Hierarchical items such as site areas and taxonomies cannot be marked for deletion.<br />
When working with a project, the project progresses through the following states:<br />
Active A project which has draft items in it is considered "active". These items can be individually<br />
approved until they reach a state of "pending".<br />
Syndicating<br />
If "All items" or "Live and project" syndication has been enabled for the library that the project is<br />
stored in, a status of "Syndicating" is displayed until all items on both the syndicator and<br />
subscriber have reached a state of pending.<br />
Pending<br />
A project which contains only items in a "pending" state is itself considered "pending". If the<br />
project publish option is set to automatic this state is skipped. When the project is published<br />
manually or when the publish date is reached, the project moves to the "publishing" state.<br />
Publishing<br />
This is the state where all items in the project move from pending to published.<br />
Failed Indicates that one or more project items failed to publish.<br />
Published<br />
Once all items are published the project achieves a state of "published".<br />
Publishing a project<br />
There are three publishing methods used by projects:<br />
Date When Date is selected, all items are published as soon as all the items in the project reach a state<br />
of "pending" and the publish date selected in the project is reached. You can also click Publish in<br />
the project form before the date being reached once all items in the project reach a state of<br />
"pending".<br />
Manual<br />
When Manual is selected all items remain in a state of "pending" until the project is manually<br />
published by clicking Publish in the project form. The Publish button is not activated until all<br />
items in the project reach a state of "pending". Only users with editor access or higher to a project<br />
can publish a project.<br />
Automatic<br />
When Automatic is selected all items are published as soon as all the items in the project reach a<br />
state of "pending".<br />
Once the project is published, you can continue to review the status and version history of the items in<br />
the project by opening the project form.<br />
Access controls<br />
The access controls on a project do not affect the access controls on the items in a project. For example, a<br />
user that has editor access to a project but only read access to an item that is included in the project is<br />
not able to edit that item.<br />
270 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Syndicating a project<br />
Projects are designed to be used only on a syndicator server. Although projects will be syndicated with<br />
other items in a library that is being syndicated, you cannot use the subscriber copy of the project to<br />
update or publish your project. When a project is syndicated, the publish method on the subscriber is<br />
automatically changed to "deferred syndication", and the following actions are disabled on the subscriber:<br />
v Publish project<br />
v Add to project<br />
v Remove from project<br />
v Mark for deletion<br />
v Cancel deletion<br />
This means that the project on the subscriber cannot be updated or published unless it receives updates<br />
from the syndicator.<br />
Disabling a workflow in a project<br />
A workflow can be configured so that it is disabled when an item using that workflow is added to a<br />
project.<br />
v Any items using the disabled workflow have a status of draft when added to a project, but no longer<br />
require to pass through a workflow before being published.<br />
v The workflow stage the item is returned to when the project is published is also defined in the<br />
workflow.<br />
v Any actions set to run on entering the stage that the item is returned to are not run.<br />
v An item has a status of "published" when the project is published regardless of the workflow stage it is<br />
returned to, even if the workflow stage does not use a publish action or if it precedes or follows a<br />
workflow stage that contains a publish action.<br />
Project properties:<br />
Specify properties for the project, including the list of authors and owners associated with the project.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting project access:<br />
Specify the access control settings for the project to determine which users have access to the project and<br />
their level of access. These settings do not control access to the items referenced in the project.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
Building a web content system 271
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating a publish action<br />
A publish action changes the status of an item from "draft" to "published".<br />
To create a publish action, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click<br />
New > Workflow Actions > Publish Action.<br />
Related concepts:<br />
“Working with workflows” on page 482<br />
You use workflows to control the access to, verification and eventual approval of items. Only if an item is<br />
approved at all stages up to a published stage can it be viewed on your website.<br />
Defining identification details for the publish action:<br />
Specify identification information for the publish action, including the name, title and description of the<br />
publish action.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
272 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the publish action:<br />
When creating a publish action you can specify the location of the publish action.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Define additonal publish action properties:<br />
Specify properties for the publish action, including the list of authors and owners associated with the<br />
publish action.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining publish action access settings:<br />
Specify the access control settings for the publish action to determine which users have access to the<br />
publish action and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
Building a web content system 273
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating an expire action<br />
An expire action changes the status of an item from "published" to "expired".<br />
To create an expire action, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click<br />
New > Workflow Actions > Expire Action.<br />
Related concepts:<br />
“Working with workflows” on page 482<br />
You use workflows to control the access to, verification and eventual approval of items. Only if an item is<br />
approved at all stages up to a published stage can it be viewed on your website.<br />
Defining identification details for the expire action:<br />
Specify identification information for the expire action, including the name, title and description of the<br />
expire action.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
274 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the expire action:<br />
When creating a expire action you can specify the location of the expire action.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Define additional expire action properties:<br />
Specify properties for the expire action, including the list of authors and owners associated with the<br />
expire action.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining expire action access settings:<br />
Specify the access control settings for the expire action to determine which users have access to the expire<br />
action and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
Building a web content system 275
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating an e-mail action to notify users, groups, or both<br />
An email action sends an email to a set of users or groups.<br />
Email settings:<br />
To be able to send a user an email notification during a workflow:<br />
v Ensure that you have configured the WCM WCMConfigService service to enable email and specify your<br />
SMTP server.<br />
v Ensure that the user has a valid email address defined in their <strong>Web</strong>Sphere Portal user profile.<br />
To create an email action, go to Applications > <strong>Content</strong> > <strong>Web</strong> <strong>Content</strong> Management and then click<br />
New > Workflow Actions > Email Action.<br />
Related concepts:<br />
“Working with workflows” on page 482<br />
You use workflows to control the access to, verification and eventual approval of items. Only if an item is<br />
approved at all stages up to a published stage can it be viewed on your website.<br />
Related tasks:<br />
“Enabling email” on page 78<br />
To use the email workflow action you must configure <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to use your SMTP server.<br />
Defining identification details for the e-mail action:<br />
Specify identification information for the e-mail action, including the name, title and description of the<br />
e-mail action.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
276 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the e-mail action:<br />
When creating a e-mail action you can specify the location of the e-mail action.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Creating an email action:<br />
Define the action properties of the email action.<br />
1. Select the types of users to send emails to. You can select:<br />
v Users who have been assigned approver access in the workflow stage the email action is run on<br />
v The authors and owners of the workflowed item<br />
v The authors and owners of items that reference the workflowed item<br />
2. Click Select Other Recipients to select additional email recipients.<br />
a. To add users or groups, click Add.<br />
v Select either Users or Groups.<br />
Building a web content system 277
v Enter text to search for in the Search field and then click Search. (Leave the Search field blank to<br />
display all users or groups.)<br />
v Select the required users or groups and then click OK.<br />
b. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
3. Enter text to include in the email in addition to the automatically generated message.<br />
Note:<br />
v The language of the automatically generated message is determined by the language set in the<br />
<strong>Web</strong>Sphere Application Server administration console. To change the language, go to<br />
Resources>Resource environment>Resource environment providers > WP LocalizerService ><br />
Custom properties and change the locale.default.language property to the appropriate language<br />
code.<br />
v To modify the URL displayed in the email message, modify the WCM WCMConfigService service and<br />
specify the following property:<br />
– Property name: wcm.authoringui.url<br />
– Value: http://${WCM_HOST}:${WCM_PORT}/${WCM_WPS_CONTEXT_ROOT}/<br />
${WCM_WPS_PERSONALIZED_HOME}/wcmAuthoring<br />
4. Select the Date Type to use to trigger the email action.<br />
Selected date<br />
This action is run once the date and time you have specified in step 5 is reached.<br />
Live date<br />
This action is run once the publish date specified in an item, plus any offset, is reached.<br />
Expiry Date<br />
This action is run once the expiry date specified in an item, plus any offset, is reached.<br />
General dates<br />
This action is run once either the general date one or two specified in an item, plus any offset,<br />
is reached.<br />
Date entered stage<br />
This action is run on the date the item entered the current stage, plus any offset, is reached.<br />
Note: If you select a date type that requires a date to be set by a user, and no date has been set by a<br />
user, then the action is not run regardless of whether an offset has been selected or not.<br />
5. If Selected date is selected as the date type:<br />
a. Click to select a date.<br />
b. Click to enter a time. Only the integers "0123456789" can be used when entering times.<br />
6. If you select one of the other options, you can choose to use a date offset which will run the email<br />
action based on a period of time after the selected date type. For example, if you select the date type<br />
of "Live date" and define an offset of one month, the email action is run exactly one month after the<br />
item reached the live date and time.<br />
a. Click Enable Offset.<br />
b. Enter the number of months, days, hours, or minutes to offset by.<br />
c. Select either "after specified date" or "before specified date".<br />
d. If you select either "Months" or "Days" you can also specify the time of day to run the action by<br />
selecting Time to run action after offset has been reached. For example, if you select one month<br />
plus 9 am, then the action will run at 9 am, one month after the selected date type is reached.<br />
278 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
7. In some circumstances, the date specified in the scheduled action may have already been reached<br />
when an item enters a stage. In this case, by default the action is automatically run as soon the item<br />
reaches the current stage. You can choose to not run the action if the date has already been reached by<br />
selecting Do not run the action if date has already been reached.<br />
Define additional e-mail action properties:<br />
Specify properties for the e-mail action, including the list of authors and owners associated with the<br />
e-mail action.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining e-mail action access settings:<br />
Specify the access control settings for the e-mail action to determine which users have access to the e-mail<br />
action and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Building a web content system 279
Creating a custom action<br />
A custom action is used to run a custom workflow action based on a Java class you have previously<br />
created and added to your system.<br />
Before creating a custom workflow action, you must have already created a custom workflow class.<br />
To create a custom action, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click<br />
New > Workflow Actions > Custom Action.<br />
Related concepts:<br />
“Working with workflows” on page 482<br />
You use workflows to control the access to, verification and eventual approval of items. Only if an item is<br />
approved at all stages up to a published stage can it be viewed on your website.<br />
Defining identification details for the custom action:<br />
Specify identification information for the custom action, including the name, title and description of the<br />
custom action.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the custom action:<br />
280 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
When creating a custom action you can specify the location of the custom action.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining custom action properties:<br />
Define the custom action properties by selecting a custom workflow plug-in and defining related<br />
properties.<br />
1. Select the action to be run by this workflow action.<br />
2. Select the Date Type to use to trigger the custom action.<br />
Selected date<br />
This action is run once the date and time you have specified in step 3 is reached.<br />
Live date<br />
This action is run once the publish date specified in an item, plus any offset, is reached.<br />
Expiry Date<br />
This action is run once the expiry date specified in an item, plus any offset, is reached.<br />
General dates<br />
This action is run once either the general date one or two specified in an item, plus any offset,<br />
is reached.<br />
Date entered stage<br />
This action is run on the date the item entered the current stage, plus any offset, is reached.<br />
Custom Action Date<br />
This action is run once the date generated by the custom workflow class itself, plus any offset,<br />
is reached.<br />
Note: If you select a date type that requires a date to be set by a user, and no date has been set by a<br />
user, then the action is not run regardless of whether an offset has been selected or not.<br />
3. If Selected date is selected as the date type:<br />
a. Click to select a date.<br />
b. Click to enter a time. Only the integers "0123456789" can be used when entering times.<br />
4. If you select one of the other options, you can choose to use a date offset which will run the custom<br />
action based on a period of time after the selected date type. For example, if you select the date type<br />
of "Live date" and define an offset of one month, the custom action is run exactly one month after the<br />
item reached the live date and time.<br />
a. Click Enable Offset.<br />
b. Enter the number of months, days, hours, or minutes to offset by.<br />
c. Select either "after specified date" or "before specified date".<br />
d. If you select either "Months" or "Days" you can also specify the time of day to run the action by<br />
selecting Time to run action after offset has been reached. For example, if you select one month<br />
plus 9 am, then the action will run at 9 am, one month after the selected date type is reached.<br />
Building a web content system 281
5. In some circumstances, the date specified in the scheduled action may have already been reached<br />
when an item enters a stage. In this case, by default the action is automatically run as soon the item<br />
reaches the current stage. You can choose to not run the action if the date has already been reached by<br />
selecting Do not run the action if date has already been reached.<br />
Define additional custom action properties:<br />
Specify properties for the custom action, including the list of authors and owners associated with the<br />
custom action.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining custom action access settings:<br />
Specify the access control settings for the custom action to determine which users have access to the<br />
custom action and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating a version action<br />
A version action causes a new version of an item to be created when run.<br />
282 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
To create a version action, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click<br />
New > Workflow Actions > Version Action.<br />
Related concepts:<br />
“Working with workflows” on page 482<br />
You use workflows to control the access to, verification and eventual approval of items. Only if an item is<br />
approved at all stages up to a published stage can it be viewed on your website.<br />
Defining identification details for the version action:<br />
Specify identification information for the version action, including the name, title and description of the<br />
version action.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the version action:<br />
When creating a version action you can specify the location of the version action.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
Building a web content system 283
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining version action properties:<br />
Specify properties for the version action, including the list of authors and owners associated with the<br />
version action.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining version action access settings:<br />
Specify the access control settings for the version action to determine which users have access to the<br />
version action and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating an action to move an item in the workflow as a specified time<br />
A scheduled move action moves an item to the next workflow stage at a specified date and time.<br />
284 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
To create a scheduled move action, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Workflow Actions > Scheduled Move Action.<br />
Related concepts:<br />
“Working with workflows” on page 482<br />
You use workflows to control the access to, verification and eventual approval of items. Only if an item is<br />
approved at all stages up to a published stage can it be viewed on your website.<br />
Defining identification details for the scheduled move action:<br />
Specify identification information for the scheduled move action, including the name, title and<br />
description of the scheduled move action.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the scheduled move action:<br />
When creating a scheduled move action you can specify the location of the scheduled move action.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
Building a web content system 285
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Define scheduled move action properties:<br />
Define the action properties of the scheduled move action.<br />
1. Select the Date Type to use to trigger the scheduled move.<br />
Selected date<br />
This action is run once the date and time you have specified in step 2 is reached.<br />
Live date<br />
This action is run once the publish date specified in an item, plus any offset, is reached.<br />
Expiry Date<br />
This action is run once the expiry date specified in an item, plus any offset, is reached.<br />
General dates<br />
This action is run once either the general date one or two specified in an item, plus any offset,<br />
is reached.<br />
Date entered stage<br />
This action is run on the date the item entered the current stage, plus any offset, is reached.<br />
Note: If you select a date type that requires a date to be set by a user, and no date has been set by a<br />
user, then the action is not run regardless of whether an offset has been selected or not.<br />
2. If Selected date is selected as the date type:<br />
a. Click to select a date.<br />
b. Click to enter a time. Only the integers "0123456789" can be used when entering times.<br />
3. If you select one of the other options, you can choose to use a date offset which will run the<br />
scheduled move based on a period of time after the selected date type. For example, if you select the<br />
date type of "Live date" and define an offset of one month, the scheduled move action is run exactly<br />
one month after the item reached the live date and time.<br />
a. Click Enable Offset.<br />
b. Enter the number of months, days, hours, or minutes to offset by.<br />
c. Select either "after specified date" or "before specified date".<br />
d. If you select either "Months" or "Days" you can also specify the time of day to run the action by<br />
selecting Time to run action after offset has been reached. For example, if you select one month<br />
plus 9 am, then the action will run at 9 am, one month after the selected date type is reached.<br />
4. In some circumstances, the date specified in the scheduled action may have already been reached<br />
when an item enters a stage. In this case, by default the action is automatically run as soon the item<br />
reaches the current stage. You can choose to not run the action if the date has already been reached by<br />
selecting Do not run the action if date has already been reached.<br />
The process of publishing and expiring items:<br />
When a scheduled move action also triggers a published or expired action, it does not mean that the item<br />
has become published or expired. A status of published or expired instead means that the process of<br />
publishing or expiring an item has begun. The actual time a published item appears on a website, or the<br />
time an expired item is removed from a website, also depends on:<br />
v how long it takes to syndicate updates to the delivery server.<br />
286 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v how long it takes for the current cache to expire.<br />
Define additional scheduled move action properties:<br />
Specify properties for the scheduled move action, including the list of authors and owners associated<br />
with the scheduled move action.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining scheduled move action access settings:<br />
Specify the access control settings for the scheduled move action to determine which users have access to<br />
the scheduled move action and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating a workflow stage<br />
A workflow stage is composed of a set of selected workflow actions.<br />
To create a workflow stage, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click<br />
New > Workflow Stage.<br />
Building a web content system 287
Related concepts:<br />
“Working with workflows” on page 482<br />
You use workflows to control the access to, verification and eventual approval of items. Only if an item is<br />
approved at all stages up to a published stage can it be viewed on your website.<br />
Defining identification details for the workflow stage:<br />
Specify identification information for the workflow stage, including the name, title and description of the<br />
workflow stage.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the workflow stage:<br />
When creating a workflow stage you can specify the location of the workflow stage.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
288 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining workflow stage properties:<br />
A workflow stage is composed of a set of selected workflow actions.<br />
1. To select a workflow action to run on entering or exiting a workflow stage, click Select Actions.<br />
a. To add workflow actions, click Add.<br />
v Select the required workflow actions from the index and then click OK.<br />
v Only email actions can be selected to run on exiting a workflow stage.<br />
b. To remove workflow actions, select the workflow actions you want to remove and then click<br />
Remove.<br />
c. Use the arrow buttons to specify the order in which the selected workflow actions are run.<br />
Note: In most cases, actions are run when entering a stage. For example, you add a scheduled<br />
move action to run on entering a stage so that it is enabled as soon as an item enters that stage.<br />
However, if you set a scheduled move action to run on leaving a stage, it will never run. The most<br />
common type of actions to run on leaving a stage are email actions, when you want to notify users<br />
that an item has left a workflow stage, or custom workflow actions that have been designed to run<br />
a task when an item leaves a stage.<br />
Note: Some actions need to be run in a specific order. For example:<br />
v A scheduled move action must always be the final action in a workflow stage, because any<br />
actions scheduled after a scheduled move action will not be run.<br />
v You cannot run a version action before a publish action because you cannot save versions of<br />
draft items.<br />
v If using a custom action, you may want to run the custom action before executing an email<br />
action so that the draft content item is in a state ready to be reviewed by an approver.<br />
2. Select whether Joint approval is enabled. Joint approval requires every user, and at least one user<br />
from every group, granted "approval access" to approve the workflow stage.<br />
3. Select whether to require a comment to be entered when approving a workflow stage.<br />
4. Select Enable Previous Stage Button For Approvers to allow approvers to move items back to the<br />
previous stage. <strong>Manager</strong>s and administrators always have access to this button.<br />
5. To select which users have access to an item in the current workflow stage:<br />
a. Click either:<br />
v Grant User Access.<br />
v Grant Contributor Access.<br />
v Grant Editor Access.<br />
v Grant <strong>Manager</strong> Access.<br />
v Grant Approve Access.<br />
b. To add users or groups, click Add.<br />
v Select either Users or Groups.<br />
v Enter text to search for in the Search field and then click Search. (Leave the Search field blank to<br />
display all users or groups.)<br />
v Select the required users or groups and then click OK.<br />
c. You can also choose to automatically inherit access based on the library access assigned to each<br />
user and group by selecting "Inheritance". This option is selected by default.<br />
d. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
Building a web content system 289
e. Then click OK.<br />
Define additional workflow stage properties:<br />
Specify properties for the workflow stage, including the list of authors and owners associated with the<br />
workflow stage.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining workflow stage access settings:<br />
Specify the access control settings for the workflow stage to determine which users have access to the<br />
workflow stage and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating a workflow<br />
You select the workflow stages to comprise a workflow in a workflow form.<br />
To create a workflow, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click New ><br />
Workflow.<br />
290 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related concepts:<br />
“Working with workflows” on page 482<br />
You use workflows to control the access to, verification and eventual approval of items. Only if an item is<br />
approved at all stages up to a published stage can it be viewed on your website.<br />
Defining identification details for the workflow:<br />
Specify identification information for the workflow, including the name, title and description of the<br />
workflow.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the workflow:<br />
When creating a workflow you can specify the location of the workflow.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
Building a web content system 291
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Define the workflow:<br />
You define a workflow by selecting a set of workflow actions and defining related properties.<br />
1. Click Select Workflow Stages to select the workflow stages to comprise this workflow.<br />
2. Click Select Reject Stage to select a stage to move an item to when rejected.<br />
3. To require a comment to be entered when approving an item, select Enter Comment on Approval.<br />
4. Select whether to allow multiple drafts of an item to be created. If not selected, only a single draft of<br />
an item can be created at a time. Multiple drafts are enabled by default.<br />
Remember: If the first stage of your workflow includes a publish action, no draft items can be<br />
created regardless of what is selected here.<br />
5. Select Disable workflow in projects when you do not want the workflow to be used when an item is<br />
added to a project. If selected, any items using this workflow have a status of draft when added to a<br />
project, but are not staged.<br />
a. You must also select the workflow stage that the item is returned to when the project is published.<br />
Important: An item has a status of "published" when the project is published regardless of the<br />
workflow stage selected here, even if the selected workflow stage does not use a publish action or<br />
if the selected workflow stage precedes or follows a workflow stage that contains a publish action.<br />
Define additional workflow properties:<br />
Specify properties for the workflow, including the list of authors and owners associated with the<br />
workflow.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining workflow access settings:<br />
Specify the access control settings for the workflow to determine which users have access to the<br />
workflow and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
292 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Using elements<br />
Each content item you create contains at least one element type. The elements stored in a content item are<br />
determined by the authoring template selected when you created the content item. Depending on the<br />
authoring template you select, and your level of access, you may also be able to manage the elements in<br />
a content item.<br />
Related tasks:<br />
“Add elements to the site area” on page 235<br />
You add elements to site areas, content items, and authoring templates to store web content specific to<br />
those items.<br />
“Adding elements to a content item” on page 254<br />
You add elements to site areas, content items, and authoring templates to store web content specific to<br />
those items.<br />
“Adding elements to the content form” on page 242<br />
You add elements to site areas, content items, and authoring templates to store web content specific to<br />
those items.<br />
“Creating components” on page 258<br />
You create components to store a single element that is reused in multiple locations in your website.<br />
Using an authoring tools element<br />
The authoring tool element is used to add authoring portlet functions to web pages. When creating an<br />
authoring tool element, you need to define the layout of the authoring tool and any required actions, and<br />
select parameters for each action layout as required.<br />
Related concepts:<br />
“Authoring tools element” on page 222<br />
The authoring tool element is used to add authoring portlet functions to web pages.<br />
Creating an authoring tools component:<br />
You can only use an authoring tools element by creating an authoring tools component. You cannot add<br />
an authoring tools element to authoring templates, site areas, or content items.<br />
To create a authoring tools component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and<br />
then click New > Component > Authoring Tools.<br />
Authoring tools component identification:<br />
Building a web content system 293
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the authoring tools component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining authoring tools:<br />
You can format an authoring tool element's look and feel in different ways, including displaying<br />
authoring tools as text-based links, or image based links.<br />
294 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Authoring tool options<br />
v When creating a "new" action, you can either select an authoring template and site area to use with the<br />
new content item, use the same authoring template and site area as the current content item, user or<br />
portlet, or allow users to select an authoring template and site area.<br />
v When creating an "edit" action you select either to create a draft item, or allow users to edit the<br />
rendered content.<br />
Authoring tool designs<br />
You use placeholder tags to display authoring tools. You can only use these placeholder tags in authoring<br />
tool designs:<br />
v name<br />
v href<br />
v namelink<br />
Text-based authoring tool<br />
This example describes the element designs used to display a text-based authoring tool. Each design<br />
includes placeholder tags that are used to generate the text and link for each authoring tool.<br />
New action design:<br />
<br />
[Placeholder tag="name"]<br />
Read action design:<br />
<br />
[Placeholder tag="name"]<br />
Edit action design:<br />
<br />
[Placeholder tag="name"]<br />
Delete action design:<br />
<br />
[Placeholder tag="name"]<br />
Approve action design:<br />
<br />
[Placeholder tag="name"]<br />
Reject action design:<br />
<br />
[Placeholder tag="name"]<br />
Header:<br />
<br />
Separator:<br />
<br />
Footer:<br />
<br />
Image-based authoring tool<br />
This example describes the element designs used to display an image-based authoring tool. In this<br />
example, the [Placeholder tag="name"] tag is replaced with a component tag referencing an image<br />
component. Before creating these element designs, you must create an image component for each image<br />
used in the design. In this example, the following image components are required:<br />
v new-image<br />
Building a web content system 295
v read-image<br />
v edit-image<br />
v delete-image<br />
v approve-image<br />
v reject-image<br />
New action design:<br />
<br />
[component name="new-image" ]<br />
Read action design:<br />
<br />
[component name="read-image" ]<br />
Edit action design:<br />
<br />
[component name="edit-image" ]<br />
Delete action design:<br />
<br />
[component name="delete-image" ]<br />
Approve action design:<br />
<br />
[component name="approve-image" ]<br />
Reject action design:<br />
<br />
[component name="reject-image" ]<br />
Header:<br />
<br />
Separator:<br />
<br />
Footer:<br />
<br />
Using authoring tools components when launching a pop-up window<br />
When using a pop-up window to perform an authoring task, the pop-up window opens above the portal<br />
page and can be moved within the boundaries of the browser window while still showing the portal<br />
page underneath. After you complete the task triggered by the authoring tools element, the pop-up<br />
window closes automatically, and the portal page refreshes, updating the view in the JSR 286 web content<br />
viewer. You can cancel the authoring task by clicking the close icon in the pop-up window's title bar.<br />
When canceling the task, no web content information is saved, unless you explicitly save changes before<br />
manually closing the window.<br />
The default value of the format attribute for a placeholder tag is tag, so to use pop-up windows for<br />
inline editing, it is not necessary to specify a value for the format attribute. Either of the following design<br />
examples creates a URL that opens a pop-up window for authoring tasks:<br />
[Placeholder tag="namelink"]<br />
[Placeholder tag="namelink" format="tag"]<br />
<br />
[Placeholder tag="name"]<br />
<br />
<br />
[Placeholder tag="name"]<br />
<br />
296 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Note: It is not possible to launch the pop-up window in a separate browser window by adding<br />
target="_blank" to the HTML anchor tag in the design. If you want to use an authoring tool component<br />
with a pop-up dialog design within a static page, the HTML of your static page has to include the <strong>IBM</strong><br />
Dojo Toolkit. To include Dojo in your page you can add the following to the header section of your page:<br />
<br />
Using authoring tools components when navigating to another page<br />
Instead of performing tasks from authoring tools elements in a pop-up window above the current page,<br />
you can perform authoring tasks by navigating to a hidden portal page that contains a JSR 286 web<br />
content viewer containing the reserved authoring portlet. Clicking a link for an authoring tools element<br />
automatically redirects you to the other page, but after you complete the authoring task, you must<br />
manually navigate back to the original page. If the page with the reserved authoring portlet was opened<br />
in a new browser window or tab, you must close the window or tab and manually refresh the original<br />
page to see any changes.<br />
To redirect users to another page for authoring tasks, specify a value of url for the format attribute in the<br />
placeholder tag in the authoring tools element design. Either of the following design examples creates a<br />
URL that redirects users to another portal page for authoring tasks:<br />
[Placeholder tag="namelink" format="url"]<br />
<br />
[Placeholder tag="name"]<br />
<br />
<br />
[Placeholder tag="name"]<br />
<br />
Note: You can open the portal page in a separate browser window by adding target="_blank" to the<br />
HTML anchor tag in the design.<br />
Building a web content system 297
Related concepts:<br />
“Controlling the behavior of authoring tools components” on page 223<br />
Authoring tools components rendered in a JSR 286 web content viewer enable you to create, read, edit,<br />
delete, approve, or reject content items directly in the web content viewer, instead of requiring you to<br />
navigate to the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> authoring portlet to perform the same action. While the<br />
traditional web content viewer launches authoring actions in its portlet window, the JSR 286 <strong>Web</strong> content<br />
viewer either launches a pop-up window that opens from the current page or redirects the user to<br />
another portal page that contains the authoring portlet.<br />
Related tasks:<br />
“Configuring the reserved authoring portlet” on page 74<br />
The reserved authoring portlet is essential to the proper operation of web content pages and the JSR 286<br />
web content viewer, so it is important that the configuration of the reserved authoring portlet reflect<br />
similar settings for performing authoring tasks as the configuration of other instances of the <strong>IBM</strong> <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> authoring portlet.<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Authoring tools component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting authoring tools component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
298 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Referencing an authoring tool:<br />
An authoring tool component can be referenced within presentation templates, menu element designs,<br />
and navigator element designs. When added to menus and navigators, the edit and delete functions are<br />
applied to each item displayed in a menu or navigator.<br />
Referencing an authoring tool component in a presentation template<br />
An authoring tool element is referenced in a web content component tag:<br />
[Component name="authoringtoolname" ]<br />
Referencing an authoring tool element in a menu or navigator design<br />
When referencing an authoring tool component in menu or navigator designs you use a component tag<br />
with a parameter of compute="always". For example:<br />
[Component name="authoringtoolname" compute="always" ]<br />
Using a component reference element<br />
You use a component reference element to store a reference to a component. To create a component<br />
reference element, you can either add a component reference element to an authoring template, site area<br />
or content item, or create a component reference component.<br />
Creating a component reference component:<br />
You create a component reference component when you want to reuse a component reference in multiple<br />
places in your website.<br />
To create a component reference component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management<br />
and then click New > Component > Component Reference.<br />
Component reference component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
Building a web content system 299
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the component reference component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Select a component to reference:<br />
The component reference element is used to store a reference to a component. You can only select one<br />
component reference at a time.<br />
Click Select Component to select a component to reference.<br />
300 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Component reference component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting component reference component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a component reference element to an item:<br />
You add a component reference element to a site area or content item when you want the component<br />
reference to be used for a specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
Building a web content system 301
1. Open or create a site area or content item.<br />
2. Click Manage Elements.<br />
3. Select Component reference as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text provider<br />
and enter a key to look up a string from the selected text provider. The text provider displays a<br />
different display title for each language it has been configured for. The text entered in the Display<br />
Title field is only used if an appropriate display title is not available from the selected text provider,<br />
or if the text provider is not available.<br />
7. Click Add. The component reference element is added to your form.<br />
8. Go to the component reference element you created and click Select Component to select the<br />
component you want to reference.<br />
9. Save the item form.<br />
Adding a component reference element to a template:<br />
You add a component reference element to an authoring template when you want the component<br />
reference to be used by a set of content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements.<br />
3. Select Component reference as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click Add. The component reference element is added to your form.<br />
8. Go to the Default <strong>Content</strong> tab.<br />
9. Go to the component reference element you added and click Select Component to select a<br />
component, or do nothing if you want your content creators to select a component.<br />
10. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Click Add to restrict users to only be able to reference the components types you select.<br />
d. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
e. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
302 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
f. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
11. Save the authoring template.<br />
Using a date and time element<br />
You use a date and time element to store a date or time to be displayed on a web page. To create a date<br />
and time element, you can either add a date and time element to an authoring template, site area or<br />
content item, or create a date and time component.<br />
Creating a date and time component:<br />
You create a date and time component when you want to reuse a date and time component in multiple<br />
places in your website.<br />
To create a date and time component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and<br />
then click New > Component > Date and Time.<br />
Date and time component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
Building a web content system 303
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the date and time component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Specify a date and time:<br />
Use the date and time element to define the date and time to store in this component.<br />
1. Click to select a date.<br />
2. Click to enter a time. Only the integers "0123456789" can be used when entering times.<br />
Date and time component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining date and time component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
304 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a date and time element to an item:<br />
You add a date and time element to a site area or content item when you want the date and time element<br />
to be used for a specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements.<br />
3. Select Date and Time as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text provider<br />
and enter a key to look up a string from the selected text provider. The text provider displays a<br />
different display title for each language it has been configured for. The text entered in the Display<br />
Title field is only used if an appropriate display title is not available from the selected text provider,<br />
or if the text provider is not available.<br />
7. Click Add. The date and time element is added to your form.<br />
8. Go to the date and time element you created:<br />
a. Click to select a date.<br />
b. Click to enter a time. Only the integers "0123456789" can be used when entering times.<br />
Note: Only the integers "0123456789" can be used when entering times and dates.<br />
9. Save the item form.<br />
Adding a date and time element to a template:<br />
You add a date and time element to an authoring template when you want the date and time element to<br />
be used by a set of content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements.<br />
3. Select Date and Time as the element type.<br />
Building a web content system 305
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click Add. The date and time element is added to your form.<br />
8. Go to the Default <strong>Content</strong> tab.<br />
9. Go to the date and time element you added. Select a date and time, or do nothing if you want your<br />
content creators to select a date and time:<br />
a. Click to select a date.<br />
b. Click to enter a time. Only the integers "0123456789" can be used when entering times.<br />
10. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. You can select to display both the date and time selection fields, or just date or just time.<br />
d. You can restrict the range of dates and times that users can select in date and time fields by<br />
selecting a start and end date or time. You either select a specific date, or select the number of<br />
days, hours or minutes after the creation date to begin the range, or the number of days, hours<br />
or minutes after the start date to end the range.<br />
e. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
f. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
g. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
11. Save the authoring template.<br />
Using a file resource element<br />
You use a file resource element to store a file that can later be referenced on a web page. To create a file<br />
resource element, you can either add a file resource element to an authoring template, site area or content<br />
item, or create a file resource component.<br />
Creating a file resource component:<br />
You create a file resource component when you want to reuse a file resource in multiple places in your<br />
website.<br />
306 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
To create a file resource component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > File Resource.<br />
File resource component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the file resource component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Building a web content system 307
Select a file resource:<br />
Use the file resource element to select a file to store in this component.<br />
Click Choose File to select a file to store in the file resource component.<br />
File resource component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting file resource component access settings:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a file resource element to an item:<br />
308 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
You add a file resource element to a site area or content item when you want the file resource to be used<br />
for a specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements.<br />
3. Select File Resource as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click Add. The file resource element is added to your form.<br />
8. Go to the file resource element you created:<br />
9. Click Upload a file to select a file to store in the file resource component.<br />
10. Save the item form.<br />
Adding a file resource element to a template:<br />
You add a file resource element to an authoring template when you want the file resource to be used by<br />
a set of content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements.<br />
3. Select File Resource as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click Add. The file resource element is added to your form.<br />
8. Go to the file resource element you created:<br />
9. Click Upload a file to select a file to store in the file resource component, or do nothing if you want<br />
your content creators to select a file.<br />
10. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Specify the minimum and maximum byte values to restrict the size of files added to a file<br />
resource element. This can be used to prevent your content creators from uploading large files<br />
that may be too large to realistically store and access from a web page.<br />
Building a web content system 309
d. You can also restrict the mime type of files that can be added to file resource elements. You add<br />
multiple mime types separated by a space.<br />
e. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
f. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
g. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
11. Save the authoring template.<br />
Referencing a file resource:<br />
A file resource can be referenced within presentation templates and other element designs using either a<br />
component or element tag.<br />
Creating a link to a file resource<br />
To create a link to a file resource in a presentation template or element design to enable users to<br />
download the file reference, use the following tag structures.<br />
To create a link to a file resource component you use a component tag:<br />
Link Text<br />
To create a link to a file resource element you use an element tag. For example, to link to a file resource<br />
element in the current content item:<br />
Link Text<br />
Rendering a file resource on a page<br />
If your file resource is a file type that can be converted to HTML you can instead convert the file to<br />
HTML and render the converted HTML directly in your web content using the format="HTML"<br />
parameter in a component or element tag. For example:<br />
[component name="FileResourceName" format="HTML"]<br />
[element type="content" content="current" key="FileResourceName" format="HTML"]<br />
Examples of supported file types include:<br />
v word-processing documents (*.doc, *.odt)<br />
v spreadsheets (*.xls) *<br />
v HTML files (*.htm, *.html)<br />
v Text files (*.txt)<br />
Other file types may also work but you need to test them first.<br />
Note: If you configure an authoring template to be a resource template, then the content items you create<br />
are resource content items. When a link to a resource content item is rendered, the file stored in the<br />
selected file resource element is rendered on the web page. In this case, you would not use an element<br />
tag. Instead, the file resource is rendered either using a placeholder tag in a navigator or menu design, or<br />
by writing a link directly to the resource content itself.<br />
310 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Using an HTML element<br />
You use an HTML element to store a section of HTML. To create an HTML element, you can either add<br />
an HTML element to an authoring template, site area or content item, or create an HTML component.<br />
Creating an HTML component:<br />
You create an HTML component when you want to reuse a section of HTML in multiple places in your<br />
website. A copyright notice is an example of the HTML you could store in an HTML component.<br />
To create an HTML component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > HTML.<br />
HTML component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the HTML component:<br />
When creating a component you can specify the location of the component.<br />
Building a web content system 311
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Entering HTML:<br />
Use the HTML element to store some HTML.<br />
Any combination of web content tags can be used in HTML elements with the following exceptions:<br />
1. You cannot use single quotes around attribute values.<br />
v [Component name='example']<br />
v [Component name='example' start='link']<br />
v [Component name='example' start='']<br />
2. You cannot use double quotes inside attribute values.<br />
v [Component name="example" start="link"]<br />
v [Component name="example" start=""]<br />
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
HTML component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting HTML component access:<br />
312 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding an HTML element to an item:<br />
You add an HTML element to a site area or content item when you want a section of HTML to be used<br />
for a specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements.<br />
3. Select HTML as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The HTML element is added to your form.<br />
8. Go to the HTML element you created.<br />
9. Enter HTML in the HTML field.<br />
10. Save the item form.<br />
Adding an HTML element to a template:<br />
Building a web content system 313
You add an HTML element to an authoring template when you want the HTML element to be used by a<br />
set of content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements.<br />
3. Select HTML as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The HTML element is added to your form.<br />
8. Go to the Default <strong>Content</strong> tab.<br />
9. Go to the HTML element you added.<br />
10. Enter HTML in the HTML field, or do nothing if you want your content creators to enter the HTML.<br />
11. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Type the number of characters to use in Field Width to set the size of the displayed field. If you<br />
leave this blank, the default field size is used.<br />
d. Type a number into the maximum or minimum characters or words fields to set limits on the<br />
number of characters or words a user can enter in a field.<br />
e. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
f. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
g. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
12. Save the authoring template.<br />
Using an image element<br />
You use an image element to store an image file that can later be referenced on a web page. To create an<br />
image element, you can either add an image element to an authoring template, site area or content item,<br />
or create an image component.<br />
Creating an image component:<br />
You create an image component when you want to reuse an image in multiple places in your website.<br />
To create an image component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > Image.<br />
314 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Image component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the image component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Selecting an image:<br />
Building a web content system 315
You use the image element to upload an image.<br />
1. Click Upload a file to select a file to store in the image component.<br />
2. Define the image properties:<br />
Border<br />
Define the size of the border to appear around the image. (0 = no border)<br />
Width Set the width of the image (in pixels). Optional.<br />
Height<br />
Set the height of the image (in pixels). Optional.<br />
Alternate text<br />
Enter the name of the image to display when saving the image, or if the browser cannot<br />
display the image.<br />
HTML Tag Name<br />
Enter the name of the HTML tag to be used in JavaScript.<br />
Image component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting image component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
316 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding an image element to an item:<br />
You add an image element to a site area or content item when you want the image to be used for a<br />
specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements.<br />
3. Select Image as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text provider<br />
and enter a key to look up a string from the selected text provider. The text provider displays a<br />
different display title for each language it has been configured for. The text entered in the Display<br />
Title field is only used if an appropriate display title is not available from the selected text provider,<br />
or if the text provider is not available.<br />
7. Click Add. The image element is added to your form.<br />
8. Go to the image element you created:<br />
a. Click Upload a file to select a file to store in the image component.<br />
b. Define the image properties:<br />
Border<br />
Define the size of the border to appear around the image. (0 = no border)<br />
Width Set the width of the image (in pixels). Optional.<br />
Height<br />
Set the height of the image (in pixels). Optional.<br />
Alternate text<br />
Enter the name of the image to display when saving the image, or if the browser cannot<br />
display the image.<br />
HTML Tag Name<br />
Enter the name of the HTML tag to be used in JavaScript.<br />
9. Save the item form.<br />
Adding an image element to a template:<br />
You add an image element to an authoring template when you want the image to be used by a set of<br />
content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements.<br />
Building a web content system 317
3. Select Image as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The image element is added to your form.<br />
8. Go to the image element you created. Either select an image file, or do nothing if you want your<br />
content creators to select an image.<br />
a. Click Upload a file to select a file to store in the image component.<br />
b. Define the image properties:<br />
Border<br />
Define the size of the border to appear around the image. (0 = no border)<br />
Width Set the width of the image (in pixels). Optional.<br />
Height<br />
Set the height of the image (in pixels). Optional.<br />
Alternate text<br />
Enter the name of the image to display when saving the image, or if the browser cannot<br />
display the image.<br />
HTML Tag Name<br />
Enter the name of the HTML tag to be used in JavaScript.<br />
9. Click to open the display properties of each field in the element. This is where you define how<br />
the element is displayed on the content item form.<br />
a. To display the field as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Specify the minimum and maximum byte values to restrict the size of files added to an image<br />
element. This can be used to prevent your content creators from uploading large files that may be<br />
to large to realistically store and access from a web page.<br />
d. You can also restrict the mime type of files that can be added to image elements. You add<br />
multiple mime types separated by a space.<br />
e. Type the number of characters to use in Field Width to set the size of the displayed field. If you<br />
leave this blank, the default field size is used.<br />
f. Type a number into the maximum or minimum characters or words fields to set limits on the<br />
number of characters or words a user can enter in a field.<br />
g. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
h. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
i. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
318 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
10. Save the authoring template.<br />
Using a JSP element<br />
You use a JSP element to store a path to a JSP. When rendered within a presentation template or element<br />
design, a request to a JSP is generated and processed.<br />
Related concepts:<br />
“JSP elements” on page 453<br />
You use a JSP element to store a path to a JSP. When rendered within a presentation template or element<br />
design, a request to a JSP is generated and processed.<br />
Creating a JSP component:<br />
You create a JSP component when you want to reuse a section of JSP in multiple places in your website.<br />
To create a JSP component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click<br />
New > Component > JSP.<br />
JSP component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
Building a web content system 319
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the JSP component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Selecting a JSP file:<br />
You use the JSP element to select a JSP file to store in the component.<br />
1. Enter the path to the JSP file. The path must begin with a forward slash.<br />
For example:<br />
/path/jspfilename.jsp<br />
Storing JSP Files:<br />
JSP files can be located:<br />
v within the was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war directory of your<br />
server.<br />
The JSP page is also stored in the client war directory of the local rendering portlet or of the servlet<br />
or portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. For example, to render a JSP<br />
page on a local rendering portlet, you would also need to store a copy of the JSP file under<br />
was_profile_root/installedApps/node-name/PA_WCMLocalRendering.ear/ilwwcm-localrende.war<br />
v within any other web application running on portal. When referencing JSP files in another web<br />
application, use the following path: contextPath;jspPath<br />
For example: /wps/customapplication;/jsp/editor.jsp<br />
2. Enter an error message to display when an incorrect JSP path is entered. A Java exception stack trace<br />
is displayed if there is a syntax error.<br />
JSP component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
320 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting JSP component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a JSP element to an item:<br />
You add a JSP element to a site area or content item when you want a section of JSP to be used for a<br />
specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements .<br />
3. Select JSP as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text provider<br />
and enter a key to look up a string from the selected text provider. The text provider displays a<br />
different display title for each language it has been configured for. The text entered in the Display<br />
Title field is only used if an appropriate display title is not available from the selected text provider,<br />
or if the text provider is not available.<br />
7. Click OK. The JSP element is added to your form.<br />
Building a web content system 321
8. Go to the JSP element you created:<br />
a. Enter the path to the JSP file. The path must begin with a forward slash.<br />
For example:<br />
/path/jspfilename.jsp<br />
Storing JSP Files:<br />
JSP files can be located:<br />
v within the was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war directory of your<br />
server.<br />
The JSP page is also stored in the client war directory of the local rendering portlet or of the<br />
servlet or portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. For example, to<br />
render a JSP page on a local rendering portlet, you would also need to store a copy of the JSP<br />
file under was_profile_root/installedApps/node-name/PA_WCMLocalRendering.ear/ilwwcmlocalrende.war<br />
v within any other web application running on portal. When referencing JSP files in another web<br />
application, use the following path: contextPath;jspPath<br />
For example: /wps/customapplication;/jsp/editor.jsp<br />
b. Enter an error message to display when an incorrect JSP path is entered. A Java exception stack<br />
trace is displayed if there is syntax error.<br />
9. Save the item form.<br />
Adding a JSP element to a template:<br />
You add a JSP element to an authoring template when you want the JSP element to be used by a set of<br />
content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements .<br />
3. Select JSP as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The JSP element is added to your form.<br />
8. Go to the Default <strong>Content</strong> tab.<br />
9. Go to the JSP element you added. Either specify the path to the JSP file, or do nothing if you want<br />
your content creators to enter this information.<br />
a. Enter the path to a JSP file if required, or leave blank if you want your content creators to specify<br />
the JSP. The path must begin with a forward slash.<br />
For example:<br />
/path/jspfilename.jsp<br />
Storing JSP Files:<br />
JSP files can be located:<br />
v within the was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war directory of your<br />
server.<br />
322 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The JSP page is also stored in the client war directory of the local rendering portlet or of the<br />
servlet or portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. For example, to<br />
render a JSP page on a local rendering portlet, you would also need to store a copy of the JSP<br />
file under was_profile_root/installedApps/node-name/PA_WCMLocalRendering.ear/ilwwcmlocalrende.war<br />
v within any other web application running on portal. When referencing JSP files in another web<br />
application, use the following path: contextPath;jspPath<br />
For example: /wps/customapplication;/jsp/editor.jsp<br />
b. Enter an error message to display when an incorrect JSP path is entered. A Java exception stack<br />
trace is displayed if there is syntax error.<br />
10. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
d. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
e. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
11. Save the authoring template.<br />
Using a link element<br />
A link element stores a link to a web content item, or to external content such as a web page.<br />
Related concepts:<br />
“Link element” on page 446<br />
A link element stores a link to a web content item, or to external content such as a web page.<br />
Creating a link component:<br />
You create a link component when you want to reuse a link in multiple places in your website.<br />
To create a link component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click<br />
New > Component > Link.<br />
Link component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
Building a web content system 323
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the link component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Selecting a link:<br />
You use the link element to define the item or URL to link to.<br />
1. Either click Browse <strong>Content</strong> to select a content item, file resource component, image component or<br />
link component to link to, or enter a URL in the URL field. The inserted URL is rendered relative to<br />
the URL of the site area of the currently rendered content item. Internet protocols, such as "http://"<br />
should be added at the beginning of the inserted link if an absolute URL is intended to be rendered.<br />
2. Select a link display type:<br />
Text You select this to display the link as text.<br />
324 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Use name of linked item: You select this to use the title of the item being linked to as the<br />
link text.<br />
v Link text: Enter the text to use as the link text. To enter text you must unselect Use name<br />
of linked item.<br />
Image Component<br />
You select this to display the link as an image. Click Select Image to select an image<br />
component to use as the link image.<br />
3. Enter a description of the link by selecting either:<br />
Use description of linked item<br />
You select this to use the description of the item being linked to as the link description.<br />
Enter description<br />
You select this to enter the text to use as the link description. To enter a description you must<br />
unselect Use description of linked item.<br />
4. Select a link target:<br />
Name You select this to specify the name of the link target.<br />
New Window<br />
You select this to open the link in a new browser window.<br />
None Select this to specify no link target.<br />
Parent You select this to open the link in the parent frameset of the frame the link appears in,<br />
replacing the entire frameset.<br />
Self You select this to open the link in the current frame, replacing the content in that frame.<br />
Top You select this to open the link in the current browser window, replacing all frames.<br />
5. Enter additional attributes, such as style sheet classes or javascript. These are used as if entering an<br />
attribute in a "" tag. For example:<br />
v To create the link tag, you would enter<br />
class="classname" in the Additional attributes field.<br />
v To create the link tag, <br />
you would enter name="homepage" class="classname" in the Additional attributes field.<br />
Link component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting link component access:<br />
Building a web content system 325
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a link element to an item:<br />
You add a link element to a site area or content item when you want a link to be used for a specific site<br />
area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements .<br />
3. Select Link as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The link element is added to your form.<br />
8. Go to the link element you created.<br />
9. Either click Browse <strong>Content</strong> to select a content item, file resource component, image component or<br />
link component to link to, or enter a URL in the URL field. The inserted URL will be rendered<br />
relative to the URL of the site area of the currently rendered content item. Internet protocols, such as<br />
"http://" should be added at the beginning of the inserted link if an absolute URL is intended to be<br />
rendered.<br />
10. Select a link display type:<br />
326 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Text You select this to display the link as text.<br />
v Use name of linked item: You select this to use the title of the item being linked to as the<br />
link text.<br />
v Link text: Enter the text to use as the link text. To enter text you must unselect Use name<br />
of linked item.<br />
Image Component<br />
You select this to display the link as an image. Click Select Image to select an image<br />
component to use as the link image.<br />
11. Enter a description of the link by selecting either:<br />
Use description of linked item<br />
You select this to use the description of the item being linked to as the link description.<br />
Enter description<br />
You select this to enter the text to use as the link description. To enter a description you<br />
must unselect Use description of linked item.<br />
12. Select a link target:<br />
Name You select this to specify the name of the link target.<br />
New Window<br />
You select this to open the link in a new browser window.<br />
None Select this to specify no link target.<br />
Parent You select this to open the link in the parent frameset of the frame the link appears in,<br />
replacing the entire frameset.<br />
Self You select this to open the link in the current frame, replacing the content in that frame.<br />
Top You select this to open the link in the current browser window, replacing all frames.<br />
13. Enter additional attributes, such as style sheet classes or javascript. These are used as if entering an<br />
attribute in a "" tag. For example:<br />
v To create the link tag , you would enter<br />
class="classname" in the Additional attributes field.<br />
v To create the link tag , <br />
you would enter name="homepage" class="classname" in the Additional attributes field.<br />
14. Save the item form.<br />
Adding a link element to a template:<br />
You add a link element to an authoring template when you want the link element to be used by a set of<br />
content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements .<br />
3. Select Link as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The link element is added to your form.<br />
8. Go to the link element you created. You create a link, or leave the link element fields blank if you<br />
want your content creators to select a link.<br />
Building a web content system 327
9. Either click Browse <strong>Content</strong> to select a content item, file resource component, image component or<br />
link component to link to, or enter a URL in the URL field. The inserted URL is rendered relative to<br />
the URL of the site area of the currently rendered content item. Internet protocols, such as "http://"<br />
should be added at the beginning of the inserted link if an absolute URL is intended to be rendered.<br />
10. Select a link display type:<br />
Text You select this to display the link as text.<br />
v Use name of linked item: You select this to use the title of the item being linked to as the<br />
link text.<br />
v Link text: Enter the text to use as the link text. To enter text you must unselect Use name<br />
of linked item.<br />
Image Component<br />
You select this to display the link as an image. Click Select Image to select an image<br />
component to use as the link image.<br />
11. Enter a description of the link by selecting either:<br />
Use description of linked item<br />
You select this to use the description of the item being linked to as the link description.<br />
Enter description<br />
You select this to enter the text to use as the link description. To enter a description you<br />
must unselect Use description of linked item.<br />
12. Select a link target:<br />
Name You select this to specify the name of the link target.<br />
New Window<br />
You select this to open the link in a new browser window.<br />
None Select this to specify no link target.<br />
Parent You select this to open the link in the parent frameset of the frame the link appears in,<br />
replacing the entire frameset.<br />
Self You select this to open the link in the current frame, replacing the content in that frame.<br />
Top You select this to open the link in the current browser window, replacing all frames.<br />
13. Enter additional attributes, such as style sheet classes or javascript. These are used as if entering an<br />
attribute in a "" tag. For example:<br />
v To create the link tag , you would enter<br />
class="classname" in the Additional attributes field.<br />
v To create the link tag , <br />
you would enter name="homepage" class="classname" in the Additional attributes field.<br />
14. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Type the number of characters to use in Field Width to set the size of the displayed field. If you<br />
leave this blank, the default field size is used.<br />
d. Type a number into the maximum or minimum characters or words fields to set limits on the<br />
number of characters or words a user can enter in a field.<br />
328 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
e. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
f. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
g. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field will then only be used if an appropriate help text is not available from the<br />
selected text provider, or if the text provider is not available.<br />
15. Save the authoring template.<br />
Using a menu element<br />
To create a menu element you must specify the criteria to search content items with, and then create a<br />
layout for the metadata or content to be displayed in the menu element.<br />
Related concepts:<br />
“Menu element” on page 446<br />
A menu element displays metadata and content from content items that match the search criteria of the<br />
menu element. The search criteria of a menu element can include matching site areas, authoring<br />
templates, categories and keywords.<br />
Creating a menu component:<br />
You can use a menu element only by creating a menu component. You cannot add a menu element to<br />
authoring templates, site areas, or content items.<br />
To create a menu component, go to Applications > <strong>Content</strong> > <strong>Web</strong> <strong>Content</strong> Management, and then click<br />
New > Component > Menu.<br />
Menu component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
Building a web content system 329
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the menu component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining menu element search properties:<br />
Specify the search criteria to be used when generating the menu element. You can limit the search<br />
according to the properties of content items including authoring templates, site areas, categories, and<br />
keywords.<br />
Between different criteria, menu searches are "and" searches, but within each search criteria, menu<br />
searches are "or" searches. For example, a menu element that searches for two different categories and an<br />
authoring template will display content items profiled with at least one of each profile type. <strong>Content</strong> that<br />
matches only one profile type are not displayed.<br />
Menus will not display search results if you select a search criteria but do not enter any search<br />
parameters. For example, if the menu is configured to display results based on categories, but no<br />
categories are specified in the menu form, then no matches are displayed.<br />
1. Select the search criteria types you would like to use in this search query, and then enter the<br />
following details.<br />
2. To exclude the currently displayed content item if returned in the search results, select Exclude<br />
current content item from results.<br />
3. To search for content items that are based on specific authoring templates:<br />
a. Click Select Authoring Templates to search for content items that use the selected authoring<br />
templates.<br />
b. Use the following options to dynamically create search criteria:<br />
v To include authoring templates that are defined in a rendering portlet configuration in the<br />
search, select User-specified rendering portlet configuration.<br />
330 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v To include the authoring template used by the currently displayed content item, select Current<br />
authoring template.<br />
v Enter query string parameter to search for. For example, if you entered myquery in this field, a<br />
menu displayed on a page whose URL contained a search query myquery=library1/shoes would<br />
display content that used an authoring template called shoes from the library called library1. If<br />
no library is specified in the original URL, the default library specified in the WCM<br />
WCMConfigService service is used.<br />
v Select Merge selected authoring templates with included authoring templates to add<br />
authoring templates selected in the Further Options section to the selected authoring templates.<br />
v Select Replace selected authoring templates with included authoring templates to replace the<br />
selected authoring templates with authoring templates selected in the Further Options section. If<br />
no authoring templates are found using the criteria entered in the Further Options section, then<br />
the selected authoring templates are used.<br />
Note: Menus search for content that use a specific authoring template from any library. To restrict a<br />
search to items from a specific library, select only site areas that belong to that library in step 4.<br />
4. To search for content items that are located within specific site areas:<br />
a. To include all ancestors of the selected site areas in the search, select Include Ancestors.<br />
b. To include all descendants of the selected site areas in the search, select Include Descendants.<br />
c. Click Select Site Areas and to search for content items located within the selected site areas.<br />
d. Use the following options to dynamically create search criteria:<br />
v To include site areas that are defined in a rendering portlet configuration in the search, select<br />
User-specified rendering portlet configuration.<br />
v To include the site area the currently displayed content item is located under in the search,<br />
select Current content.<br />
v Select the site areas you would like restrict the search to. Only the selected site areas that also<br />
are found in the portlet-defined or content-defined site areas are used in the search.<br />
v Enter a query string parameter to search for. For example, if you entered myquery in this field, a<br />
menu displayed on a page whose URL contained a search query myquery=library1/shoes would<br />
display content located under a site area called shoes from the library called library1. If no library<br />
is specified in the original URL, the default library specified in the WCM WCMConfigService<br />
service is used.<br />
v Select Merge selected site areas with included site areas to add site areas selected in the<br />
Further Options section to the selected site areas.<br />
v Select Replace selected site areas with included site areas to replace the selected site areas with<br />
site areas selected in the Further Options section. If no site areas are found using the criteria<br />
entered in the Further Options section, then the selected site areas are used.<br />
5. To search for content items that are profiled using specific categories:<br />
a. To include all ancestors of the selected categories in the search, select Include Ancestors.<br />
b. To include all descendants of the selected categories in the search, select Include Descendants.<br />
c. To only return content items profiled with all selected categories, select Results must match All<br />
Categories.<br />
d. Click Select Category to search for content items that are profiled with the selected categories.<br />
e. Use the following options to dynamically create search criteria:<br />
v To include categories that are defined in a rendering portlet configuration in the search, select<br />
User-specified rendering portlet configuration.<br />
v To include the categories the currently displayed content item is profiled with in the search,<br />
select Current content.<br />
v To include the categories the current user is profiled with in the search, select Current user.<br />
Building a web content system 331
v Select the categories you would like restrict the search to. Only the selected categories that also<br />
are found in the portlet-defined, user-defined or content-defined categories are used in the<br />
search.<br />
v Enter a query string parameter to search for. For example, if you entered myquery in this field, a<br />
menu displayed on a page whose URL contained a search query myquery=library1/shoes would<br />
display content profiled with a category called shoes from the library called library1. If no library<br />
is specified in the original URL the library of the current content item is used, and if that cannot<br />
be resolved the default library specified in the WCM WCMConfigService service is used.<br />
Note: If a category exists in more than one taxonomy, only the first found category is used by<br />
the search query. You cannot specify a taxonomy name in the search query. Rename one of the<br />
categories to ensure that the search query uses the correct category.<br />
v Select Merge selected categories with included categories to add categories selected in the<br />
Further Options section to the selected categories.<br />
v Select Replace selected categories with included categories to replace the selected categories<br />
with categories selected in the Further Options section. If no categories are found using the<br />
criteria entered in the Further Options section, then the selected categories are used.<br />
Note: Menus will search for items profiled with categories from any library. To restrict a search to<br />
items from a specific library, select only site areas that belong to that library in step 4.<br />
6. To search for content items that are profiled using specific keywords, enter keywords to search for in<br />
the Matching <strong>Content</strong> Keywords field separated by commas. Keyword searches are case sensitive.<br />
a. Use the following options to dynamically create search criteria:<br />
v To include the keywords the currently displayed content item is profiled with in the search,<br />
select Current content.<br />
v To include the keywords the current user is profiled with in the search, select Current user.<br />
v Enter a query string parameter to search for. For example, if you entered myquery in this field, a<br />
menu displayed on a page whose URL contained a search query myquery=shoes would display<br />
content profiled with a keyword called shoes. No library is specified when using query strings<br />
with keywords.<br />
Note: Menus search for items profiled with keywords from any library. To restrict a search to items<br />
from a specific library, select only site areas that belong to that library in step 4.<br />
Defining menu element formatting options:<br />
Define how search results are displayed for the menu element. This includes defining the sort order for<br />
results, paging options for menu elements with multiple pages of results, and formatting options<br />
controlling how the menu is rendered.<br />
1. Specify how the search results displayed in the menu element are sorted.<br />
a. Select the sort order for the results.<br />
v Ascending: Sorts results in ascending order.<br />
v Descending: Sorts results in descending order.<br />
b. Select the content item fields on which you want to base the sort ordering. You can select a<br />
primary field and two additional fields to provide more fine-grained sorting of the results. The<br />
sort fields are applied in order, so that results are sorted first by the primary field, then by the<br />
secondary field, and finally by the tertiary field.<br />
2. Specify paging options for the menu element.<br />
a. Enter the number of items that are displayed in each menu page.<br />
b. Enter the number of the start page for displaying search results in the menu.<br />
c. Enter the maximum number of results pages to be included in the menu.<br />
332 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
d. Enter the number of results pages to read ahead when using a page navigation element. For<br />
example, if you enter 3, the page navigation element calculates results up to 3 pages ahead of the<br />
current page. Increasing this number improves the accuracy of the page navigation element.<br />
Lowering this number improves the performance of the page navigation element when rendered.<br />
Note: To display multiple menu pages, you need to use a page navigation element. This is referenced<br />
within the header or footer of the menu design specified below.<br />
Note: Changes to paging options are not visible to users until the session cache has expired, or a user<br />
starts a new session.<br />
3. Specify the formatting options used to display the menu element. Enter text, tags, and code into the<br />
menu design fields as required.<br />
v The text entered in the Header and Footer designs will appear before and after the displayed menu<br />
results. When entering design tagging for menu elements with multiple pages of search results, you<br />
can reference a page navigation element in the header or footer to provide the user with a way of<br />
navigating through the menu pages.<br />
v The text entered into the Component Design for each matching content field defines the format of<br />
each menu result.<br />
v The text entered into the Separator field appear between each displayed menu result.<br />
v The text entered into the No result design field is displayed if no matches are found for the menu<br />
search criteria.<br />
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Menu component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting menu component access settings:<br />
Building a web content system 333
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Menu element design examples:<br />
You format the look and feel of menu elements using HTML and placeholder tags.<br />
Simple menu design<br />
This example shows the basic structure of the element design used by a menu to format the search data.<br />
You enter the following tags into the Design for each menu search result section of the menu element<br />
form.<br />
Table 31. Design for each menu search result<br />
Design<br />
<br />
[placeholder<br />
tag="title" ]<br />
<br />
Details<br />
Instead of a URL, use an href placeholder.<br />
Instead of text, insert a title placeholder.<br />
This is repeated for every link returned by the search query defined in the menu element. You can also<br />
use a TitleLink tag:<br />
334 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 32. Design for each menu search result<br />
Design<br />
details<br />
[placeholder<br />
This produces the same result as the above example.<br />
tag="titlelink" ]<br />
<br />
When creating menus for use in rendering portlets, a URLCmpnt tag is used to create a link instead of a<br />
placeholder.<br />
Design for each menu search result:<br />
[Property context="autofill" type="content" field="title"] <br />
<br />
Using a menu to display images<br />
To display images in a menu instead of text, replace the name placeholder with a reference to an Image<br />
element selected from content or site areas.<br />
Table 33. Design for each menu search result<br />
Design<br />
Details<br />
<br />
[element<br />
type="sitearea"<br />
context="autofill"<br />
key="Image"<br />
]<br />
<br />
Instead of a URL, use an href placeholder. This is where the URL of the menu item is<br />
inserted in the rendered menu.<br />
Instead of a name placeholder (as in the previous example), insert an element tag.<br />
The source type can either be content or site area. The context is autofill.<br />
In this example, the field being referenced is "Image". The site areas or content being<br />
returned must also contain an image element named "Image". The images you store<br />
in the site area or content can be different, but they must all have the same label.<br />
Adding a page navigation element to a menu design<br />
To add navigation controls to a menu you add a reference to a page navigation element in either the<br />
footer or header.<br />
Header<br />
<br />
Menu results<br />
Table 34. Design for each menu search result. This creates a new table row for every item listed in the menu.<br />
Design<br />
Details<br />
<br />
<br />
[placeholder<br />
tag="name"<br />
] <br />
<br />
Instead of a URL, insert a URL placeholder here. This is where the URL of the menu<br />
item is inserted in the rendered menu.<br />
Instead of text, insert a name placeholder.<br />
Footer<br />
Building a web content system 335
Table 35. Footer<br />
Design<br />
<br />
[component name=<br />
"pagenav" ]<br />
<br />
<br />
Details<br />
Add a reference to a previously created page navigation<br />
element to add navigation features to a menu design. In<br />
this example, the page navigation element is referenced<br />
from a page navigation component called "pagenav".<br />
Using a navigator element<br />
Create a navigator element to display a list of links based on a section of the site framework of a site.<br />
Creating a navigator component:<br />
You can only use a navigator element by creating a navigator component. You cannot add a navigator<br />
element to authoring templates, site areas, or content items.<br />
To create a navigator component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > Navigator.<br />
Navigator component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
336 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the navigator component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining navigator element display options:<br />
When defining the display options of a navigator, you select a start area, and also define what levels<br />
above and below the start area are displayed in the navigator.<br />
1. Select one of the following start types to determine which site area to display as the first navigator<br />
item:<br />
v Choose Current Top Level Site Area to start the navigator from the beginning of the site<br />
framework.<br />
v Choose Current Site Area to start the navigator from the site area that the currently displayed<br />
content item is located.<br />
v Choose Current <strong>Content</strong> to start the navigator from the currently displayed content item.<br />
v Choose Selected to select the site area to start the navigator with:<br />
– Click Select Start Area.<br />
– Select a site area and then click OK.<br />
2. Select Include Start to display the site area that you defined in "Start Type" as the first navigator item.<br />
If not selected, the first site area below the site area that is defined in "Start Type" is displayed as the<br />
first navigator item.<br />
3. Select the number of ancestors to display in a navigator. Select none if "Start Type" equals "Current".<br />
4. Select the number of descendents to display in a navigator.<br />
5. Select the number of siblings to display before the current site area.<br />
6. Select the number of siblings to display after the current site area.<br />
7. Select Show Top Level Site Area to display the top site area as the first navigator item.<br />
8. Select Show <strong>Content</strong> to display the content items located within the current site area.<br />
Defining navigator element design options:<br />
You use the element design options of a navigator element to determine how to display the results a<br />
navigator.<br />
1. Select Expand current navigator branch one level to display the content items and site areas one-level<br />
below the current site area in the navigator.<br />
2. Select Expand navigator to display current site area to display all the parent site areas from the start<br />
site area down to the current site area.<br />
3. Specify paging options for the navigator element.<br />
a. Enter the number of items that are displayed in each navigator page.<br />
Building a web content system 337
. Enter the number of the page to display first.<br />
c. Enter the maximum number of results pages to be included in the navigator design.<br />
d. Enter the number of results pages to read ahead when using a page navigation element. For<br />
example, if you enter 3, the page navigation element calculates results up to 3 pages ahead of the<br />
current page. Increasing this number improves the accuracy of the page navigation element.<br />
Lowering this number improves the performance of the page navigation element when rendered.<br />
Note: To display multiple navigator pages, you need to use a page navigation element. This is<br />
referenced within the header or footer of the navigator design specified below.<br />
Note: Changes to paging options are not visible to users until the session cache has expired, or a user<br />
starts a new session.<br />
4. Select Distinguish items with no children using the final navigator result design to use the final<br />
component design as the design for content items and site areas that contain no children. All other<br />
site areas in the navigator use the other component designs. You can use an Alternate Design tag in<br />
your navigator design to "highlight" the current site area or content item.<br />
5. Enter text, tags, and code into the navigator design fields as required:<br />
v The text entered in the Header and Footer designs will appear before and after the displayed<br />
navigator items.<br />
v The text entered into the Navigator result design fields defines the format of each navigator item.<br />
Use multiple navigator result designs for each level of a navigator.<br />
v The text entered into the Separator field appears between each displayed navigator item.<br />
v The text entered into the No result design field is displayed if no results are found for the<br />
navigator criteria.<br />
Related concepts:<br />
“Navigator elements” on page 448<br />
A navigator elements displays metadata and content from a predefined section of a site framework,<br />
usually in the form of links.<br />
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Navigator component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
338 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Grantig navigator component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Navigator formatting examples:<br />
You use HTML to format the layout of a navigator.<br />
v Navigator elements can have more than one element design.<br />
v Each level in the navigator can have its own element design.<br />
v If you want all the levels in your navigator to look the same, then you only have to build one element<br />
design.<br />
v If there are three levels in a site area but only two element designs in your navigator, then the last two<br />
levels in your navigator use the final element design.<br />
The following tables contain some examples of the ways you can format the look of a navigator.<br />
Building a web content system 339
Simple two-level navigator<br />
This example shows the basic structure of the element design used by a navigator.<br />
Table 36. Simple two-level navigator<br />
Design Details Design<br />
Navigator result<br />
design 1<br />
Navigator result<br />
design 2<br />
A tag is added to<br />
display the text in the<br />
first level of the<br />
navigator in bold.<br />
The second design is<br />
repeated for every<br />
link returned by the<br />
parameters defined in<br />
the navigator element<br />
below the first level.<br />
<br />
[placeholder tag="namelink" ]<br />
<br />
[placeholder tag="namelink" ]<br />
<br />
Navigator used in a rendering portlet<br />
In this example, a URLCmpnt tag is used to create a link instead of a placeholder. This enables you to<br />
specify the name of the portal page use when viewing the links generated by the navigator:<br />
Table 37. Navigator used in a rendering portlet<br />
Design field<br />
Design code<br />
Header<br />
<br />
Navigator result design 1 <br />
<br />
[Property context="autofill" field="title"] <br />
<br />
Navigator result design 2 <br />
[Property context="autofill" field="title"] <br />
Footer<br />
<br />
Navigator type examples:<br />
You can use navigator elements to display different sections of a site framework in different ways.<br />
Breadcrumb navigators<br />
If a website is large and complex, a user can easily lose orientation. A breadcrumb allows the user to see<br />
the position of the current web page within the web site and the logical path back to the highest level of<br />
the site framework. A breadcrumb does not provide the actual path that the user has traversed in the<br />
website; the Back button in the browser provides this. A breadcrumb is the orientation device that shows<br />
a user where the displayed web page fits within the site framework.<br />
You use the following configuration settings to create a breadcrumb navigator:<br />
Table 38. Breadcrumb navigator parameter settings<br />
Parameter<br />
Setting<br />
Start Type<br />
Current site area<br />
340 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 38. Breadcrumb navigator parameter settings (continued)<br />
Parameter<br />
Setting<br />
Include Start<br />
Yes<br />
Ancestor Level<br />
All<br />
Descendant Level<br />
None<br />
Preceding siblings Level None<br />
Next Siblings Level None<br />
Show Top<br />
No<br />
Show <strong>Content</strong><br />
Yes<br />
Expand navigator to No<br />
display current site area<br />
Expand current navigator No<br />
branch one level<br />
Highlight current site area No<br />
or content using final<br />
navigator result design<br />
Site map navigators<br />
A site map provides, at a glance, the framework of your site. A site map is a navigator component that<br />
displays that part of the site framework that you define.<br />
To create a site map, the navigator is configured as follows:<br />
Table 39. Site map navigator parameter settings<br />
Parameter<br />
Setting<br />
Start Type<br />
Current site<br />
Include Start<br />
Yes<br />
Ancestor Level<br />
None<br />
Descendant Level<br />
2 Levels<br />
Preceding siblings Level None<br />
Next Siblings Level None<br />
Show Top<br />
No<br />
Show <strong>Content</strong><br />
No<br />
Expand navigator to No<br />
display current site area<br />
Expand current navigator No<br />
branch one level<br />
Highlight current site area No<br />
or content using final<br />
navigator result design<br />
Using a number element<br />
You use a number element to store a numerical value.<br />
Creating a number component:<br />
Building a web content system 341
You create a number component when you want to reuse a numerical value in multiple places in your<br />
website.<br />
To create a number component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > Number.<br />
Number component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the number component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
342 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining a number:<br />
You use the number element to store a numeric value in this component.<br />
Enter a numerical value. The maximum number of digits that can be entered into a number element is 16.<br />
Number component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting number component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
Building a web content system 343
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a number element to an item:<br />
You add a number element to a site area or content item when you want a numerical value to be used<br />
for a specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements .<br />
3. Select Number as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text provider<br />
and enter a key to look up a string from the selected text provider. The text provider displays a<br />
different display title for each language it has been configured for. The text entered in the Display<br />
Title field is only used if an appropriate display title is not available from the selected text provider,<br />
or if the text provider is not available.<br />
7. Click OK. The number element is added to your form.<br />
8. Go to the number element you created. Enter a numerical value. The maximum number of digits that<br />
can be entered into a number element is 16.<br />
9. Save the item form.<br />
Adding a number element to a template:<br />
You add a number element to an authoring template when you want the number element to be used by a<br />
set of content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements .<br />
3. Select Number as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The number element is added to your form.<br />
8. Go to the Default <strong>Content</strong> tab.<br />
9. Go to the number element you created. Enter a numeric value. The maximum number of digits that<br />
can be entered into a number element is 16.<br />
10. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
344 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. If required, enter a minimum and maximum value to restrict the range of numbers that can be<br />
entered in the element.<br />
d. Select the display format of the number.<br />
e. Select whether decimal places are allowed and if so, how many.<br />
f. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
g. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
h. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
11. Save the authoring template.<br />
Using an option selection element<br />
An option selection element can only be added to an authoring template. You create a predefined set of<br />
values for content creators to select from when creating a content item.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements .<br />
3. Select Option Selection as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The option selection element is added to your form.<br />
8. Go to the Default <strong>Content</strong> tab.<br />
9. Go to the option selection element you created.<br />
10. To display the element as a required field select Identify this as a required field.<br />
11. To hide a field on the content form from all users select Hide field. You must specify a default value<br />
if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a content<br />
item by clicking Show hidden fields.<br />
12. Select whether to allow content creators to be able to select multiple options, or just a single option.<br />
If using multiple select, you can also specify the minimum and maximum selections a content<br />
creator can make.<br />
13. Select an option type:<br />
a. Select Use Taxonomy if you want to select categories from a taxonomy.<br />
v Select All available categories if you want your content creators to be able to select any<br />
category.<br />
v Select Selected Categories Only if you want to specify which categories will appear in the<br />
option selection element. The categories you select and any of their children will be available<br />
for selection by content creators.<br />
Building a web content system 345
v Select Include selected categories in the item's profile if you want the categories selected by a<br />
user to be added to the item's profile.<br />
Note: Some options will allow users to select a taxonomy in the option selection element.<br />
Although a user can select a taxonomy, the selected taxonomy will not be added to the item<br />
profile. Only categories directly selected by users will be added to the item profile.<br />
b. Select User Defined to define a set of options. Type the options in the user defined field, one on<br />
each line, in exactly the order you want them to appear on the content form.<br />
14. The options can be displayed as either radio buttons, a drop-down list or a paged table. You can also<br />
select to "automatically select the most appropriate option". If there are five options or less, radio<br />
buttons are used. If there are more then five, but less than twenty-one, a dropdown list is used. If<br />
there are more than twenty options, a paged table is used.<br />
15. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
16. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
17. Type field specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field will then only be used if an appropriate help text is not available from the selected<br />
text provider, or if the text provider is not available.<br />
18. Save the authoring template.<br />
Using a page navigation element<br />
A page navigation element provides navigation controls that are used to navigate through a set of results<br />
generated by menus, navigators, personalization and search elements.<br />
Related concepts:<br />
“Page navigation element” on page 458<br />
A page navigation element provides navigation controls that are used to navigate through a set of results<br />
generated by menus, navigators, personalization and search elements.<br />
Creating a page navigation component:<br />
You can only use a page navigation element by creating a page navigation component. You cannot add a<br />
page navigation element to authoring templates, site areas or content items.<br />
To create a page navigation component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and<br />
then click New > Component > Page Navigation.<br />
Related tasks:<br />
“Creating a page information tag” on page 411<br />
You use the page information tag to display page navigation details in the design of a page navigation<br />
element.<br />
Page navigation component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
346 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the page navigation component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining a page navigator:<br />
You use the page navigation element to define a page navigator.<br />
1. Select the types of page navigation controls that you want to use with the page navigation element.<br />
v Select Shuttle to include relative navigation links, such as previous page, next page, first page, and<br />
last page.<br />
v Select Paging to include navigation links based on page numbers.<br />
v Select Jump to page to include a field where users can type the page number to display.<br />
v Select Page size to include different options for the number of items to display on a page.<br />
Building a web content system 347
2. Specify the layout and design of the header, separator, and footer for the page navigation element by<br />
entering HTML tagging in the respective input fields. The code entered in the header and footer<br />
designs will appear before and after the displayed page controls. The code entered into the separator<br />
design appears between each displayed page control.<br />
3. If you are using shuttle paging controls, specify their layout and design by entering HTML tagging in<br />
the input fields.<br />
First control<br />
The First control is used to navigate directly to the first page in a set of pages. You must<br />
define two layouts:<br />
v The active design is displayed when the first page in a set of pages are not currently<br />
displayed.<br />
v The inactive design is displayed when the first page in a set of pages are currently<br />
displayed.<br />
Previous control<br />
The Previous control is used to navigate to the page immediately preceding the currently<br />
displayed page. You must define two layouts:<br />
v The active design is displayed when a page preceding the currently displayed page is<br />
available.<br />
v The inactive design is displayed when there is no available page preceding the currently<br />
displayed page (for example, when the first page in a set of pages are currently displayed).<br />
Next control<br />
The Next control is used to navigate to the page following the currently displayed page. You<br />
must define two layouts:<br />
v The active design is displayed when a page following the currently displayed page is<br />
available.<br />
v The inactive design is displayed when there is no available page following the currently<br />
displayed page (for example, when the last page in a set of pages are currently displayed).<br />
Last control<br />
The Last control is used to navigate directly to the last page in a set of pages. You must define<br />
two layouts:<br />
v The active design is displayed when the last page in a set of pages are not currently<br />
displayed.<br />
v The inactive design is displayed when the last page in a set of pages are currently<br />
displayed.<br />
4. If you are using page number controls, specify the paging options and continuation design.<br />
a. Indicate how many pages you want to make available from the page navigation element at one<br />
time.<br />
v Click Show all pages to include navigation links for every page in the result set.<br />
v To display a subset of the result set, click Limit number of pages, and enter the number of<br />
pages you want to include.<br />
b. If you are limiting the number of pages displayed in the page navigation element, specify the<br />
layout and design of the Continuation control by entering HTML tagging in the input field. The<br />
Continuation control is displayed on either side of the page numbers to provide access to the<br />
preceding or following set of pages.<br />
5. If you are using the Jump to page control, specify the following parameters:<br />
a. Enter a field label to display.<br />
b. If you would like to display the current page number in a Jump to page field, select Show current<br />
page number in field .<br />
c. Type a number to define the Jump to page field width.<br />
348 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Note: By default, if a user enters a number in the Jump to page field that is higher than the total<br />
number of pages, the No Result Design is returned. If you want to get the last page returned<br />
regardless of how high a number a user enters, ensure that the handle.invalid.page property is<br />
defined in the WCM WCMConfigService service with a value of false.<br />
6. If you are using the Page size control, specify the following parameters:<br />
a. Enter a field label to display.<br />
b. Enter the page size options to display using the following format:<br />
number|text<br />
You enter each option on a new line. To display all items enter "0" in the number parameter.<br />
For example, to display options to display 10 items per page, 50 items per page and all items,<br />
enter the following:<br />
10|Small<br />
50|Large<br />
0|All<br />
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Page navigation component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Defining page navigation component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
Building a web content system 349
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Page navigation design example:<br />
This is an example of a design of a page navigation element.<br />
This example uses two page navigation elements to produce a page navigation system like this:<br />
Table 40. Examples of the two page navigation elements that produce a page navigation system<br />
>><br />
Page 5 of 10. Go to page: Number of<br />
items to<br />
display: 10 |<br />
50 | All<br />
First page navigation element<br />
1. Create a page navigation component named "firstnavigation".<br />
2. Select both Shuttle (first, previous, next, and last controls) and Paging (page numbering and<br />
continuation).<br />
3. Select Limit number of pages and type 3 in the associated field.<br />
4. Enter the following text in these element design fields:<br />
Table 41. First page navigation element design<br />
Design Element<br />
Header<br />
Footer<br />
Separator<br />
First control - active design<br />
First control - inactive<br />
design<br />
Previous control - active<br />
design<br />
Design code<br />
<br />
<br />
| <br />
<<<br />
<<<br />
<<br />
350 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 41. First page navigation element design (continued)<br />
Design Element<br />
Design code<br />
Previous control - inactive <<br />
design<br />
Next control - active design ><br />
Next control - inactive ><br />
design<br />
Last control - active design >><br />
Last control - inactive >><br />
design<br />
Continuation ...<br />
Second page navigation element<br />
1. Create a page navigation component named "secondnavigation".<br />
2. Select both Jump to page (page input box) and Page size (page size selection).<br />
3. Define these setting in the Jump to page (page input box) section:<br />
v Field label: Go to page:<br />
v Field size: 3<br />
4. Define these setting in the Page size control section:<br />
v Field label: Number of items to display:<br />
v Page sizes:<br />
10|10<br />
50|50<br />
0 | All<br />
5. Enter the following text in these element design fields:<br />
Table 42. Second page navigation element design<br />
Design element<br />
Header<br />
Footer<br />
Separator<br />
Design code<br />
<br />
Page [PageInfo value="currentPage" ]<br />
[PageInfo value="unknownPages" knowntext="of" unknowntext="of at least" ]<br />
[PageInfo value="totalPages" ].<br />
<br />
<br />
| <br />
<br />
Referencing the page navigation components in another element design<br />
You use component tags to reference both page navigation components in another element design, such<br />
as a menu:<br />
<br />
[component name="firstnavigation" ]<br />
<br />
[component name="secondnavigation" ]<br />
<br />
Building a web content system 351
Related tasks:<br />
“Creating a page information tag” on page 411<br />
You use the page information tag to display page navigation details in the design of a page navigation<br />
element.<br />
Using a Personalization element<br />
A Personalization element stores a reference to a rule or content spot.<br />
Related concepts:<br />
“Personalization element” on page 457<br />
A personalization element stores a reference to a personalization rule or content spot generated by Portal<br />
Personalization. To use a personalization element you must create a personalization component.<br />
Creating a Personalization component:<br />
You can only use a Personalization element by creating a Personalization component. You cannot add a<br />
Personalization element to authoring templates, site areas or content items.<br />
To create a Personalization component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and<br />
then click New > Component > Personalization.<br />
Personalization component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
352 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the Personalization component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining a Personalization rule:<br />
You use the Personalization element to define a new personalization rule or select an existing<br />
personalization rule or content spot.<br />
1. Click New to create a personalization rule.<br />
2. Click Search to search for and select an existing personalization rule or content spot.<br />
a. Select a personalization rule or content spot and then click OK.<br />
3. Click Edit to edit a selected personalization rule.<br />
4. Click Clear to remove a selected personalization rule.<br />
Important: If the new button was used previously to create the personalization rule, the<br />
personalization rule is deleted and cannot be restored.<br />
5. Enter the total number of items to display in the Results per page field.<br />
6. Specify the formatting options used to display the Personalization element. Enter text, tags and code<br />
into the design fields as required.<br />
v The text entered in the Header and Footer designs will appear before and after the displayed<br />
results.<br />
v The text entered into the Design for each search result field defines the format of each result.<br />
v The text entered into the Separator field will appear between each displayed result.<br />
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Personalization component properties:<br />
Building a web content system 353
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting personalization component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Personalization element examples:<br />
The layout and design of a personalization element is created in a similar way to a menu element, with a<br />
header design, footer design, and a design to be repeated for each result.<br />
Creating a Personalized menu<br />
1. Create a content spot or personalization rule in Portal Personalization based on some <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> content.<br />
2. Create a personalization element in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
354 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Click the Search button and select the content spot or personalization rule you created before. Click<br />
OK.<br />
v Create an element design to display the results of the content spot or personalization rule. This is<br />
similar to designing a Menu element or Navigator. For example, Enter the following in the "Design<br />
for each menu search result" section:<br />
[placeholder tag="namelink" ]<br />
<br />
3. Save the personalization element.<br />
4. Reference the personalization element in a presentation template.<br />
Displaying personalized content<br />
To display a single piece of personalized <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content for different users:<br />
1. Create an authoring template that includes an element. For example, a text element called "body".<br />
2. Create a set of content items based on this authoring template.<br />
3. Create a content spot or personalization rule in Portal Personalization based on the authoring<br />
template and content created above. The content spot or personalization rule should only return a<br />
single piece of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> <strong>Content</strong> for each user.<br />
4. Create a personalization element in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
v Click the Search button and select the content spot or personalization rule you created before. Click<br />
OK.<br />
v Create an element design to display the results of the content spot or personalization rule. For<br />
example, Enter the following in the Design for each menu search result section:<br />
[element type="<strong>Content</strong>" context="autofill" key="Body"]<br />
This displays the content of the text element called "Body" from the content item returned by the<br />
content spot or personalization rule.<br />
5. Save the personalization element.<br />
6. Reference the personalization element in a presentation template.<br />
Displaying personalized web content components<br />
A set of personalized web content components can be displayed using a personalization element:<br />
1. Create a content spot or personalization rule in Portal Personalization that searches for web content<br />
components.<br />
2. Create a personalization element in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
v Click the Search button and select the content spot or personalization rule you created before. Click<br />
OK.<br />
v Create an element design to display the results of the content spot or personalization rule. For<br />
example, Enter the following in the element design section:<br />
Header:<br />
<br />
Design for each menu search result:<br />
You must use a Component tag with a context of "autofill".<br />
<br />
[Component context="autofill" ]<br />
<br />
Footer:<br />
<br />
3. Save the personalization element.<br />
Building a web content system 355
4. Reference the personalization element in a presentation template.<br />
Displaying attributes of Personalized content<br />
The attributes of personalized content can also be displayed using a personalization element:<br />
1. Create a content spot or personalization rule in Portal Personalization .<br />
2. Create a personalization element in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
v Click the Search button and select the content spot or personalization rule you created before. Click<br />
OK.<br />
v Create an element design to display the results of the content spot or personalization rule. For<br />
example, Enter the following in the element design section:<br />
Header:<br />
<br />
Design for each menu search result:<br />
You must use a "AttributeResource" tag for each attribute you want to display. For example:<br />
<br />
[AttributeResource attributeName="ibmcm:title"]<br />
[AttributeResource attributeName="ibmcm:effectiveDate"]<br />
<br />
Footer:<br />
<br />
3. Save the personalization element.<br />
4. Reference the personalization element in a presentation template.<br />
Notes:<br />
Displaying keywords and categories:<br />
To retrieve a list of categories or keywords, Use the Property tag.<br />
Displaying authors and owners:<br />
To retrieve a list of authors or owners, Use the Property tag.<br />
Displaying the Site Path:<br />
To display the site path to a personalized <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> element, use a placeholder tag.<br />
Using a rich text element<br />
You use a rich text element to provide users with a rich text editor that can be used to author a section of<br />
HTML. To create a rich text element, you can either add a rich text element to an authoring template, site<br />
area or content item, or create a rich text component.<br />
Creating a rich text component:<br />
You create a rich text component when you want to reuse a section of HTML in multiple places in your<br />
website, and you want to use a rich text editor to create and edit the HTML. A copyright notice is an<br />
example of the kind of HTML you could store in a rich text component.<br />
To create a rich text component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > Rich Text.<br />
Rich text component identification:<br />
356 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the rich text component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Using the rich text element:<br />
You use the rich text element to enter and format text.<br />
Building a web content system 357
The rich text editors used by <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> are supplied by other vendors. For information about<br />
using the rich text editor, see the user documentation supplied by the specific rich text editor vendor.<br />
Basic <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags can be used in rich text elements. For example, the following tags can<br />
be used in Rich Text elements:<br />
v [component name="test"]<br />
v [element type="content" context="current" key="body"]<br />
Note: Highlighting of rich text elements are not enabled by default. To enable this support, ensure that<br />
your server administrator adds the following property to the WCM WCMConfigService service:<br />
v Property name: wcm.enableWCMTagHighlighting<br />
v Value: true<br />
The following tag formats are invalid:<br />
1. The use of single quotes around attribute values.<br />
v [Component name='example']<br />
v [Component name='example' start='link']<br />
v [Component name='example' start='']<br />
2. The use of double quotes inside attribute values.<br />
v [Component name="example" start="link"]<br />
v [Component name="example" start=""]<br />
3. Embedding tags inside other HTML tags.<br />
v link<br />
v <br />
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Rich text component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
358 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting rich text component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a rich text element to an item:<br />
You add a rich text element to a site area or content item when you want a section of HTML to be used<br />
for a specific site area or content item and you want to use a rich text editor to create and edit the section<br />
of HTML.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements.<br />
3. Select Rich Text as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed in indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The rich text element is added to your form.<br />
8. Go to the rich text element you created.<br />
Building a web content system 359
9. Enter text in the rich text field.<br />
10. Save the item form.<br />
Adding a rich text element to a template:<br />
You add a rich text element to an authoring template when you want a section of HTML to be used by a<br />
set of content items that use the same authoring template and you want your content authors to use a<br />
rich text editor to create and edit the HTML.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements .<br />
3. Select rich text as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed in indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The rich text element is added to your form.<br />
8. Go to the Default <strong>Content</strong> tab.<br />
9. Go to the rich text element you added.<br />
10. Enter text in the rich text field, or do nothing if you want your content creators to enter text in the<br />
rich text field.<br />
11. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Type the number of characters to use in Field Width to set the size of the displayed field. If you<br />
leave this blank, the default field size is used.<br />
d. Type a number into the maximum or minimum characters or words fields to set limits on the<br />
number of characters or words a user can enter in a field.<br />
e. You can edit the default behavior of rich text elements.<br />
Use stylesheet, hide fonts/size/color<br />
Select this option if you want the text style to be determined by a style sheet. <strong>Content</strong><br />
creators will not be able to edit text properties such as fonts style, text size and text color.<br />
Limit image picker to library images<br />
Select this to prevent content creators from inserting images from the file system. They<br />
will only be able to select images stored as image components.<br />
Disable source mode<br />
Select this to prevent content creators from viewing the rich text editor in source mode.<br />
Filter active content on save<br />
Select this to prevent users from saving active content, such as scripts, in the rich text<br />
element.<br />
f. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
360 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
g. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
h. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field will then only be used if an appropriate help text is not available from the<br />
selected text provider, or if the text provider is not available.<br />
i. You can also select to use either the default rich text editor of the authoring portlet, or a<br />
third-party rich text editor as the rich text editor for a rich text element:<br />
Portlet default editor<br />
If selected, the default rich text editor of the current authoring portlet is used. If the<br />
default editor is not available, the standard rich text editor is used.<br />
Custom<br />
Selecting Custom allows you to use a 3rd-party rich text editor as your default editor.<br />
Before using a compatible third-party rich text editor, you should read the installation and<br />
configuration instructions of the third-party rich text editor. These should include<br />
instructions for enabling the third-party rich text editor to be used in a <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> solution.<br />
When configuring a third-party rich text editor, you need to copy a JSP file supplied by<br />
the third-party rich text editor. This is used to launch the third-party rich text editor. You<br />
enter the name of this JSP file in the Rich Text Options section of the authoring portlet<br />
configuration.<br />
If the third-party rich text editor is not available, the default rich text editor of the<br />
authoring portlet is used. If the default editor is not available, the standard rich text editor<br />
is used.<br />
Storing JSP Files:<br />
JSP files can be located:<br />
v within the was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war directory<br />
of your server.<br />
The JSP page is also stored in the client war directory of the local rendering portlet or<br />
of the servlet or portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. For<br />
example, to render a JSP page on a local rendering portlet, you would also need to store<br />
a copy of the JSP file under was_profile_root/installedApps/node-name/<br />
PA_WCMLocalRendering.ear/ilwwcm-localrende.war<br />
v within any other web application running on portal. When referencing JSP files in<br />
another web application, use the following path: contextPath;jspPath<br />
For example: /wps/customapplication;/jsp/editor.jsp<br />
12. Save the authoring template.<br />
Using a search element<br />
A search element is used to display the results of a search query. A search element cannot be used in<br />
isolation, but must be used together with an HTML element that is used to define the search query form.<br />
To create a search form you must:<br />
1. create a search query using an HTML element<br />
2. create a search results view using a search component<br />
Building a web content system 361
You reference both the HTML element and search component in a single presentation template. The<br />
search component is only rendered after a search query is executed by a user.<br />
Related concepts:<br />
“Enabling search for web content” on page 81<br />
You use Portal Search to search for text displayed in web sites created by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Creating a search query:<br />
A search query is created using an HTML element. The form you create using the HTML element is used<br />
to submit a search query. The results of the search query are then displayed within a search element.<br />
Search query examples:<br />
These are examples of search queries you can create using an HTML element.<br />
Simple search query<br />
This is an example of a simple search query form:<br />
Table 43. Simple search query<br />
Code example<br />
<br />
Description<br />
This is the form header<br />
where you specify the<br />
location of the content item<br />
containing the search<br />
element used to display the<br />
search result.<br />
This is typically the same<br />
content item that this HTML<br />
element is stored in.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
This is the body of the<br />
search form. Like any<br />
standard HTML form, it<br />
contains an input field and<br />
a submit button.<br />
In this example, a table has<br />
been used to format the<br />
search query form.<br />
This closes the form.<br />
Searching metadata<br />
In this example, two more fields have been added allowing users to search both content title and author<br />
name:<br />
362 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 44. Searching metadata<br />
Code example<br />
<br />
<br />
<br />
<strong>Content</strong> Title<br />
<br />
<br />
<br />
Author’s Name<br />
<br />
<br />
<br />
<strong>Content</strong> Body<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Description<br />
This is the form header<br />
where you specify the<br />
location of the content item<br />
containing the search<br />
element used to display the<br />
search result.<br />
This is typically the same<br />
content item that this HTML<br />
element is stored in.<br />
This is the body of the<br />
search form. Like any<br />
standard HTML form, it<br />
contains input fields and a<br />
submit button.<br />
This closes the form.<br />
Including hidden data<br />
In this example, a hidden field has been added to restrict the search to content that use the authoring<br />
template called "Press Release":<br />
Table 45. Including hidden data<br />
Code examples<br />
<br />
<br />
Description<br />
This is the form header<br />
where you specify the<br />
location of the content item<br />
containing the search<br />
element used to display the<br />
search result.<br />
This is typically the same<br />
content item that this HTML<br />
element is stored in.<br />
Here a hidden input field<br />
has been added that<br />
searches for content that use<br />
the authoring template<br />
called "Press Release".<br />
Building a web content system 363
Table 45. Including hidden data (continued)<br />
Code examples<br />
<br />
<br />
<strong>Content</strong> Title<br />
<br />
<br />
<br />
Author’s Name<br />
<br />
<br />
<br />
<strong>Content</strong> Body<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Description<br />
This is the body of the<br />
search form. Like any<br />
standard HTML form, it<br />
contains input fields and a<br />
submit button.<br />
This closes the form.<br />
Filtering search results:<br />
Often you want certain types of content to not be shown in your search results. You can do this by<br />
filtering your search results to ensure that certain types of content is not displayed.<br />
A search component uses a set of fields, such as "search_query", "search_categories" and<br />
"search_authoringtemplate", to construct a single query to send to the search engine. This constructed<br />
search does not explicitly perform a filter. It does not mark any of the criteria as required and therefore<br />
the search performed is a "best fit" search where the results can match any of the criteria mentioned, but<br />
is ordered so that the best fitting results are displayed first.<br />
If you want to force the results to be filtered, you have to construct the query yourself. This allows you to<br />
force either that the results must use a specified parameter, or that they must not use a specified<br />
parameter. You can then send the constructed query to the search component using the "search_query"<br />
field, which is passed on to the search engine.<br />
Filtering by authoring template<br />
To only include content that is using a specific authoring template, append this string to the end of the<br />
search query:<br />
+AuthoringTemplate::"Template Title"<br />
To specify multiple authoring templates, append this string to the end of the search query:<br />
+AuthoringTemplate::"Template Title 1" +AuthoringTemplate::"Template Title 2"<br />
To only include content that does not use a specific authoring template, append this string to the search<br />
query:<br />
-AuthoringTemplate::"Template Title"<br />
To exclude multiple authoring templates, append this string to the end of the search query:<br />
-AuthoringTemplate::"Template Title 1" -AuthoringTemplate::"Template Title 2"<br />
You can also construct your query using some JavaScript. For example:<br />
364 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
function addFilter(queryIn)<br />
{<br />
return queryIn + ’ -AuthoringTemplate::"Template Title";<br />
}<br />
<br />
In your search form, hide the "search_query" query field and compute it during the submit using what<br />
the user typed in plus the template filter:<br />
<br />
Query: <br />
<br />
<br />
Filtering by content path<br />
To only include content that is on a specific path, append this string to the end of the search query:<br />
+<strong>Content</strong>Path::"/LibraryName/FolderName/SiteArea1Name/SiteArea1.1Name"<br />
To only include content that is not on a specific path, append this string to the search query:<br />
-<strong>Content</strong>Path::"/LibraryName/FolderName/SiteArea1Name/SiteArea1.1Name"<br />
You can also construct your query using some JavaScript. For example:<br />
<br />
function addFilter(queryIn)<br />
{<br />
return queryIn + ’ -<strong>Content</strong>Path::"/LibraryName/FolderName/SiteArea1Name/SiteArea1.1Name";<br />
}<br />
<br />
In your search form, hide the "search_query" query field and compute it during the submit using what<br />
the user typed in plus the path filter:<br />
<br />
Query: <br />
<br />
<br />
Search parameters:<br />
The following parameters can be used in a search query in this format.<br />
<br />
Building a web content system 365
Table 46. Search parameters<br />
Parameter<br />
search_query<br />
search_authoringtemplate<br />
search_authors<br />
search_categories<br />
search_contentpath<br />
search_description<br />
search_effectivedate<br />
search_expirationdate<br />
search_keywords<br />
search_lastmodifieddate<br />
search_modifier<br />
search_name<br />
search_owners<br />
search_title<br />
Details<br />
Used to search the content of any elements stored in a content item.<br />
Used to search the authoring template, if available, that was used to create<br />
the content item.<br />
Used to search the name or names of the authors for the content item, if any<br />
are defined.<br />
Searching for LDAP users:<br />
When searching for LDAP users, the full distinguished name must be<br />
submitted. Users are unaware of what the actual distinguished name of a<br />
user will be. It is recommended that if planning to allow users to search for<br />
authors, you should create a predefined list or drop-down to allow users to<br />
select a known author. That way the user names can be displayed in a<br />
user-friendly manner, but the parameters submitted by the form can be the<br />
distinguished name for the selected user.<br />
Used to search the categories of the content item if any are defined.<br />
Used to search for text in the path of a content item such as the library<br />
name, folder name or site area name.<br />
Used to search the description of the content item.<br />
Used to search the effective date of the content item.<br />
Note: Search by date only works with the format MMM dd yyyy<br />
HH:mm:ss z. For example, Sep 20 2006. To change the format, you will need<br />
to edit the SearchService.DateFormatString parameter in the<br />
SearchService.properties file.<br />
Used to search the expiration date of the content item.<br />
Note: Search by date only works with the format MMM dd yyyy<br />
HH:mm:ss z. For example, Sep 20 2006. To change the format, you will need<br />
to edit the SearchService.DateFormatString parameter in the<br />
SearchService.properties file.<br />
Used to search the keywords of the content item if any are defined.<br />
Used to search the last modified date of the content item.<br />
Note: Search by date only works with the format MMM dd yyyy<br />
HH:mm:ss z. For example, Sep 20 2006. To change the format, you need to<br />
edit the SearchService.DateFormatString parameter in the<br />
SearchService.properties file.<br />
Used to search the name of the last person to modify the content item.<br />
Used to search the name of the content item.<br />
Used to search the name or names of the owners of the content item, if any<br />
are defined.<br />
Searching for LDAP users:<br />
When searching for LDAP users, the full distinguished name must be<br />
submitted. Users are unaware of what the actual distinguished name of a<br />
user will be. It is recommended that if planning to allow users to search for<br />
authors, you should create a predefined list or drop-down to allow users to<br />
select a known author. That way the user names can be displayed in a<br />
user-friendly manner, but the parameters submitted by the form can be the<br />
distinguished name for the selected user.<br />
Used to search the title of the content item.<br />
Using a search query form:<br />
366 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The following search syntaxes can be used when searching text using the "search_query" parameter.<br />
Plus(+)andminus (-)signs<br />
The plus and minus signs do not join terms, but only operate on the term that follows them.<br />
Quotation marks (")<br />
Use quotes to combine words into search phrases, for example "<strong>IBM</strong> software".<br />
Note: When you search for strings with special query characters, such as a blank or a colon (:),<br />
you must enclose your search string in quotes.<br />
Trailing wild cards<br />
Use an asterisk (*)asatrailing wild card in your search string, for example softw* .<br />
Using the plus and minus signs<br />
For your query, type any words that describe what you are looking for. Use the plus and minus signs as<br />
follows:<br />
v Put a plus sign (+)infrontofthewordsthat you want to be present in the returned documents.<br />
v Put a minus sign (-)infrontofthewordsthat must not be present in the returned documents.<br />
v When using signs, do not leave any space between the sign and the following word qualified by the<br />
sign.<br />
Plus sign examples<br />
+thinkpad<br />
All documents retrieved must contain the word thinkpad. A single unsigned word, thinkpad, is<br />
also read this way, and is treated by the search engine as +thinkpad.<br />
+thinkpad +drivers<br />
All documents retrieved must contain the word thinkpad and the word drivers.<br />
+thinkpad drivers<br />
All documents retrieved must contain the word thinkpad, but only optionally the word drivers.<br />
Minus sign examples<br />
+thinkpad -drivers<br />
All documents retrieved must contain the word thinkpad but must not contain the word<br />
drivers.<br />
Note:<br />
1. Do not use only minus signed terms for your search because they will not produce a result list. The<br />
reason is that in this case the search terms are too vague to allow for a meaningful scoring of the<br />
found documents.<br />
2. Use spaces between signed terms in order to distinguish them from terms that contain a minus sign,<br />
such as e-mail. Note that e-mail is treated as "e-mail" whereas e -mail is treated as optionally e ,<br />
and the word mail should not be contained in the resulting documents.<br />
Displaying search results:<br />
You use a search element stored in search component to display the results of a search query.<br />
Building a web content system 367
Related tasks:<br />
“Creating a search component”<br />
A search element defines the layout of a form that is used to display search results. To use a search you<br />
must create a search component. You cannot add search elements to authoring templates, sites, site areas<br />
or content items.<br />
“Creating an attribute resource tag” on page 403<br />
You use the attribute resource tag to define the information returned by a search query.<br />
Creating a search component:<br />
A search element defines the layout of a form that is used to display search results. To use a search you<br />
must create a search component. You cannot add search elements to authoring templates, sites, site areas<br />
or content items.<br />
To create a search component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click<br />
New > Component > Search.<br />
Related concepts:<br />
“Displaying search results” on page 367<br />
You use a search element stored in search component to display the results of a search query.<br />
Search component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
368 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the search component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Creating a search results design:<br />
The search element is used to define the design used to display search results.<br />
1. Select a search service.<br />
2. Select a search collection.<br />
3. Specify paging options for the search element.<br />
a. Enter the number of items that are displayed in each navigator page.<br />
b. Enter the number of the page to display first.<br />
c. Enter the maximum number of results pages to be included in the navigator design.<br />
d. Enter the number of results pages to read ahead when using a page navigation element. For<br />
example, if you enter 3, the page navigation element calculates results up to 3 pages ahead of the<br />
current page. Increasing this number improves the accuracy of the page navigation element.<br />
Lowering this number imrpves the performance of the page navigation element when rendered.<br />
Note: To display multiple pages, you need to use a page navigation element. This is referenced<br />
within the header or footer of the search element design specified below.<br />
4. Select how to sort the search results.<br />
5. Enter HTML, text, and tags into the component design fields to set the layout of the search results:<br />
Header, separator and footer:<br />
The code entered in the header designs and the footer designs will appear before and after the<br />
displayed search results. The code entered into the separator appears between each displayed<br />
search result.<br />
Result:<br />
The search results are displayed here. To display the search results as hyperlinks, you must<br />
include a placeholder in the search result layout. The simplest way to create a result layout is<br />
to use the "namelink" placeholder.<br />
No Results:<br />
Enter text to display if no results are returned.<br />
Building a web content system 369
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Search component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting search component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
370 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Search result examples:<br />
These are examples of how to design your search results.<br />
Search element design example for use in a website<br />
In this example, a table is used to lay out the search results.<br />
Table 47. Search element design example for use in a website<br />
Design field Details Code example<br />
Header<br />
Result<br />
Separator<br />
Footer<br />
No results<br />
The attributes to display in<br />
each search result are<br />
defined here.<br />
A separator can be used to<br />
delineate each search result.<br />
A page navigation element<br />
stored in a component is<br />
referenced here to add page<br />
navigation to the search<br />
results.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
There are no results for your query. Please refine your<br />
search and try again.<br />
Search element design example for use in a rendering portlet<br />
In this example, a table is used to lay out the search results.<br />
Table 48. Search element design example for use in a rendering portlet<br />
Design field Details Code example<br />
Header<br />
Result<br />
The attributes to display in<br />
each search result are<br />
defined here.<br />
When displaying search<br />
results in a rendering<br />
portlet you must specify the<br />
page that the linked content<br />
is displayed in when<br />
opened.<br />
<br />
<br />
<br />
<br />
<br />
<br />
Separator<br />
A URL map to the portal<br />
page that contains the<br />
rendering portlet is<br />
required.<br />
A separator can be used to<br />
delineate each search result.<br />
<br />
Building a web content system 371
Table 48. Search element design example for use in a rendering portlet (continued)<br />
Design field Details Code example<br />
Footer<br />
No results<br />
A page navigation element<br />
stored in a component is<br />
referenced here to add page<br />
navigation to the search<br />
results.<br />
<br />
[component name="pagenavigationcomponent"]<br />
<br />
<br />
There are no results for your query. Please refine your<br />
search and try again.<br />
Using a short text element<br />
A short text element is used to store small amounts of fixed-length text where the length is 250 bytes or<br />
less. Unlike the other text elements, short text elements can also be used as a search parameter in a<br />
Personalization rule. To create a short text element, you can either add a short text element to an<br />
authoring template, site area or content item, or create a short text component.<br />
Creating a short text component:<br />
You create a short text component when you want to reuse a small section of text in multiple places in<br />
your website. For example, you could use a short text component to store the name of a product or<br />
service.<br />
To create a short text component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > Short Text.<br />
Short text component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
372 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
een configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the short text component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Enter some text in the short text element:<br />
You enter text in the short text element.<br />
A short text element is used to store small amounts of fixed-length text where the length is 250 bytes or<br />
less. web content tags cannot be used in short text elements.<br />
Short text component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting short text component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
Building a web content system 373
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a short text element to an item:<br />
You add a short text element to a site area or content item when you want a small section of text to be<br />
used for a specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements.<br />
3. Select Short Text as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed in indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The short text element is added to your form.<br />
8. Go to the short text element you created.<br />
9. Enter text in the short text field.<br />
10. Save the item form.<br />
Adding a short text element to a template:<br />
You add a short text element to an authoring template when you want a short text element to be used by<br />
a set of content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements .<br />
3. Select Short Text as the element type.<br />
374 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed in indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The short text element is added to your form.<br />
8. Go to the Default <strong>Content</strong> tab.<br />
9. Go to the short text element you added.<br />
10. Enter some default text in the short text field if required or leave it blank if you want your content<br />
creators to enter text in this field.<br />
11. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Type the number of characters to use in Field Width to set the size of the displayed field. If you<br />
leave this blank, the default field size is used.<br />
d. Type a number into the maximum or minimum characters or words fields to set limits on the<br />
number of characters or words a user can enter in a field.<br />
e. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
f. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
g. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
12. Save the authoring template.<br />
Using a style sheet element<br />
You store a style sheet file in a style sheet element. You can only use a style sheet element by creating a<br />
style sheet component. You cannot add a style sheet element to authoring templates, site areas or content<br />
items.<br />
To create a style sheet component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > Style Sheet.<br />
Related concepts:<br />
“Style sheet element” on page 454<br />
You store a style sheet file in a style sheet element.<br />
Style sheet component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
Building a web content system 375
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the style sheet component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Selecting a style sheet:<br />
You use the style sheet element to select a style sheet to store in this component.<br />
1. Select the style sheet to upload by clicking Browse.<br />
a. Select a style sheet and click OK.<br />
376 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
2. Select a style sheet type. HTML allows authors to associate any number of external style sheets with a<br />
document:<br />
v Select Alternate style-sheet if the selected style sheet is to be used with a number of mutually<br />
exclusive style sheets.<br />
v Select Preferred style-sheet if the selected style sheet is to be used as the preferred style sheet<br />
within a set of alternate style sheets.<br />
v Select Persistent style-sheet if the selected style sheet is the only style sheet being used.<br />
3. Enter the display title of the style sheet.<br />
4. Select a media-type to use with the style sheet.<br />
Style sheet component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting style sheet component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
Building a web content system 377
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Using a taxonomy element<br />
You use a taxonomy element to display a list of categories from a taxonomy.<br />
Related concepts:<br />
“Taxonomy element” on page 457<br />
A taxonomy element defines the layout of a category selection form that enables users to select categories<br />
to display in a personalized menu.<br />
Creating a taxonomy component:<br />
You can only use a taxonomy element by creating a taxonomy component. You cannot add a taxonomy<br />
element to authoring templates, sites, site areas or content items.<br />
To create a taxonomy component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > Taxonomy.<br />
Taxonomy component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
378 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the taxonomy component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Defining taxonomy component properties:<br />
You use the taxonomy element to define the properties of the taxonomy component.<br />
1. Click Select Start Category to select a category to start the category selection tree.<br />
2. Select Include Start to display the category that you defined in "Start Area" as the first item in the<br />
category selection tree. If not selected, the first category below the category that is defined in "Start<br />
Area" is displayed as the first item in the category selection tree.<br />
3. Select the number of child categories to display in the category selection tree using the Depth field.<br />
4. To select the categories you would like to be displayed as "selected" when a category tree is first<br />
opened, click Select Category in the "Categories to include" section. The categories selected here will<br />
only appear in the category selection tree if they are included within the parent categories defined in<br />
steps 1 and 3.<br />
5. To display categories as "selected" when a category tree is first opened based on categories defined in<br />
other sources, select one of the following options:<br />
a. To display categories as "selected" when a category tree is first opened based on the categories the<br />
currently displayed content item is profiled with, select Current content.<br />
b. To display categories as "selected" when a category tree is first opened based on the categories the<br />
current user is profiled with, select Current User.<br />
c. Select Query string to enter a query string parameter to search for. For example, if you entered<br />
myquery in this field, a menu displayed on a page whose URL contained a search query<br />
myquery=library1/shoes would display content profiled with a category called shoes from the library<br />
called library1. If no library is specified in the original URL the library of the current content item<br />
is used, and if that cannot be resolved the default library specified in the WCM WCMConfigService<br />
service is used.<br />
Note: If a category exists in more than one taxonomy, only the first found category is used by the<br />
search query. You cannot specify a taxonomy name in the search query. You should rename one of<br />
the categories to ensure the search query uses the correct category.<br />
The categories selected here will only appear in the category selection tree if they are included within<br />
the parent categories defined in steps 1 and 3.<br />
6. To restrict the categories displayed from other sources to specific categories, click Select Category in<br />
the "Restrict Included Categories to" section. The categories selected here will only appear in the<br />
category selection tree if they are included within the parent categories defined in steps 1 and 3.<br />
Building a web content system 379
7. Select Merge selected categories with included categories to add categories selected in the "Selected<br />
Categories" section to category selection tree.<br />
8. Select Replace selected categories with included categories to replace the categories included within<br />
the "selected start category" with categories selected in the "Selected Categories" section. If no<br />
categories are found using the criteria entered in the "Selected Categories" section, then the "selected<br />
start category" is used.<br />
9. Enter HTML, text and tags in the component design fields:<br />
a. The code entered in the header and footer designs will appear before and after the displayed<br />
category selection tree.<br />
b. The code entered into the selected design is used to format selected categories in a category<br />
selection tree.<br />
c. The code entered into the unselected design is used to format unselected categories in a category<br />
selection tree.<br />
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Taxonomy component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting taxonomy component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
380 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Creating category selection trees:<br />
You use category selection trees to allow users to personalize menus.<br />
Note:<br />
v Ensure the connect.businesslogic.module.ajpecatselect.class property is defined in the WCM<br />
WCMConfigService service with a value of com.aptrix.pluto.CategoryProfileUpdaterModule.<br />
v You cannot use category selection trees in a local rendering portlet.<br />
Taxonomy element form<br />
The main function of the taxonomy element is to display a category selection tree used to allow a user to<br />
select categories for menu personalization.<br />
v You configure the element by selecting either a taxonomy or a category as a start area.<br />
v Select a child depth from the start area and a parent level relative to the start area.<br />
v Select "Include Start" to display the start area. This option has no effect if the start area is a taxonomy.<br />
v There are two element design options available<br />
– One is rendered when the logged in user has selected the category that is to be displayed.<br />
– The other is rendered if the user has not selected the category.<br />
These element designs are rich text elements, and are used in a similar fashion to the navigator and<br />
menu elements.<br />
The taxonomy element form example below creates a check box input form:<br />
v The category identity number is assigned to the "value" attribute in the input fields.<br />
v Check box input fields are created, assigning the "selectedCategories" value to the "name" attribute.<br />
v Hidden input fields are created, assigning the "visibleCategories" value to the "name" attribute.<br />
Building a web content system 381
Element designs<br />
The following code examples are used to develop a basic category selection tree:<br />
Table 49. Header<br />
Code<br />
Details<br />
[PathCmpnt end="/[Library]/[SiteArea]/[<strong>Content</strong>]MOD=AJPECatSelect’<br />
This calls the Category Profile Updater Module.<br />
method=post><br />
"start="<br />
Indent element:<br />
This example uses the indent element tag. This can be used in the navigator and taxonomy elements.<br />
This tag represents an HTML/text string that should be repeated depending on the depth of a tree node<br />
being rendered in these elements.<br />
In the above taxonomy element example, the indent element is used to render and repeat the "." string<br />
dependent on the depth of the node the element design is being applied to. It is possible to offset the<br />
repeat value by assigning an integer value to the "offset" attribute of the tag. For example, A current node<br />
depth of 5 and an offset value of -2 would render the repeat string three times. If the sum of the offset<br />
and the node depth is negative or 0, the repeat string is not rendered.<br />
element designs:<br />
The only difference between the unselected element design and the selected element design is that the<br />
check box input field in the selected element design has the "checked" attribute set.<br />
User access:<br />
If using a taxonomy element, users must be given "Edit" access to their own user item to enable them to<br />
update their selected categories.<br />
Using a URL to update user categories:<br />
You can use a URL as an alternative to using a category selection tree to update a user's selected<br />
categories:<br />
http://host:port/wcm/connect/SiteArea/SelectPageMOD=AJPECatSelect<br />
&redirectURL=/wcm/connect/SiteArea/<strong>Content</strong>&updateSourceProfile=false<br />
&selectedCategories=categoryID1,categoryID3<br />
&visibleCategories=categoryID1,categoryID2,categoryID3,categoryID4<br />
The "selectedCategories" and "visibleCategories" parameters have multiple values which are comma<br />
delimited. The categories specified in "selectCategories" should be a subset of "visibleCategories".<br />
This URL could be used on a page in the form of a button to allow users to update their user categories.<br />
For example, You could create a button that would add the category "News" to a user's selected<br />
categories list.<br />
Using a text element<br />
You use a text element to store a short section of text. To create a text element, you can either add a text<br />
element to an authoring template, site area or content item, or create a text component.<br />
Creating a text component:<br />
You create a text component when you want to reuse a section of text in multiple places in your website.<br />
To create a text component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then click<br />
New > Component > Text.<br />
Text component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
Building a web content system 383
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Specify a location for the text component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Entering text in the component:<br />
You use the text element to store some text in the component.<br />
You use a text element to store larger amounts of text than can be stored in a short text element. No<br />
special processing occurs for this element. web content tags cannot be used in text elements.<br />
Text component properties:<br />
384 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Gratning text component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a text element to an item:<br />
You add a text element to a site area or content item when you want a section of text to be used for a<br />
specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements .<br />
Building a web content system 385
3. Select Text as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The text element is added to your form.<br />
8. Go to the text element you created.<br />
9. Enter text in the text field.<br />
10. Save the item form.<br />
Adding a text element to a template:<br />
You add a text element to an authoring template when you want the text element to be used by a set of<br />
content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements .<br />
3. Select Text as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed in indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The text element is added to your form.<br />
8. Go to the Default <strong>Content</strong> tab.<br />
9. Go to the text element you added.<br />
10. Enter some default text in the text field if required, or leave it blank if you want your content<br />
creators to add text to this field.<br />
11. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Type the number of characters to use in Field Width to set the size of the displayed field. If you<br />
leave this blank, the default field size is used.<br />
d. Type a number into the maximum or minimum characters or words fields to set limits on the<br />
number of characters or words a user can enter in a field.<br />
e. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
f. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
g. Type field-specific help into Field help text. This displays above the element in the content form.<br />
386 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
12. Save the authoring template.<br />
Using a user name element<br />
A user name element displays the name of the current user in a presentation template, component<br />
design, or element design. You can only use a user name element by creating a user name component.<br />
You cannot add a user name element to authoring templates, site areas, or content items.<br />
To create a user name component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and then<br />
click New > Component > User Name.<br />
User name component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Building a web content system 387
Specify a location for the user name component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
Define component designs for different users:<br />
A user name element displays the current user's name in a presentation template, component design, or<br />
element design. You can only use a user name element by creating a user name component. You cannot<br />
add a user name element to authoring templates, site areas, or content items.<br />
1. Enter identification information for the component.<br />
2. Create an anonymous user design. This is used when an anonymous user accesses a website. You<br />
must select "Display Anonymous" to enable the Anonymous user design. If "Display Anonymous" is<br />
not selected, the user name element is not rendered when an anonymous user accesses a website.<br />
3. Create a user name design. This is displayed when an authenticated user accesses a website. You can<br />
use a placeholder tag with a value of "name" in the user name design to display the name of the<br />
current user. For example:<br />
[placeholder tag="name" start="Welcome " end=" to this Site" ]<br />
To display the distinguished name of a user, use tag="dn".<br />
[placeholder tag="dn" start="Welcome " end=" to this Site" ]<br />
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
User name component properties:<br />
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
388 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting user name component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Using a user selection element<br />
You use a user selection element to store a list of users and groups.<br />
Creating a user selection component:<br />
You create a user selection component when you want to reuse a list of selected users and groups in<br />
multiple places in your website.<br />
To create a user selection component, go to Applications > <strong>Content</strong> > web <strong>Content</strong> Management and<br />
then click New > Component > User Selection.<br />
User selection component identification:<br />
Specify identification information for the component, including the name, title and description of the<br />
component.<br />
1. Type the name of the item in the Name field. The name of site areas and content items are used to<br />
construct the URL path for those items. Component names are used when referencing components in<br />
web content tags.<br />
v The value you type can contain only alphanumeric characters (a-z, A-Z, 0-9), spaces, and the<br />
following characters: $-_.!(),<br />
Building a web content system 389
A period "."should not be used in an authoring template name, field name within an authoring<br />
template, a resource collection name or attribute name within a collection if using Personalization<br />
to personalize web content.<br />
v Do not use double-byte or non-ASCII characters.<br />
v You can create different item types with the same name, although this is not recommended.<br />
v You can create items of the same type with the same name so long as the path to the item is<br />
different. For example, you can create two categories with the same name so long as they are saved<br />
under different categories:<br />
– \taxonomyA\categoryA\shoes<br />
– \taxonomyA\categoryB\shoes<br />
– \taxonomyB\categoryB\shoes<br />
v Names are not case sensitive, so you cannot create one item named "News" and another item of the<br />
same item-type named "news" in the same path.<br />
2. Type the title of the item in the Display Title field. The title is the text displayed to users when<br />
viewing a list of items. Unlike the name, titles can use double-byte and non-ASCII characters.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different title for each locale it has<br />
been configured for. The text entered in the display title field is only used if an appropriate text<br />
label is not available from the selected text provider, or if the text provider is not available.<br />
3. Type a brief description of your item in the Description field. The information entered here describes<br />
the purpose of the item.<br />
a. Click Localizations to select a text provider plug-in and key. A text provider is used to provide<br />
localized text that can be used within web content item forms. The key is used to look up a string<br />
from the selected text provider. The text provider displays a different description for each<br />
language it has been configured for. The text entered in the description field is only used if an<br />
appropriate text label is not available from the selected text provider, or if the text provider is not<br />
available.<br />
Select users:<br />
You use the user selection element to select the user names to store in the component.<br />
Click Select Users to select the users to store in the component.<br />
1. Use the Search field to search for users.<br />
2. Select users in the Search Results field and then click Add to add them to the selected list.<br />
3. Users can be removed by selecting them in the Selected Names field and then clicking Remove<br />
Selected Names.<br />
Specify a location for the user selection component:<br />
When creating a component you can specify the location of the component.<br />
Click Select Location to save the item under a different location than the default location.<br />
Note:<br />
v The default location for a new item is based on the current library and view where you clicked the<br />
New button.<br />
v This field is no longer displayed once the new item is saved for the first time.<br />
v Once saved, you need to use the "move" function to change the location of an item.<br />
User selection component properties:<br />
390 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Specify properties for the component, including the list of authors and owners associated with the<br />
component.<br />
1. Click Select Authors to select the users and groups you want to classify as "authors". You can use the<br />
authors of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
2. Click Select Owners to select the users and groups you want to classify as "owners". You can use the<br />
owners of an item as a search or filter parameter.<br />
a. Type in at least two characters in the Search For field in the people picker window and click<br />
Search.<br />
b. Select one or more users or groups in the Search results column and click Add to move them to<br />
the Selected names column.<br />
Granting user selection component access:<br />
Specify the access control settings for the component to determine which users have access to the<br />
component and their level of access.<br />
Users and groups can be assigned the roles of user, contributor, editor, or manager.<br />
To grant users or groups access to an item:<br />
1. Go to the Access section of a form.<br />
2. To allow the item to inherit access roles from a parent item or library, select inherit against a role.<br />
3. To select specific users or groups instead of using inheritance, click either:<br />
a. Grant User Access.<br />
b. Grant Contributor Access.<br />
c. Grant Editor Access.<br />
d. Grant <strong>Manager</strong> Access.<br />
4. To add users or groups, click Add.<br />
a. Select either Users or Groups.<br />
b. Enter text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.<br />
c. Select the required users or groups and then click OK.<br />
5. To remove users or groups, select the users or groups you would like to remove and then click<br />
Remove.<br />
6. To grant access to virtual users, use the drop-down beside the Grant Access buttons. Select from<br />
"anonymous portal user", "all authenticated portal users", "all users", "authors", "owners", and<br />
"creator".<br />
7. Then click OK.<br />
Adding a user selection element to an item:<br />
You add a user selection element to a site area or content item when you want a select list of users and<br />
groups to be used for a specific site area or content item.<br />
Note: You can only add an element to a content item if the manage elements button has been enabled in<br />
the authoring template used by the content item.<br />
1. Open or create a site area or content item.<br />
2. Click Manage Elements .<br />
Building a web content system 391
3. Select User Selection as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text provider<br />
and enter a key to look up a string from the selected text provider. The text provider displays a<br />
different display title for each language it has been configured for. The text entered in the Display<br />
Title field is only used if an appropriate display title is not available from the selected text provider,<br />
or if the text provider is not available.<br />
7. Click OK. The user selection element is added to your form.<br />
8. Go to the user selection element you created and select users and groups.<br />
9. Save the item form.<br />
Adding a user selection element to a template:<br />
You add a user selection element to an authoring template when you want the user selection element to<br />
be used by a set of content items that use the same authoring template.<br />
1. Open or create an authoring template.<br />
2. Click Manage Elements .<br />
3. Select User Selection as the element type.<br />
4. Enter a name. Do not use double-byte and non-ASCII characters.<br />
5. Enter a display title to use as the title of the element displayed indexes and forms.<br />
6. If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different display title for each language it has been configured for. The text entered in the<br />
Display Title field is only used if an appropriate display title is not available from the selected text<br />
provider, or if the text provider is not available.<br />
7. Click OK. The user selection element is added to your form.<br />
8. Go to the use selection element you created. Either select a default list of users and groups, or do<br />
nothing and let your content creators select users and groups when creating content items based on<br />
this authoring template.<br />
9. Click to open the display properties of the element. This is where you define how the element is<br />
displayed on the content item form.<br />
a. To display the element as a required field select Identify this as a required field.<br />
b. To hide a field on the content form from all users select Hide field. You must specify a default<br />
value if the field is a required field.<br />
Note: Administrators and managers can choose to display hidden fields and elements in a<br />
content item by clicking Show hidden fields.<br />
c. Select the users or groups you want to grant edit access to a field or element by clicking Select<br />
Editors.<br />
d. Select the users or groups you want to grant view access to a field or element by clicking Select<br />
Viewers.<br />
e. Type field-specific help into Field help text. This displays above the element in the content form.<br />
If you have created a text provider plug-in for a multi-locale site, you can also select the text<br />
provider and enter a key to look up a string from the selected text provider. The text provider<br />
displays a different help text for each language it has been configured for. The text entered in the<br />
Field help field is only used if an appropriate help text is not available from the selected text<br />
provider, or if the text provider is not available.<br />
10. Save the authoring template.<br />
392 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Working with element designs<br />
You use element designs to define the design and layout of elements.<br />
Inserting an image in an element<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
1. Click<br />
2. To insert an image stored on your file system, click Browse under Upload an image file and select an<br />
image to upload.<br />
a. To upload the image as a new image component, select "Add image to library and grant all users<br />
access".<br />
Note: This option is not available if the workflow feature has been enabled for components.<br />
3. To insert an image component, click Browse under Insert a library image and select an image<br />
component and then click Close.<br />
4. Select from the layout options to determine how the image appears within the text of the field.<br />
5. You can set the following image properties under Advanced options:<br />
Table 53. Image Properties<br />
Property<br />
Border<br />
Width<br />
Height<br />
Alternate text<br />
Description<br />
Define the size of the border to appear around the image. (0 = no border)<br />
Set the width of the image (in pixels). Optional.<br />
Set the height of the image (in pixels). Optional.<br />
Enter the name of the image to display if the browser cannot display the image.<br />
6. Click OK.<br />
Inserting images into a rich text element using Firefox:<br />
Firefox prevents websites accessing local files due to security restrictions. This means that you cannot<br />
view images inserted into a rich text element. See Disabling the security check for information on turning<br />
off this security setting.<br />
Building a web content system 393
Related concepts:<br />
“Page layout” on page 471<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
“Enter the HTML for the presentation template” on page 261<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
“Entering HTML” on page 312<br />
Use the HTML element to store some HTML.<br />
“Defining authoring tools” on page 294<br />
You can format an authoring tool element's look and feel in different ways, including displaying<br />
authoring tools as text-based links, or image based links.<br />
“Defining menu element formatting options” on page 332<br />
Define how search results are displayed for the menu element. This includes defining the sort order for<br />
results, paging options for menu elements with multiple pages of results, and formatting options<br />
controlling how the menu is rendered.<br />
“Defining navigator element design options” on page 337<br />
You use the element design options of a navigator element to determine how to display the results a<br />
navigator.<br />
“Defining a page navigator” on page 347<br />
You use the page navigation element to define a page navigator.<br />
“Defining a Personalization rule” on page 353<br />
You use the Personalization element to define a new personalization rule or select an existing<br />
personalization rule or content spot.<br />
“Using the rich text element” on page 357<br />
You use the rich text element to enter and format text.<br />
“Creating a search results design” on page 369<br />
The search element is used to define the design used to display search results.<br />
“Defining taxonomy component properties” on page 379<br />
You use the taxonomy element to define the properties of the taxonomy component.<br />
“Define component designs for different users” on page 388<br />
A user name element displays the current user's name in a presentation template, component design, or<br />
element design. You can only use a user name element by creating a user name component. You cannot<br />
add a user name element to authoring templates, site areas, or content items.<br />
Inserting a link in an element<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
1. Click<br />
2. To add a link to a URL, either type or paste the URL in the Type a URL field.<br />
Note: The inserted URL is rendered relative to the URL of the site area of the currently rendered<br />
content item. Internet protocols (such as Http://) should be added at the beginning of the inserted<br />
link if an absolute URL is intended to be rendered.<br />
3. To add a link to web content, an image component, a file component or an existing link component,<br />
click Browse <strong>Content</strong> click Browse content.<br />
a. Select the library the item is stored in.<br />
b. Select the item to link to.<br />
c. Click OK<br />
4. To add a link to a document in the current place, click Browse Libraries.<br />
a. Select the library the document is stored in.<br />
394 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
. Select the document to link to.<br />
c. Click OK<br />
5. Select a link display type:<br />
Text You select this to display the link as text.<br />
v Use name of linked item: You select this to use the title of the item being linked to as the<br />
link text.<br />
v Link text: Enter the text to use as the link text. To enter text you must unselect Use name<br />
of linked item.<br />
Image Component<br />
You select this to display the link as an image. Click Select Image to select an image<br />
component to use as the link image.<br />
6. Enter a description of the link by selecting either:<br />
Use description of linked item<br />
You select this to use the description of the item being linked to as the link description.<br />
Enter description<br />
You select this to enter the text to use as the link description. To enter a description you must<br />
unselect Use description of linked item.<br />
7. Enter an optional query string. You can use a query string entered here as a search parameter in a<br />
menu element. For example, you could enter this query string: myquery=shoes You can then specify<br />
"myquery" as a search parameter in a menu element.<br />
8. Select a link target:<br />
Name You select this to specify the name of the link target.<br />
New Window<br />
You select this to open the link in a new browser window.<br />
None Select this to specify no link target.<br />
Parent You select this to open the link in the parent frameset of the frame the link appears in,<br />
replacing the entire frameset.<br />
Self You select this to open the link in the current frame, replacing the content in that frame.<br />
Top You select this to open the link in the current browser window, replacing all frames.<br />
9. Click OK.<br />
Building a web content system 395
Related concepts:<br />
“Page layout” on page 471<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
“Enter the HTML for the presentation template” on page 261<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
“Entering HTML” on page 312<br />
Use the HTML element to store some HTML.<br />
“Defining authoring tools” on page 294<br />
You can format an authoring tool element's look and feel in different ways, including displaying<br />
authoring tools as text-based links, or image based links.<br />
“Defining menu element formatting options” on page 332<br />
Define how search results are displayed for the menu element. This includes defining the sort order for<br />
results, paging options for menu elements with multiple pages of results, and formatting options<br />
controlling how the menu is rendered.<br />
“Defining navigator element design options” on page 337<br />
You use the element design options of a navigator element to determine how to display the results a<br />
navigator.<br />
“Defining a page navigator” on page 347<br />
You use the page navigation element to define a page navigator.<br />
“Defining a Personalization rule” on page 353<br />
You use the Personalization element to define a new personalization rule or select an existing<br />
personalization rule or content spot.<br />
“Using the rich text element” on page 357<br />
You use the rich text element to enter and format text.<br />
“Creating a search results design” on page 369<br />
The search element is used to define the design used to display search results.<br />
“Defining taxonomy component properties” on page 379<br />
You use the taxonomy element to define the properties of the taxonomy component.<br />
“Define component designs for different users” on page 388<br />
A user name element displays the current user's name in a presentation template, component design, or<br />
element design. You can only use a user name element by creating a user name component. You cannot<br />
add a user name element to authoring templates, site areas, or content items.<br />
Inserting a link to remote content<br />
You can insert links to remote content into elements containing a rich text field using the Insert Link to<br />
Remote <strong>Content</strong> button. Only remote content that has been configured remote server access can be<br />
selected using this button.<br />
1. Click Insert Link to Remote <strong>Content</strong>.<br />
2. Enter the URL to the remote content.<br />
3. Enter a user name and password to log in to the remote content with and click Login.<br />
4. Select a document.<br />
5. Depending on the type of remote content you have connected to, you may also be required to specify<br />
whether the link downloads the document directly, or take you to a summary page first.<br />
6. Click OK.<br />
Note: The Insert Link to Remote <strong>Content</strong> function requires a theme using Dojo 1.4.x and will be<br />
disabled if the theme does not include the theme.capability.dojo property in its metadata.properties<br />
files (for example, theme.capability.dojo=1.4.3). If the button is not enabled but is required, ensure that<br />
the Page Builder theme is applied to the portal page containing the authoring portlet. In addition, if the<br />
396 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
feature is disabled when using inline editing, apply the Page Builder theme to the hidden authoring page<br />
and apply the Page Builder No Skin to the reserved authoring portlet instance.<br />
Related tasks:<br />
“Configuring remote server access for links” on page 57<br />
Before you can add links to files and documents stored in remote content management systems into web<br />
content elements, you must configure your server with information about the remote system and the<br />
settings used to handle communication with the system.<br />
“Defining rich text options” on page 218<br />
You can configure <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to use either the standard rich text editor, an advanced rich<br />
text editor, or a third-party rich text editor in rich text fields.<br />
Related information:<br />
“Customizing pages” on page 156<br />
The page customizer contains portlets for editing the layout, content, and appearance of pages. It also<br />
provides the Wires portlet, which allows users to set up connections between cooperative portlets on a<br />
page, and the Locks portlet, which allows users to lock and unlock containers and container content. You<br />
can configure the settings for these portlets to show a certain set of functions, restricting basic users from<br />
performing more advanced tasks.<br />
Inserting element tags<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
This is useful when first designing a presentation template as you can quickly generate element tags for<br />
all the elements used by an authoring template. You can then copy and paste the element tags to the<br />
correct section of your presentation template design. To use the Insert Element Tags button:<br />
1. Open or create a presentation template in edit mode.<br />
2. Go to the presentation template design field and click Insert Element Tags.<br />
3. Select an authoring template.<br />
4. Click OK.<br />
5. The following tags are added to the presentation template design:<br />
v A property tag configured to display the title of the current content item. For example:<br />
[Property type="content" context="current" field="title"]<br />
v Element tags for each element contained in the selected authoring template configured for the<br />
current content item. For example, if your authoring template contained a text element named<br />
"headline" the following element tag would be created:<br />
<br />
[Element context="current" type="content" key="headline"]<br />
Building a web content system 397
Related concepts:<br />
“Page layout” on page 471<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
“Enter the HTML for the presentation template” on page 261<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
“Entering HTML” on page 312<br />
Use the HTML element to store some HTML.<br />
“Defining authoring tools” on page 294<br />
You can format an authoring tool element's look and feel in different ways, including displaying<br />
authoring tools as text-based links, or image based links.<br />
“Defining menu element formatting options” on page 332<br />
Define how search results are displayed for the menu element. This includes defining the sort order for<br />
results, paging options for menu elements with multiple pages of results, and formatting options<br />
controlling how the menu is rendered.<br />
“Defining navigator element design options” on page 337<br />
You use the element design options of a navigator element to determine how to display the results a<br />
navigator.<br />
“Defining a page navigator” on page 347<br />
You use the page navigation element to define a page navigator.<br />
“Defining a Personalization rule” on page 353<br />
You use the Personalization element to define a new personalization rule or select an existing<br />
personalization rule or content spot.<br />
“Using the rich text element” on page 357<br />
You use the rich text element to enter and format text.<br />
“Creating a search results design” on page 369<br />
The search element is used to define the design used to display search results.<br />
“Defining taxonomy component properties” on page 379<br />
You use the taxonomy element to define the properties of the taxonomy component.<br />
“Define component designs for different users” on page 388<br />
A user name element displays the current user's name in a presentation template, component design, or<br />
element design. You can only use a user name element by creating a user name component. You cannot<br />
add a user name element to authoring templates, site areas, or content items.<br />
Importing and exporting HTML<br />
You can import HTML and export HTML to and from presentation templates and elements that store<br />
HTML.<br />
1. To import HTML click Import.<br />
a. Select the file you want to upload and then click Save.<br />
2. To export HTML click Export.<br />
a. Navigate to the directory you would like to export the HTML file to and then click OK.<br />
Note: No warning is given when exporting HTML to an existing file. Care should be taken not to<br />
save over existing HTML files when exporting HTML.<br />
Note:<br />
v <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> automatically imports images within the body of the imported HTML that are<br />
referenced using an "img" tag. <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> does not import other image reference types. For<br />
example, web <strong>Content</strong> Management cannot import an image referenced within a "background" tag. To<br />
import an image in tags other than "img" tags, import the image into a file resource component and<br />
then reference the file resource component within the imported HTML.<br />
398 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> does not verify if the imported HTML or text is valid. For example, if you<br />
import HTML that contains a JavaScript error, then that error appears in your content when previewed.<br />
v The encoding of the current browser window determines the encoding of the imported or exported<br />
HTML. For example if the browser is currently using GB2312 for Chinese, then only GB2312 encoded<br />
HTML can be imported, and on export the exported HTML encoding is GB2312.<br />
v Some HTML editors save HTML with a mixture of UTF-8 and non UTF-8 encodings. You cannot<br />
successfully upload files containing a mixture of UTF-8 and non UTF-8 encodings. Save your HTML<br />
file as UTF-8 only and try importing the HTML.<br />
Using start and end attributes<br />
The start and end attributes are used to wrap the data returned by an <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tag within<br />
other tags, such as HTML. These attributes are not mandatory.<br />
The main advantage to using start and end attributes are that the code you enter in the start and end<br />
attributes are only rendered when the component tag itself is rendered. For example, If a user does not<br />
have access to the content displayed using a component tag, then neither the content nor the start and<br />
end code are displayed. This also applies when a component does not exist or does not contain any<br />
content.<br />
Example:<br />
In this example, start and end attributes are used to display a set of text components in a bullet list. This<br />
could be entered in a presentation template.<br />
<br />
[component name="Component1" start="" end="" ]<br />
[component name="Component2" start="" end="" ]<br />
[component name="Component3" start="" end="" ]<br />
[component name="Component4" start="" end="" ]<br />
<br />
The text components would look like this when rendered:<br />
v Component 1<br />
v Component 2<br />
v Component 3<br />
v Component 4<br />
If a user did not have access to component 3, the rendered list would look like this:<br />
v Component 1<br />
v Component 2<br />
v Component 4<br />
In contrast, you could also add this code to a presentation template:<br />
<br />
[component name="Component1" ]<br />
[component name="Component2" ]<br />
[component name="Component3" ]<br />
[component name="Component4" ]<br />
<br />
If a user did not have access to component 3, the rendered list would then look like this:<br />
v Component 1<br />
v Component 2<br />
v<br />
v Component 4<br />
Building a web content system 399
Although the text component is not rendered, the bullet is still rendered.<br />
Setting parameters to format dates<br />
These parameters are used to set the format of dates.<br />
Table 54. Date formatting parameters<br />
Symbol Meaning Presentation Example<br />
G era designator (Text) AD<br />
y year (Number) 1996<br />
M month in year (Text and Number) July and 07<br />
d day in month (Number) 10<br />
h hour in am/pm (1-12) (Number) 12<br />
H hour in day (0-23) (Number) 0<br />
m minute in hour (Number) 30<br />
s second in minute (Number) 55<br />
S millisecond (Number) 978<br />
E day in week (Text) Tuesday<br />
D day in year (Number) 189<br />
F day of week in month (Number) 2 (2nd Wed in July)<br />
w week in year (Number) 27<br />
W week in month (Number) 2<br />
a am/pm marker (Text) PM<br />
k hour in day (1-24) (Number) 24<br />
K hour in am/pm (0-11) (Number) 0<br />
z time zone (Text) Pacific Standard Time<br />
' escape for text (Delimiter)<br />
'' single quote (Literal)<br />
The number of letters determines format:<br />
Text<br />
v Four or more pattern letters, use full form.<br />
v Less than four, use short or abbreviated form if one exists.<br />
Example: Day/Month/Year<br />
v d,M,y = 3,3,3.<br />
v dd,MM,yy = 03,03,03.<br />
v dd,MMM,yy = 03,Mar,03.<br />
v dd,MMMM,yyyy = 03,March,2003.<br />
Lower and upper case:<br />
v The case of letters used in date and time code is not consistent. For example, "M" for month but "d" for<br />
day and "y" for year.<br />
v Upper and lower case letters can mean different things. For example, "s" for second and "S" for<br />
millisecond.<br />
Incorrect format:<br />
400 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
If a date or time code is entered incorrectly, nothing is returned.<br />
Other characters:<br />
Any characters in the pattern that are not in the ranges of ['a'..'z'] and ['A'..'Z'] is treated as quoted text.<br />
For example, characters like ':', '.', ' ', '#' and '@' appear in the resulting time text even if they are not<br />
embraced within single quotes.<br />
Examples Using the US locale:<br />
Table 55. Example<br />
Format Pattern<br />
Result<br />
"yyyy.MM.dd G 'at' 1996.07.10 AD at 15:08:56 PDT<br />
hh:mm:ss z"<br />
"EEE, MMM d, ''yy" Wed, July 10, '96<br />
"h:mm a"<br />
12:08 PM<br />
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Standard Time<br />
"K:mm a, z"<br />
0:00 PM, PST<br />
"yyyyy.MMMMM.dd GGG 1996.July.10 AD 12:08 PM<br />
hh:mm aaa"<br />
Note on formatting numbers<br />
The Java Number Format Pattern Syntax is used to set the format of numbers.<br />
Table 56. Java Number Format Pattern Syntax<br />
Symbol<br />
Meaning.<br />
0 Represents a digit. Leading and trailing zeros are shown.<br />
# Represents a digit. Leading and trailing zeros are not shown.<br />
. A placeholder for decimal separator.<br />
, A placeholder for grouping separator.<br />
E<br />
Used to separate a mantissa and exponent in exponential formats.<br />
; Used to separate formats.<br />
- The default negative prefix.<br />
% Multiplies the number by 100 and displays it as a percentage.<br />
Multiplies the number by 1000 and displays it per mille.<br />
¤ Displays the number as a currency.<br />
'<br />
Used to quote special characters in a prefix or suffix.<br />
Examples:<br />
For the number 123456.789.<br />
Table 57. Example<br />
Format Pattern<br />
Result<br />
###,###.### 123,456.789<br />
###.## 123456.79<br />
00000000.0000 000123456.7890<br />
Building a web content system 401
Creating web content tags<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Related concepts:<br />
“Page layout” on page 471<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
“Enter the HTML for the presentation template” on page 261<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
“Entering HTML” on page 312<br />
Use the HTML element to store some HTML.<br />
“Defining authoring tools” on page 294<br />
You can format an authoring tool element's look and feel in different ways, including displaying<br />
authoring tools as text-based links, or image based links.<br />
“Defining menu element formatting options” on page 332<br />
Define how search results are displayed for the menu element. This includes defining the sort order for<br />
results, paging options for menu elements with multiple pages of results, and formatting options<br />
controlling how the menu is rendered.<br />
“Defining navigator element design options” on page 337<br />
You use the element design options of a navigator element to determine how to display the results a<br />
navigator.<br />
“Defining a page navigator” on page 347<br />
You use the page navigation element to define a page navigator.<br />
“Defining a Personalization rule” on page 353<br />
You use the Personalization element to define a new personalization rule or select an existing<br />
personalization rule or content spot.<br />
“Using the rich text element” on page 357<br />
You use the rich text element to enter and format text.<br />
“Creating a search results design” on page 369<br />
The search element is used to define the design used to display search results.<br />
“Defining taxonomy component properties” on page 379<br />
You use the taxonomy element to define the properties of the taxonomy component.<br />
“Define component designs for different users” on page 388<br />
A user name element displays the current user's name in a presentation template, component design, or<br />
element design. You can only use a user name element by creating a user name component. You cannot<br />
add a user name element to authoring templates, site areas, or content items.<br />
Creating an alternate design tag<br />
You use an alternate design tag to display a different component based on whether the item being<br />
returned by a menu or navigator is on the current path or not.<br />
This is the format of an alternate design tag:<br />
[alternatedesign highlight=" " normal=" " type=" " start=" " end=" " ]<br />
To create an alternate design tag:<br />
1. Click Insert a Tag from a navigator or menu design field. The Tag Helper dialog opens.<br />
2. Select Alternate Design as the tag type.<br />
402 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
3. Select a component to use when displaying items not on the current path in a navigator or menu<br />
design. This would typically be a text or HTML component containing the code used to display a<br />
navigator or menu result, such as a placeholder tag. This is added to the tag as the normal=" "<br />
parameter.<br />
Note: If you select type="parent" or type="any" in step 5, the highlighted design is used by all the<br />
site areas in the current item path.<br />
4. Select a component to use when displaying items on the current path in a navigator or menu design.<br />
This would typically be a text or HTML component containing the code used to display a navigator<br />
or menu result, such as a placeholder tag. This is added to the tag as the highlight=" " parameter.<br />
5. Select whether to apply the alternate design tag to the current content item, the parent site area, or<br />
any item being returned by a navigator. This is added to the tag as the type=" " parameter.<br />
Note:<br />
v When adding an alternate design to a menu design, only select type="current" or type="any"<br />
because site areas cannot be displayed in menus.<br />
v When adding an alternate design to a navigator design, you should only use type="current" if the<br />
navigator has been configured to display content items.<br />
6. Click OK to add the tag to your navigator design.<br />
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Table 58. Additional tag parameters<br />
Tag parameters<br />
normal=" "<br />
highlight=" "<br />
start=" "<br />
end=" "<br />
Details<br />
To use the library specified in the URL of the current page, use normal="./name"<br />
Note: If you specify normal="./name", the library name does not appear in your<br />
presentation template or element design. The actual path is not resolved until the<br />
item is rendered.<br />
To use the library specified in the URL of the current page, use highlight="./name"<br />
Note: If you specify highlight="./name", the library name does not appear in your<br />
presentation template or element design. The actual path is not resolved until the<br />
item is rendered.<br />
The Start and End attributes are used to wrap the data returned by a tag within other<br />
tags, such as HTML. These attributes are not mandatory.<br />
Displaying different code for content items and site areas:<br />
To display different code when returning content items or site areas in a menu or navigator you need to<br />
use two alternate design tags. One for your content items and one for your site areas. For example:<br />
[AlternateDesign highlight="./currentsiteareacomponent" normal="./othersiteareacomponent" type="sitearea"]<br />
[AlternateDesign highlight="./currentcontentcomponent" normal="./othercontentcomponent" type="content"]<br />
Creating an attribute resource tag<br />
You use the attribute resource tag to define the information returned by a search query.<br />
This is the format of an attribute resource tag:<br />
[attributeResource attributeName="parameter" separator=" " format=" "]<br />
To create an attribute resource tag:<br />
1. Click Insert a Tag from the search component design field. The Tag Helper dialog opens.<br />
2. Select attribute resource as the tag type.<br />
3. Click OK to add the tag to your design.<br />
Building a web content system 403
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Table 59. Additional tag parameters<br />
Tag parameters<br />
Details<br />
attributeName=authoringtemplate The name of the authoring template, if available, that was used to create the content<br />
item.<br />
attributeName=author The name or names of the authors of the content item, if any are defined. If there is<br />
more than one author, then they are rendered with the string specified in the optional<br />
separator attribute between each value.<br />
attributeName=category The categories of the content item if any are defined. If there is more than one<br />
category, then they are rendered with the string specified in the optional separator<br />
attribute between each value.<br />
attributeName=contentid The id of the content item.<br />
attributeName=contentpath The path excluding the server address, port, or servlet context (/wps/wcm) for this<br />
search result.<br />
attributeName=date The value of the date field from the SIAPI result. The format of the date can be<br />
specified by using the optional format attribute. See the Javadoc HTML<br />
documentation for SimpleDateFormat in the Java SDK for details.<br />
attributeName=description The description of the content item.<br />
attributeName=effectivedate The effective date of the content item. The format of the date can be specified by<br />
using the optional format attribute. See the Javadoc HTML documentation for<br />
SimpleDateFormat in the Java SDK for details.<br />
attributeName=expirationdate The expiration date of the content item. The format of the date can be specified by<br />
using the optional format attribute. See the Javadoc HTML documentation for<br />
SimpleDateFormat in the Java SDK for details.<br />
attributeName=keywords The keywords of the content item if any are defined. If there is more than one<br />
keyword, then they are rendered with the string specified in the optional separator<br />
attribute between each value.<br />
attributeName=lastmodifieddate The last modified date of the content item. The format of the date can be specified by<br />
using the optional format attribute. See the Javadoc HTML documentation for<br />
SimpleDateFormat in the Java SDK for details.<br />
attributeName=modifier The name of the last person to modify the content item.<br />
attributeName=name The name of the content item.<br />
attributeName=namelink This assembles a complete link based on the name of the item being returned.<br />
attributeName=owner The name or names of the owners of the content item, if any are defined. If there is<br />
more than one author, then they are rendered with the string specified in the optional<br />
separator attribute between each value.<br />
attributeName=parentcontentpath This is used to return the content path excluding the server address, port, or Servlet<br />
context for the parent content item of this search result. For example: /wps/wcm<br />
attributeName=relevance<br />
attributeName=summary<br />
attributeName=title<br />
attributeName=titlelink<br />
attributeName=url<br />
This parameter is valid when the search results include a link to a file resource<br />
element in the parent content item and is used to give context to the attached file.<br />
When the search result is not for an attached file in a file resource element, this value<br />
is an empty string.<br />
The relevance “score” for this search result from the search engine.<br />
The summary of the content item as generated by Portal Search.<br />
This is the title of a content item.<br />
This assembles a complete link based on the title of the item being returned.<br />
Displays the URL of a content item.<br />
404 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 59. Additional tag parameters (continued)<br />
Tag parameters<br />
format=" "<br />
Details<br />
This parameter is optional and can only be used with some parameter types:<br />
When referencing number or date elements:<br />
In this case, the format is used to specify the display format of dates and<br />
numbers. The following formats can be defined when displaying dates:<br />
v format="DATE_SHORT"<br />
v format="DATE_MEDIUM"<br />
v format="DATE_LONG"<br />
v format="DATE_FULL"<br />
v format="DATE_TIME_SHORT"<br />
v format="DATE_TIME_MEDIUM"<br />
v format="DATE_TIME_LONG"<br />
v format="DATE_TIME_FULL"<br />
v format="TIME_SHORT"<br />
v format="TIME_MEDIUM"<br />
v format="TIME_LONG"<br />
v format="TIME_FULL"<br />
v<br />
format="relative" (The relative date is displayed as either "today",<br />
"yesterday" or the number of days ago.)<br />
You can also set user-defined formats for both dates and numbers:<br />
v “Setting parameters to format dates” on page 400<br />
v “Note on formatting numbers” on page 401<br />
separator=" "<br />
Enter text or code to be used to separate multiple search results. For example:<br />
separator=" - "<br />
Related concepts:<br />
“Displaying search results” on page 367<br />
You use a search element stored in search component to display the results of a search query.<br />
Creating a component tag<br />
The Component tag is used to reference the content of a component within a presentation template or<br />
element design.<br />
This is the format of a component tag:<br />
[Component name=" " context="autofill" format=" " separator=" " compute=" "<br />
htmlencode=" " awareness=" " start=" " end=" " ]<br />
To create a component tag:<br />
1. Click Insert a Tag from a presentation template or element design field. The Tag Helper dialog opens.<br />
2. Select Component as the tag type.<br />
3. Select a component to display using the tag. This is added to the tag as the name=" " parameter:<br />
4. Click OK to add the tag to your design.<br />
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Building a web content system 405
Table 60. Additional tag parameters<br />
Tag parameters<br />
Details<br />
name=" "<br />
To use the library specified in the URL of the current page, use name="./item".<br />
Note: If you specify name="./item", the library name does not appear in your<br />
presentation template or element design. The actual path is not resolved until the<br />
item is rendered.<br />
context="autofill"<br />
This parameter is only used when referencing a Component tag within a<br />
Personalization element design to display the results of a Personalization rule that<br />
searches for components.<br />
start=" "<br />
The start and end attributes are used to wrap the data returned by a tag within other<br />
tags, such as HTML. These attributes are not mandatory.<br />
end=" "<br />
406 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 60. Additional tag parameters (continued)<br />
Tag parameters<br />
Details<br />
format=" "<br />
This parameter is optional and can only be used with some component types:<br />
When referencing an image component:<br />
Use format="url" to only render the URL of an image component.<br />
Use format="tag" to render a complete image tag. The image is displayed on<br />
the rendered page. This is used by default if no format is specified.<br />
When referencing a file resource component:<br />
If your file resource is a file type that can be converted to HTML you can<br />
instead convert the file to HTML and render the converted HTML directly in<br />
your web content using the format="HTML" parameter.<br />
Examples of supported file types include:<br />
v word-processing documents (*.doc, *.odt)<br />
v spreadsheets (*.xls) *<br />
v HTML files (*.htm, *.html)<br />
v Text files (*.txt)<br />
Other file types may also work but you need to test them first.<br />
Maximum Cache Size:<br />
If the converted HTML is larger than the default cache size defined by the<br />
resourceserver.maxCacheObjectSize property in the WCM WCMConfigService<br />
service, each request that contains this file is converted dynamically instead<br />
of using the cached copy. This will impact performance. You may need to<br />
increase the size of the resourceserver.maxCacheObjectSize property to<br />
support large file conversions. Before doing this, you should ensure that<br />
your system has enough memory installed to cope with the increase in cache<br />
size. You could also break up the file into separate files that can be converted<br />
separately instead of increasing the cache size.<br />
When referencing file resource and image components:<br />
v Use format="mimetype" to render the mime type of a file or image. If no<br />
valid mime type can be determined then "www/unknown" is rendered.<br />
v Use format="filename" to render the name of a file or image.<br />
v Use format="size" to render the size of a file or image using the most<br />
appropriate unit. If the resource is smaller than 1K then the size in bytes is<br />
rendered. If the size of the resource is less than 1MB then the size in<br />
kilobytes are rendered. If the size is greater than or equal to 1MB then the<br />
size is rendered in megabytes.<br />
v Use format="size_bytes" to render the size of a file or image in bytes. Only<br />
the numeric value is displayed.<br />
v Use format="size_KB" to render the size of a file or image in kilobytes.<br />
Only the numeric value is displayed.<br />
v Use format="size_MB" to render the size of a file or image in megabytes.<br />
Only the numeric value is displayed.<br />
When referencing a link component:<br />
Use format="url" to render the full URL of a link component. For example:<br />
/wps/wcm/myconnect/Library/SiteArea/<strong>Content</strong><br />
Use format="path" to only render the site path of a link component. For<br />
example:<br />
/Library/SiteArea/<strong>Content</strong><br />
Use format="tag" to render a complete link tag. This is used by default if no<br />
format is specified. For example:<br />
<br />
Building a web content system 407<br />
Note: The URL generated by the link component is fully qualified when<br />
viewed through a portal. If you want to generate a URL that is not fully<br />
qualified use the "noprefix" option instead:
Table 60. Additional tag parameters (continued)<br />
Tag parameters<br />
compute=" "<br />
Details<br />
This is only applicable to menu, navigator, and taxonomy components. You specify<br />
compute="always" when you reference some JSP code within a component design,<br />
and you want that code to be run separately on each result returned by a menu,<br />
navigator and taxonomy component.<br />
For example, if a menu referenced JSP code that used the public DocumentId<br />
getCurrentResultId(); method, you would use compute="always" to make the JSP<br />
code run separately in every result returned by the menu.<br />
If not specified, then compute="once" is used which is the default method for<br />
delivering the results of menu, navigator, and taxonomy components.<br />
htmlencode=" "<br />
If htmlencode="true" the reserved HTML characters in text and short text components<br />
are converted into character entities. For example, '
4. Select the context of the item to retrieve the element from. This is added to the tag as the context=" "<br />
parameter:<br />
Selected<br />
Use this option to select a specific site area or content item. You must then add the name of<br />
the item being referenced using the name=" " parameter. You can select an item by clicking<br />
Select.<br />
Current<br />
Use this option to reference the element from the current site area or content item.<br />
AutoFill<br />
Use this option when the element being referenced is determined by the search parameters of<br />
a menu, navigator, or taxonomy component. If the tag is not used within a menu, navigator,<br />
or taxonomy component, the context will revert to the current item.<br />
a. If you select Selected, click the Select button to select a specific site area or content item.<br />
5. Click Select authoring template to select an appropriate authoring template. Select the element to<br />
display from the list of available elements. This is added to the tag as the key=" " parameter:<br />
6. Click OK to add the tag to your design.<br />
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Table 61. Additional tag parameters<br />
Tag parameters<br />
name=" "<br />
Details<br />
If you specify name="./itemName", the actual path is not resolved until the item is<br />
rendered. This takes slightly longer to resolve than specifying the path to the item.<br />
Building a web content system 409
Table 61. Additional tag parameters (continued)<br />
Tag parameters<br />
Details<br />
format=" "<br />
This parameter is optional and can only be used with some element types:<br />
When referencing an image element:<br />
Use format="url" to only render the URL of an image element.<br />
Use format="tag" to render a complete image tag. The image is displayed on<br />
the rendered page. This is used by default if no format is specified.<br />
When referencing a link element:<br />
Use format="url" to render the full URL of a link element. For example:<br />
/wps/wcm/myconnect/Library/SiteArea/<strong>Content</strong><br />
Use format="path" to only render the site path of a link element. For<br />
example:<br />
/Library/SiteArea/<strong>Content</strong><br />
Use format="tag" to render a complete link tag. This is used by default if no<br />
format is specified. For example:<br />
<br />
Note: The URL generated by the link element is fully qualified when viewed<br />
through a portal. If you want to generate a URL that is not fully qualified<br />
use the "noprefix" option instead:<br />
v format="noprefixurl"<br />
v format="noprefixpath"<br />
v format="noprefixtag"<br />
When referencing a file resource element:<br />
If your file resource is a file type that can be converted to HTML you can<br />
instead convert the file to HTML and render the converted HTML directly in<br />
your web content using the format="HTML" parameter.<br />
Examples of supported file types include:<br />
v word-processing documents (*.doc, *.odt)<br />
v spreadsheets (*.xls) *<br />
v HTML files (*.htm, *.html)<br />
v Text files (*.txt)<br />
Other file types may also work but you need to test them first.<br />
Maximum Cache Size:<br />
If the converted HTML is larger than the default cache size defined by the<br />
resourceserver.maxCacheObjectSize property in the WCM WCMConfigService<br />
service, each request that contains this file is converted dynamically instead<br />
of using the cached copy. This will impact performance. You may need to<br />
increase the size of the resourceserver.maxCacheObjectSize property to<br />
support large file conversions. Before doing this, you should ensure that<br />
your system has enough memory installed to cope with the increase in cache<br />
size. You could also break up the file into separate files that can be converted<br />
separately instead of increasing the cache size.<br />
When referencing file resource and image elements:<br />
v Use format="mimetype" to render the mime type of a file or image. If no<br />
valid mime type can be determined then "www/unknown" is rendered.<br />
v Use format="filename" to render the name of a file or image.<br />
v Use format="size" to render the size of a file or image using the most<br />
410 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
appropriate unit. If the resource is smaller than 1K, then the size in bytes<br />
is rendered. If the size of the resource is less than 1MB, then the size in<br />
kilobytes is rendered. If the size is greater than or equal to 1MB, then the<br />
size is rendered in megabytes.<br />
v Use format="size_bytes" to render the size of a file or image in bytes.<br />
Only the numeric value is displayed.
Table 61. Additional tag parameters (continued)<br />
Tag parameters<br />
link=" "<br />
Details<br />
The link parameter is used to define the type of link created by the element tag:<br />
link="default"<br />
A standard link to an element is created.<br />
link="path"<br />
Contextual path linking is used when rendering this element.<br />
link="contextual"<br />
Contextual content linking is used when rendering this element. If not<br />
applicable, then contextual path linking is used.<br />
Contextual linking:<br />
Contextual linking is used so that when content is linked from another site, the link is<br />
rendered relative to the current site if possible. It can only be used if context=current<br />
or context=autofill.<br />
separator=" "<br />
htmlencode=" "<br />
This is used when referencing an option selection or user selection element. It is used<br />
to define what text or code is rendered between each selection displayed in an option<br />
selection or user selection element. For example, to add a line break between each<br />
selection, you would use separator="". If not defined, a comma is placed<br />
between each selection when rendered.<br />
If htmlencode="true" the reserved HTML characters in text, short text and option<br />
selection elements are converted into character entities. For example, '
v currentPage<br />
v totalPages<br />
v firstItemOnPage<br />
v lastItemOnPage<br />
v totalItems<br />
v itemsPerPage<br />
v unknownPages<br />
The value "unknownPages" is used to display different text when the total number of pages are either<br />
known or unknown. When used you must also use the "knowntext" and "unknowntext" parameters.<br />
4. Click OK to add the tag to your design.<br />
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Table 62. Additional tag parameters<br />
Tag parameters<br />
knowntext=" "<br />
unknowntext=" "<br />
start=" "<br />
end=" "<br />
Details<br />
These parameters are used when value="unknownPages". For example:<br />
[PageInfo value="unknownPages"<br />
knowntext="of" unknowntext="of at least" ]<br />
This could be used with other PageInfo tags to render the following:<br />
v When the total number of pages are known: "Page 2 of 5."<br />
v When the total number of pages are unknown: "Page 2 of at least 5."<br />
The start and end attributes are used to wrap the data returned by a tag within other<br />
tags, such as HTML. These attributes are not mandatory.<br />
Related concepts:<br />
“Page navigation design example” on page 350<br />
This is an example of a design of a page navigation element.<br />
Related tasks:<br />
“Creating a page navigation component” on page 346<br />
You can only use a page navigation element by creating a page navigation component. You cannot add a<br />
page navigation element to authoring templates, site areas or content items.<br />
Creating a path component tag<br />
The path component tag is used to represent certain parts of the URL such as the servlet path, the base<br />
path, or the context path of the current page. This tag can be added to presentation templates, element<br />
designs, and component designs.<br />
This is the format of a path component tag:<br />
[pathcmpnt type=" " start=" " end=" " ]<br />
To create a path component tag:<br />
1. Click Insert a Tag from a presentation template, component, or element design field. The Tag Helper<br />
dialog opens.<br />
2. Select Path Component as the tag type.<br />
3. Select a path type. This is added to the tag as the type=" " parameter:<br />
Base This returns the base section of a URL. For example, http://hostname:8080 This should only<br />
be used when rendering content using a Servlet.<br />
412 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Noprefixbase<br />
The URL generated by the path component is fully qualified when viewed through a portal.<br />
Use this instead of "base" when displaying content in rendering portlets.<br />
Context<br />
This returns the context section of a URL. For example, /ILWWCM This should only be used<br />
when rendering content using a Servlet.<br />
Servlet<br />
This returns the Servlet path of a URL. For example, /ILWWCM/connect This should only be<br />
used when rendering content using a Servlet.<br />
Noprefixservlet<br />
The URL generated by the path component is fully qualified when viewed through a portal.<br />
Use this instead of "servlet" when displaying content in rendering portlets.<br />
Prefix The URL generated by the path component is fully qualified when viewed through a portal.<br />
Use this setting to display the prefix value of web content displayed in a rendering portlet. If<br />
no prefix exists then an empty string is returned.<br />
4. Click OK to add the tag to your design.<br />
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Table 63. Additional tag parameters<br />
Tag parameters<br />
start=" "<br />
end=" "<br />
Details<br />
The start and end attributes are used to wrap the data returned by a tag within other<br />
tags, such as HTML. These attributes are not mandatory.<br />
Creating a placeholder tag<br />
You use a placeholder tag to display metadata within an element or component design.<br />
This is the format of a placeholder tag:<br />
[placeholder tag=" " htmlencode=" " start=" " end=" " ]<br />
To create a placeholder tag:<br />
1. Click Insert a Tag from a component or element design field. The Tag Helper dialog opens.<br />
2. Select Placeholder as the tag type.<br />
3. Select a placeholder tag type. This is added to the placeholder tag as the tag=" " parameter:<br />
Name This is used to display the name of the site area or content being retrieved in a menu or<br />
navigator. This can also be used when you create a user name component, where you can add<br />
a placeholder tag in the design and specify tag="name" to render the name of the user.<br />
Title This is used to display the title of the site area or content being retrieved in a menu or<br />
navigator.<br />
dn This is for when you create a user name component. You can add a placeholder tag in the<br />
design and specify tag="dn" to render the distinguished name of the user.<br />
HREF This inserts a link to the page of the site area or content being retrieved in a menu or<br />
navigator.<br />
noprefixhref<br />
The URLs generated by "HREF" parameter is fully qualified when viewed through a portal.<br />
To generate URLs with no prefix, use the "noprefixhref" parameter instead of the "HREF"<br />
parameter.<br />
Building a web content system 413
NameLink<br />
This is a combination of the name and HREF tags. It assembles a complete link based on the<br />
name of the item being returned.<br />
noprefixnameLink<br />
The URLs generated by "nameLink" parameter is fully qualified when viewed through a<br />
portal. To generate URLs with no prefix, use the "noprefixnameLink" parameter instead of the<br />
"nameLink" parameter.<br />
TitleLink<br />
This is a combination of the title and HREF tags. It assembles a complete link based on the<br />
title of the item being returned.<br />
noprefixtitleLink<br />
The URLs generated by "titleLink" parameter is fully qualified when viewed through a portal.<br />
To generate URLs with no prefix, use the "noprefixtitleLink" parameter instead of the<br />
"titleLink" parameter.<br />
sitepath<br />
This is similar to the HREF placeholder except that it only display the site path of an item's<br />
URL.<br />
For example, an HREF placeholder tag displaying a content item may give you:<br />
v /ILWWCM/connect/metaorg/intranet/press+releases<br />
Whereas the site path will give you:<br />
v /metaorg/intranet/press+releases<br />
For example, an HREF placeholder tag displaying a site area may give you:<br />
v /ILWWCM/connect/metaorg/intranet/<br />
Whereas the site path will give you:<br />
v /metaorg/intranet<br />
Note that the final / slash is not included when the site path is displayed for site areas.<br />
Idnum<br />
This returns the hexadecimal ID value of an item. This can be used when creating static URLs<br />
in menus and navigators. You could hard-code the site area path in a menu or navigator<br />
element design and use the Idnum for each content item being displayed. This would allow<br />
you to display content with a different presentation template (for example, a printer friendly<br />
presentation template) or use different security settings.<br />
Listnum<br />
Displays a single column list of numbered links:<br />
a. First<br />
b. Second<br />
c. Third<br />
Treenum<br />
Displays a hierarchical numbered list:<br />
1.0<br />
1.1<br />
1.2<br />
2.0<br />
2.1<br />
2.2<br />
Paddedtreenum<br />
Similar to Treenum, but the numbers are padded:<br />
414 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
0001<br />
00010001<br />
00010002<br />
000100020001<br />
000100020002<br />
Depth Displays the depth of the currently processed node (in a navigator or menu) as a number. A<br />
top-level node has a depth of 1.<br />
4. If you are using the placeholder tag with an authoring tools element that is rendered by the JSR 286<br />
web content viewer, specify the format attribute to control where the authoring task is performed.<br />
format="tag"<br />
The placeholder is rendered as a URL that opens a pop-up window containing the authoring<br />
portlet. This is the default value if no value is specified.<br />
format="url"<br />
The placeholder is rendered as a URL that redirects the user to a hidden portal page that is<br />
used by the JSR 286 web content viewer for inline editing.<br />
5. Select the type of encoding for the placeholder:<br />
Encode tag output<br />
If selected, the reserved HTML characters in the source is converted into character entities. For<br />
example, '
1. Click Insert a Tag from a component or element design field. The Tag Helper dialog opens.<br />
2. Select Plugin Component as the tag type.<br />
3. Select the plug-in to reference.<br />
4. Select whether to include start and end sections. You can enter additional text between the start and<br />
end sections of the tag including other web content tags such as a component or element tag.<br />
5. Click OK to add the tag to your design.<br />
6. You can then add custom parameters to your tag design. You can specify multiple parameters using<br />
the following format:<br />
paramKey1="paramVal" paramKey2="paramVal" paramKey2="paramVal2"<br />
Examples<br />
Simple tag<br />
To reference a plug-in without specifying any parameters or tag body content:<br />
[plugin:pluginname ]<br />
Simple tag with parameters<br />
To reference a plug-in with parameters but no tag body content:<br />
[plugin:pluginname paramKey1="paramVal" paramKey2="paramVal" paramKey2="paramVal2" ]<br />
Plug-in tag with web content tag as a parameter<br />
[plugin:pluginname paramKey1="[IDCmpnt context=’current’ type=’sitearea’ field=’id’ ]" ]<br />
Note: You must use single quotes within the web content tag being used as a parameter value.<br />
Plug-in tag with body content<br />
To reference a plug-in with parameters and content including a reference to a component:<br />
[plugin:pluginname paramKey1="paramVal" paramKey2="paramVal" paramKey2="paramVal2" ]<br />
This is the tag body content.<br />
<br />
[component name="test"]<br />
<br />
More content.<br />
[/plugin:pluginname ]<br />
Remote action plugin tag example<br />
You can reference remote actions using plugin tags using the following format:<br />
[plugin:RemoteAction action=" " docid=" "<br />
useCurrentSelection=" " dialog=" " useCurrentContext=" "]<br />
action=<br />
This is the remote action to perform.<br />
docid=<br />
This is the document ID of the item to run the remote action against.<br />
useCurrentContext=<br />
If set to true, then the document ID is obtained form the rendering context instead of the<br />
docid attribute.<br />
dialog=<br />
If set to true, when rendered within a JSR 286 web content viewer portlet the remote<br />
action is rendered as a URL that redirects the user to a hidden portal page that is used by<br />
the JSR 286 web content viewer for inline editing.<br />
This is an example of a "new" action to create a content item:<br />
[plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>" pid="com.ibm.workplace.wcm.api.WCM_S<br />
416 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
JSP plugin tag:<br />
Rendering plug-ins can be referenced within JSP code using the following format:<br />
<br />
// Your text.<br />
<br />
The following plug-ins are included in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>:<br />
Table 65. <strong>Content</strong>-ready plugins<br />
Plug-in Tag Description<br />
Tagging [Plugin:tags] This plugin can be added to a<br />
presentation template to provide<br />
tagging support for content.<br />
Rating [Plugin:ratings] This plugin can be added to a<br />
presentation template to provide<br />
rating options for content items.<br />
Ratings can be used to gain user<br />
feedback on an article or related<br />
items.<br />
Site Path<br />
To render a relative path:<br />
[plugin:SitePath]<br />
To render the absolute path:<br />
[plugin:SitePath type="abs"]<br />
The site path plugin renders the site<br />
path of the current content.<br />
Related concepts:<br />
“Using remote actions” on page 696<br />
Remote actions are used to trigger actions from the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application.<br />
Creating a property tag<br />
A property tag is used to display various fields and metadata from content items and site areas.<br />
This is the format of a property tag:<br />
[Property field=" " context=" " type=" " name=" " key=" " format=" " link=" " separator=" "<br />
htmlencode=" " awareness=" " ifEmpty=" " include=" " restrict=" " resolve=" "<br />
start=" " end=" " ]<br />
To create a property tag:<br />
1. Click Insert a Tag from a presentation template or element design field. The Tag Helper dialog opens.<br />
2. Select Property as the tag type.<br />
3. Select a property type. This is added to the tag as the field=" " parameter:<br />
Identification properties:<br />
Name Displays the text entered in the name field of an item.<br />
Title Displays the text entered in the title field of an item.<br />
Description<br />
Displays the text entered in the description field of an item.<br />
Authors<br />
Displays the users and groups selected in the authors field of an item.<br />
Owners<br />
Displays the users and groups selected in the owners field of an item.<br />
Building a web content system 417
ID Displays the GUID of an item.<br />
Authoring template properties:<br />
authtemplateid<br />
Displays the GUID of the authoring template used by the current content item.<br />
authtemplatename<br />
Displays the name of the authoring template used by the current content item.<br />
authtemplatetitle<br />
Displays the display title of the authoring template used by the current content item.<br />
History properties:<br />
lastmodified<br />
Displays the last modified date and the last change message.<br />
lastmodifieddate<br />
Displays the last modified date.<br />
creation<br />
Displays the creation date.<br />
lastmodifier<br />
Displays the name of the user who last modified the item.<br />
creator<br />
Displays the name of the user who created the item.<br />
Profiling properties:<br />
Categories<br />
Displays a list of categories that an item has been profiled with.<br />
Keywords<br />
Displays a list of Keywords that an item has been profiled with.<br />
Access level properties:<br />
User Displays a list of users and groups assigned user access to an item.<br />
Contributor<br />
Displays a list of users and groups assigned contributor access to an item.<br />
Editor Displays a list of users and groups assigned editor access to an item.<br />
<strong>Manager</strong><br />
Displays a list of users and groups assigned manager access to an item.<br />
Workflow Properties:<br />
Status Displays the workflow status of an item.<br />
Workflow<br />
Displays the selected workflow of an item.<br />
Current Stage<br />
Displays the workflow stage that the item is currently in.<br />
Publish Date<br />
Displays the date and time selected in the publish date field of an item.<br />
Expiry Date<br />
Displays the date and time selected in the expiry date field of an item.<br />
General Date One<br />
Displays the date and time selected in the general date one field of an item.<br />
418 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
General Date Two<br />
Displays the date and time selected in the general date two field of an item.<br />
Additional Viewers<br />
Displays the names of any additional viewers selected for an item.<br />
4. Select a source item type. This is added to the tag as the type=" " parameter:<br />
<strong>Content</strong><br />
Use this option to display a property from the current content item.<br />
Parent Use this option to display a property from the parent site area of the current content item<br />
Top Use this option to display a property from the top site area in the current path of the current<br />
content item.<br />
5. Select the context of the item display a property from. This is added to the tag as the context=" "<br />
parameter:<br />
Selected<br />
Use this option to select a specific site area or content item. You must then add the name of<br />
the item being referenced using the name=" " parameter. You can select an item by clicking<br />
Select.<br />
Current<br />
Use this option to display a property from the current site area or content item.<br />
AutoFill<br />
Use this option when the item is determined by the search parameters of a menu, navigator,<br />
or taxonomy component. If the tag is not used within a menu, navigator, or taxonomy<br />
component, the context will revert to the current item.<br />
a. If you select Selected, click the Select button to select a specific site area or content item.<br />
6. Click OK to add the tag to your design.<br />
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Table 66. Additional tag parameters<br />
Tag parameters<br />
name=" "<br />
Details<br />
You must specify the name of the item being referenced if the context="selected". If<br />
you specify name="./itemName", the actual path is not resolved until the item is<br />
rendered. This takes slightly longer to resolve than specifying the path to the item.<br />
Building a web content system 419
Table 66. Additional tag parameters (continued)<br />
Tag parameters<br />
Details<br />
format=" "<br />
This parameter is optional and can only be used with some element types:<br />
When field="ID":<br />
v format="id" displays the plain ID. If not specified, this format is used by<br />
default.<br />
v format="uri" outputs a wcm:oid: style URI.<br />
When referencing user details:<br />
When formatting user details, the format parameter is used to define which<br />
LDAP parameter to use when displaying user details. For example:<br />
v format="cn" is used to display the common name.<br />
v format="dn" is used to display the distinguished name.<br />
When field="categories":<br />
When field="categories" the format parameter is used to determine the<br />
output format.<br />
v format="title" displays a list of category titles.<br />
v format="uri" displays a wcm:oid: style URI for each listed category.<br />
Maximum character length:<br />
You can also specify a maximum number of characters to display by using<br />
this format:<br />
v format="length:number_of_characters"<br />
For example, to display a maximum of ten characters you would specify the<br />
following parameter:<br />
v format="length:10"<br />
When referencing number or date elements:<br />
In this case, the format is used to specify the display format of dates and<br />
numbers. The following formats can be defined when displaying dates:<br />
v format="DATE_SHORT"<br />
v format="DATE_MEDIUM"<br />
v format="DATE_LONG"<br />
v format="DATE_FULL"<br />
v format="DATE_TIME_SHORT"<br />
v format="DATE_TIME_MEDIUM"<br />
v format="DATE_TIME_LONG"<br />
v format="DATE_TIME_FULL"<br />
v format="TIME_SHORT"<br />
v format="TIME_MEDIUM"<br />
v format="TIME_LONG"<br />
v format="TIME_FULL"<br />
v<br />
format="relative" (The relative date is displayed as either "today",<br />
"yesterday" or the number of days ago.)<br />
You can also set user-defined formats for both dates and numbers:<br />
v “Setting parameters to format dates” on page 400<br />
v “Note on formatting numbers” on page 401<br />
separator=" "<br />
This is used when referencing a property that returns multiple results. For example,<br />
to add a line break between each result, you would use separator="" .Ifnot<br />
defined, a comma is placed between each result when rendered.<br />
420 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 66. Additional tag parameters (continued)<br />
Tag parameters<br />
Details<br />
htmlencode=" "<br />
If htmlencode="true" any reserved HTML characters is converted into character<br />
entities. For example, '
Table 66. Additional tag parameters (continued)<br />
Tag parameters<br />
Details<br />
resolve=" "<br />
This determines which type of access to resolve to when rendering access level<br />
properties:<br />
start=" "<br />
end=" "<br />
none<br />
virtual<br />
Only users and groups selected in the access section of an item is resolved.<br />
This is a combination of User, Workflow, and Administrator defined access<br />
settings. Virtual users are not resolved. If the field parameter is used, only<br />
users and groups directly selected for a role type is resolved. For example, a<br />
user assigned "contributor" access would not be resolved if field="user".<br />
Only users and groups selected in the access section of an item, including<br />
virtual users, is resolved. This is a combination of User, Workflow, and<br />
Administrator defined access settings. If the field parameter is used, only<br />
users and groups directly selected for a role type is resolved. For example, a<br />
user assigned "contributor" access would not be resolved if field="user".<br />
inherited<br />
All inherited users and groups plus users and groups selected in the access<br />
section of an item, including virtual users, is resolved. This is a combination<br />
of Inherited, User, Workflow, and Administrator defined access settings. If<br />
the field parameter is used, only users and groups that are either directly<br />
selected for a role type or that inherit a role type is resolved. For example, a<br />
user assigned "contributor" access would not be resolved if field="user".<br />
inheritedonly<br />
Only inherited users and groups, including virtual users, are resolved. If the<br />
field parameter is used, only users and groups that directly inherit a role<br />
type is resolved. For example, a user that inherits "contributor" access would<br />
not be resolved if field="user".<br />
effective<br />
Only users and groups selected in the access section of an item, including<br />
virtual users, is resolved. This is a combination of User, Workflow, and<br />
Administrator defined access settings. If the field parameter is used, access<br />
roles are cascaded down so that users and groups assigned roles higher than<br />
the role selected using the field parameter is resolved. For example, if<br />
field="user", contributors, editors, and managers are also resolved.<br />
all<br />
All inherited users and groups plus users and groups selected in the access<br />
section of an item, including virtual users, is resolved. This is a combination<br />
of Inherited, User, Workflow, and Administrator defined access settings. If<br />
the field parameter is used, access roles are cascaded down so that users and<br />
groups assigned roles higher than the role selected using the field parameter<br />
is resolved. For example, if field="user", contributors, editors, and managers<br />
are also resolved.<br />
The start and end attributes are used to wrap the data returned by a tag within other<br />
tags, such as HTML. These attributes are not mandatory.<br />
Double-byte character sets:<br />
Not all double-byte character sets support extended ASCII. To use tags such as " " you need to<br />
replace "&" with "&".<br />
For example:<br />
separator="&nbsp;&nbsp;"<br />
422 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Creating a style element tag<br />
The style element tag is used to reference a style sheet component selected as the default style sheet in an<br />
authoring template, or a style sheet component referenced within a site area or content item using a<br />
component reference.<br />
Note: To directly reference a specific style sheet component, use a component tag.<br />
This is the format of a style element tag:<br />
[StyleElement source=" " name=" " start=" " end=" " ]<br />
To create a style element tag:<br />
1. Click Insert a Tag from a presentation template or element design field. The Tag Helper dialog opens.<br />
2. Select Style sheet as the tag type.<br />
3. Select a source type. This is added to the tag as the source=" " parameter:<br />
Template<br />
This option uses the style sheet specified in the authoring template of the current content<br />
item. You do not specify a name when using template as the source. To use this option, you<br />
must have selected a default style sheet in the related authoring template.<br />
Path This option uses the first style sheet element matching the name, specified in the name<br />
parameter, from either the current site area or content item in that order. To add a style sheet<br />
to a site area or content item, you need to use a component reference element and select a<br />
style sheet component as the component reference.<br />
a. If a source type of "path" is selected, you must also select a content item and then select the<br />
component reference element that is used to reference the stylesheet.<br />
4. Click OK to add the tag to your design.<br />
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Table 67. Additional tag parameters<br />
Tag parameters<br />
start=" "<br />
end=" "<br />
Details<br />
The start and end attributes are used to wrap the data returned by a tag within other<br />
tags, such as HTML. These attributes are not mandatory.<br />
Creating a URL tag<br />
The URLCmpnt tag is used to generate a URL to a site area or content item.<br />
This is the format of a URLCmpnt tag:<br />
[URLCmpnt mode=" " context=" " type=" " name=" " pageDesign=" " portalTarget" " usedIn=" " start=" " end=" " htmlencode="<br />
To create a URLCmpnt tag:<br />
1. Click Insert a Tag from a presentation template or element design field. The Tag Helper dialog opens.<br />
2. Select URL as the tag type.<br />
3. Select a mode type. This determines the type of URL that is generated. This is added to the tag as the<br />
mode=" " parameter:<br />
portal This generates a URL to a portal page. This is used when displaying web content within a<br />
web content viewer portlet.<br />
standAlone<br />
This generates a URL to a web page. This is used when displaying web content using the <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> servlet.<br />
Building a web content system 423
current<br />
This generates a URL based on the format of the current request. For example, if the current<br />
request is a <strong>Web</strong>Sphere Portal request, then mode="portal" is used.<br />
4. Select a source item type. This is added to the tag as the type=" " parameter:<br />
<strong>Content</strong><br />
Use this option to display the URL of the current content item.<br />
Parent Use this option to display the URL of the parent site area of the current content item<br />
Top Use this option to display the URL of the top site area in the current path of the current<br />
content item.<br />
5. Select the context of the item to retrieve the URL from. This is added to the tag as the context=" "<br />
parameter:<br />
Selected<br />
Use this option to select a specific site area or content item. You must then add the name of<br />
the item being referenced using the name=" " parameter. You can select an item by clicking<br />
Select.<br />
Current<br />
Use this option to retrieve the URL from the current site area or content item.<br />
AutoFill<br />
Use this option when the URL being retrieved is determined by the search parameters of a<br />
menu, navigator, or taxonomy component. If the tag is not used within a menu, navigator, or<br />
taxonomy component, the context will revert to the current item.<br />
a. If you select Selected, click the Select button to select a specific site area or content item.<br />
b. If you select Current or Autofill, click Select authoring template to select an appropriate<br />
authoring template.<br />
6. If you want to render the content using an alternative presentation templates, click presentation<br />
template. This is added to the tag as the pageDesign=" " parameter.<br />
7. Select Portal Page Target if you want to render the content on a specific Portal page. You can enter<br />
the compound name of the URL mapping or friendly URL of the target portal page in the tag after<br />
you add the tag to your design. This can only be used if mode="current" or mode="portal". This is<br />
added to the tag as the portalTarget=" " parameter.<br />
8. Click OK to add the tag to your design.<br />
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Table 68. Additional tag parameters<br />
Tag parameters<br />
name=" "<br />
usedIn=" "<br />
htmlencode=" "<br />
Details<br />
If you specify name="./itemName", the actual path is not resolved until the item is<br />
rendered. This takes slightly longer to resolve than specifying the path to the item.<br />
If you want to use the URL in JavaScript, you must add the parameter<br />
usedIn="script" to the tag.<br />
If htmlencode="true" the reserved HTML characters in text, short text and option<br />
selection elements are converted into character entities. For example, '
Indenting element designs<br />
You use an indent tag to format element designs that require results to be indented.<br />
This is the format of a IndentCmpnt tag:<br />
[indentcmpnt repeat=" " offset=" " start=" " end=" " ]<br />
To create a IndentCmpnt tag:<br />
1. Click Insert a Tag from a presentation template or element design field. The Tag Helper dialog opens.<br />
2. Select Indent as the tag type.<br />
3. Select an offset level. The offset is used to determine how many times the repeat string is used for<br />
each indent. The offsets used are based on the number of nodes of the hierarchical content being<br />
displayed. For example, A current node depth of 5 and an offset value of -2 would render the repeat<br />
string three times. If the sum of the offset and the node depth is negative or 0, the repeat string is not<br />
rendered.<br />
4. Click OK to add the tag to your design.<br />
Once you have added the tag to your design, you can also add the following parameters to the tag:<br />
Table 69. indent tag parameters<br />
Tag parameter<br />
repeat=" "<br />
start=" "<br />
end=" "<br />
Description<br />
Enter the text to repeat at the beginning of the indent.<br />
The start and end attributes are used to wrap the data returned by a tag within other<br />
tags, such as HTML. These attributes are not mandatory.<br />
Double-byte character sets:<br />
Not all double-byte character sets support extended ASCII. To use tags such as " " you need to<br />
replace "&" with "&".<br />
For example:<br />
[indentcmpnt offset="0" repeat="&nbsp;&nbsp;"]<br />
Rendering plug-ins provided with <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
The default <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> installation provides a number of rendering plug-ins. You can use<br />
them to enhance web content with features such as tagging and rating. The rendering plug-ins are shown<br />
as selection options when you use the tag helper to insert a plug-in component tag.<br />
Tagging<br />
Add this plug-in to a presentation template to provide tagging support for content. For<br />
information about how to use this plug-in, see Adding a tagging widget to web content.<br />
Rating<br />
Add this plug-in to a presentation template to provide rating options for content items. You can<br />
use ratings to gain user feedback on articles or related items. For information about how to use<br />
the ratings plug-in, see Adding a rating widget to web content.<br />
Site Path<br />
The site path plug-in renders the site path of the current content. This plug-in takes the following<br />
attribute:<br />
type = rel | abs<br />
This attributes defines whether the path is relative to the current library or not. If you<br />
omit this attribute, it defaults to rel and uses the relative path.<br />
Building a web content system 425
Examples:<br />
[plugin:SitePath type="abs"]<br />
This renders the absolute path.<br />
[plugin:SitePath]<br />
This renders a relative path.<br />
RemoteAction plug-in<br />
The Remote Action plug-in enables you to trigger actions that are typically performed with the<br />
authoring portlet, such as creating and editing items and generating views. For information about<br />
how to use this plug-in, see Using remote actions.<br />
Related concepts:<br />
“Using remote actions” on page 696<br />
Remote actions are used to trigger actions from the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application.<br />
Related tasks:<br />
“Adding a rating widget to web content” on page 468<br />
You can add a rating widget to a content item by adding a [Plugin:ratings] component to your<br />
presentation template. By default the plug-in component is rendered using the RatingWidgetDesign<br />
design, which is included in the web content library <strong>Web</strong> Resources v70, or you can create your own<br />
design.<br />
“Adding a tagging widget to web content” on page 467<br />
You can add a tagging widget to a content item by adding a [Plugin:tags] component to your<br />
presentation template. By default the plug-in component is rendered using the TaggingWidgetDesign<br />
design, which is included in the web content library <strong>Web</strong> Resources v70, or you can create your own<br />
design.<br />
Previewing items<br />
Different item items are previewed in different ways.<br />
Previewing an authoring template<br />
Preview the authoring template to view how the content form appears to the user. You can also test any<br />
settings that need validation when the form is submitted, such as a valid workflow or required element<br />
values.<br />
1. When editing the authoring template, click Preview.<br />
2. If you want to preview the content form as a user that is different from the one you are using to edit<br />
the template, change the user before proceeding.<br />
This is important if the user working with a content form generated from this template is not likely to<br />
have the same access control levels or authorizations as the user used to edit the template.<br />
a. Click Select Preview User.<br />
b. Search for the user (or group) that you want to use to preview the content form.<br />
c. Select the user, and click OK.<br />
3. If you added customized help text to the form, click Show help to display the help.<br />
4. Enter sample values for any of the elements in the form.<br />
5. Click Validate.<br />
The validation process simulates the processing that takes place when the content form is submitted.<br />
For example, if you have designated a mandatory field to be hidden but have not specified a default<br />
value for the field, the validation process displays an error. If active content filtering has been enabled<br />
for your site, you can also use the validate function to test active content filtering.<br />
6. Click Done to close the preview.<br />
7. If you encountered any validation errors due to the authoring template design, correct the errors, and<br />
preview the template again.<br />
426 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Managing items<br />
You can use features, such as version control and workflows, to manage the items used to develop web<br />
content.<br />
Working with draft items<br />
Creating a draft of an item allows you to work on changes to that item without changing the published<br />
version of the item. Draft items can either be stand-alone items, or form part of a workflow. Once the<br />
changes are completed, you can choose to either publish the item, or discard the changes by cancelling<br />
the draft. You can create multiple drafts of a single item.<br />
Note: Draft items are only displayed in the Authoring Portlet and are not rendered within the published<br />
website.<br />
Working with draft items not using a workflow<br />
You can directly create a draft of any non-workflowed items.<br />
Creating a draft item<br />
To create a new draft item:<br />
v open a non-workflowed published item in edit mode and click Save as Draft. This will create a<br />
draft copy of the published item without removing the published item from the live site.<br />
v open a non-workflowed published item in read mode and click Create Draft. This will create a<br />
draft copy of the published item without removing the published item from the live site.<br />
v open a non-workflowed published item and click Change to Draft. This will change the state<br />
of the item from "published" to "draft" and the item will no longer be visible on the live site.<br />
You cannot change an item to draft if it is being referenced by any other items.<br />
Saving a draft item<br />
Once the draft has been created:<br />
v to save the draft item, click Save, Save and Close or Save and Read.<br />
v to publish the draft item, click Save and publish.<br />
Once saved, your draft item will be displayed along side other items in your item views but will<br />
be displayed with a status of draft. If you have created a draft of a previously published item,<br />
both the draft and published versions of your item will appear in your item views. You can edit<br />
and save drafts multiple times before publishing your changes.<br />
Publishing a draft item<br />
Any changes made to a draft item will not appear in the live site until you publish the draft item.<br />
When your draft is ready to publish you can either:<br />
v select an item in a view and click Publish item.<br />
v open an item in read-mode and click Publish item.<br />
v open an item in edit-mode and click Save and publish.<br />
Canceling a draft<br />
Cancelling a draft is essentially the same as deleting a draft as all the changes made to the item<br />
are discarded. To cancel a draft open a draft item and click Cancel draft. You need editor access<br />
or above to cancel a draft of items not using a workflow.<br />
Working with draft items in a workflow<br />
Within a workflow, items have a status of draft until they enter a workflow stage where a publish action<br />
is executed. Draft items in a workflow are displayed along side other items in your item views but are<br />
displayed with a status of draft. If you have created a draft of a previously published item, both the draft<br />
Building a web content system 427
and published versions of your item will appear in your item views. You can edit and save drafts<br />
multiple times before submitting your draft to the next stage in the workflow.<br />
You use the following buttons to work with items during a workflow.<br />
Table 70. Approving and declining access controls.<br />
Note: This table assumes contributor access or higher to the library.<br />
Actions Function Item Access<br />
Approve<br />
When joint approval is set, Approver or administrator.<br />
button is used to approve<br />
an item in the All Items<br />
and My Items views.<br />
Cancel draft<br />
Decline<br />
Next Stage<br />
Previous Stage<br />
Process now<br />
This removes a draft item<br />
from a workflow altogether.<br />
This displays only after an<br />
item has been published<br />
and a new draft has been<br />
created.<br />
Used when an item is<br />
rejected during a workflow.<br />
Executes any actions<br />
defined in the reject stage,<br />
and then sends the item<br />
back to the first stage of a<br />
workflow.<br />
Used to approve an item<br />
and send it to the next<br />
stage in a workflow.<br />
The previous stage button<br />
returns an item to the stage<br />
previous to the current<br />
stage. When an item is<br />
moved to the previous<br />
stage, the entry workflow<br />
actions on the previous<br />
stage are executed, but the<br />
exit workflow actions on<br />
the current stage are not.<br />
Manually processes an item<br />
if its status is pending. All<br />
actions in the stage are<br />
processed.<br />
<strong>Manager</strong> access or higher.<br />
Approver access.<br />
Approver access.<br />
<strong>Manager</strong> access or higher,<br />
or on workflow stages that<br />
have been configured to<br />
enable approvers access to<br />
the previous stage button.<br />
Administrator access<br />
Role access to library<br />
resources<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Not required.<br />
Disabling multiple drafts:<br />
When creating a workflow you can choose to disable the creation of multiple drafts for any item using<br />
that workflow. This allows you to assign a workflow to items where you only want to manage one<br />
change at a time.<br />
Working with draft items in a project<br />
You use draft items within a project in the same way you use drafts outside of a project, regardless of<br />
whether the draft item is participating in a workflow, or not participating in a workflow. The only<br />
difference being that when the draft is ready to be published, it will remain in a pending state until all<br />
items in the project are ready to be published. Draft items in a project are displayed alongside other items<br />
428 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
in your item views, but are displayed with a status of draft. If you have created a draft of a previously<br />
published item, both the draft and published versions of your item will appear in your item views.<br />
Managing drafts<br />
There are various ways you can manage your draft items:<br />
v If viewing a published item with only one draft item, you can view the draft item by clicking Go to<br />
draft.<br />
v When viewing a draft item, you can open the published version of an item by clicking Go to<br />
published.<br />
v If a published item has more than one draft, the Manage Drafts button is displayed on both the<br />
published and draft versions of an item. You click Manage Drafts to view a list of drafts for the<br />
current item. All drafts are displayed, but you can only read, edit and cancel drafts that you have<br />
sufficient access to.<br />
Working with published items<br />
Items are not visible on a website until they are published. Once published, an item can be expired, or<br />
returned to a draft state.<br />
Working with published items not using a workflow<br />
To create a new draft item:<br />
v open a non-workflowed published item in edit mode and click Save as Draft. This will create a draft<br />
copy of the published item without removing the published item from the live site.<br />
v open a non-workflowed published item and click Change to Draft. This will change the state of the<br />
item from "published" to "draft" and the item will no longer be visible on the live site.<br />
Working with published items using a workflow<br />
You use the following buttons to work with items during a workflow.<br />
Table 71. Published items functions and access controls.<br />
Note: This table assumes contributor access or higher has been set on the library.<br />
Actions Function Item Access<br />
Approve<br />
When joint approval is set, Approver or administrator.<br />
button is used to approve<br />
an item in the All Items<br />
and My Items views.<br />
Create draft<br />
Next Stage<br />
Creates a draft copy of a<br />
published item. The<br />
published item is locked on<br />
the rendered site, while a<br />
copy of the item is sent<br />
through a workflow. Once<br />
the draft item has been<br />
approved for publishing, it<br />
replaces the published item.<br />
Used to approve an item<br />
and send it to the next<br />
stage in a workflow.<br />
<strong>Manager</strong> access or higher,<br />
or approver access.<br />
Approver access.<br />
Role access to library<br />
resources<br />
Contributor access or<br />
higher to the item type.<br />
Editor access or higher to<br />
the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Building a web content system 429
Table 71. Published items functions and access controls (continued).<br />
Note: This table assumes contributor access or higher has been set on the library.<br />
Actions Function Item Access<br />
Previous Stage<br />
The previous stage button<br />
returns an item to the stage<br />
previous to the current<br />
stage.<br />
Process now<br />
v<br />
v<br />
If the current stage<br />
contains a publish action,<br />
the item status will<br />
revert to draft when<br />
returned to the previous<br />
stage. The published<br />
version is removed and<br />
is no longer visible on<br />
the live site.<br />
When an item is moved<br />
to the previous stage, the<br />
entry workflow actions<br />
on the previous stage are<br />
executed, but the exit<br />
workflow actions on the<br />
current stage are not.<br />
Note: The previous stage<br />
button is not enabled:<br />
v<br />
v<br />
on published items that<br />
have children.<br />
on published items<br />
where a draft already<br />
exists.<br />
Manually processes an item<br />
if its status is pending. All<br />
actions in the stage are<br />
processed.<br />
<strong>Manager</strong> access or higher,<br />
or on workflow stages that<br />
have been configured to<br />
enable approvers access to<br />
the previous stage button.<br />
Administrator access<br />
Role access to library<br />
resources<br />
Contributor access or<br />
higher to the item type.<br />
Not required.<br />
430 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 71. Published items functions and access controls (continued).<br />
Note: This table assumes contributor access or higher has been set on the library.<br />
Actions Function Item Access<br />
Restart workflow<br />
Sends an item back to the <strong>Manager</strong> access or higher,<br />
first stage of a Workflow or approver access.<br />
without activating the reject<br />
stage. The item no longer<br />
appears as published and is<br />
removed from the rendered<br />
site.<br />
Note: When you restart a<br />
workflow, any actions set to<br />
run on entering the first<br />
stage will not be executed.<br />
Note: When you restart a<br />
workflow with multiple<br />
stages, a draft item is<br />
created in the first stage. In<br />
addition to this, the item<br />
will also appear in the<br />
deleted items view so that<br />
the last published version<br />
of the item can be restored.<br />
Once the draft is<br />
republished, the version in<br />
the deleted items view is<br />
removed.<br />
Note: Items with<br />
references cannot be<br />
restarted in the workflow.<br />
References includes link<br />
components, link elements,<br />
and embedded links in rich<br />
text or HTML fields. You<br />
will need to remove these<br />
references before you can<br />
restart the workflow of the<br />
item. Use the view<br />
references dialog to see if<br />
references exist. This<br />
restriction is to prevent<br />
broken links appearing in<br />
your site.<br />
Role access to library<br />
resources<br />
Editor access or higher to<br />
the item type.<br />
Working with expired items<br />
Expired items are items that were once published but have since been removed from the live website.<br />
Only items that use a workflow can be expired.<br />
You use the following buttons to work with expired items within a workflow.<br />
Building a web content system 431
Table 72. Expired items functions and access controls.<br />
Note: This table assumes contributor access or higher to the library.<br />
Actions Function Item Access<br />
Approve<br />
When joint approval is set, Approver or administrator.<br />
button is used to approve<br />
an item in the All Items<br />
and My Items views.<br />
Create draft<br />
Next Stage<br />
Previous Stage<br />
Process now<br />
Creates a draft copy of an<br />
expired item.<br />
Used to approve an item<br />
and send it to the next<br />
stage in a workflow. For<br />
expired items, additional<br />
workflow stages may<br />
include further actions that<br />
will be run after an item<br />
has been expired.<br />
The previous stage button<br />
returns an item to the stage<br />
previous to the current<br />
stage.<br />
v<br />
v<br />
If the current stage<br />
contains an expire action,<br />
the item status will<br />
revert to published when<br />
returned to the previous<br />
stage and will be visible<br />
on the live site.<br />
When an item is moved<br />
to the previous stage, the<br />
entry workflow actions<br />
on the previous stage are<br />
executed, but the exit<br />
workflow actions on the<br />
current stage are not.<br />
Manually expires an item if<br />
its status is pending<br />
expired. All actions in the<br />
stage are processed.<br />
<strong>Manager</strong> access or higher,<br />
or approver access.<br />
Approver access.<br />
<strong>Manager</strong> access or higher,<br />
or on workflow stages that<br />
have been configured to<br />
enable approvers access to<br />
the previous stage button.<br />
Administrator access<br />
Role access to library<br />
resources<br />
Contributor access or<br />
higher to the item type.<br />
Editor access or higher to<br />
the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Not required.<br />
432 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 72. Expired items functions and access controls (continued).<br />
Note: This table assumes contributor access or higher to the library.<br />
Actions Function Item Access<br />
Restart workflow<br />
Sends an item back to the <strong>Manager</strong> access or higher,<br />
first stage of a Workflow or approver access.<br />
without activating the reject<br />
stage. The item no longer<br />
appears as published and is<br />
removed from the rendered<br />
site.<br />
Note: When you restart a<br />
workflow, any actions set to<br />
run on entering the first<br />
stage will not be executed.<br />
Note: When you restart a<br />
workflow with multiple<br />
stages, a draft item is<br />
created in the first stage. In<br />
addition to this, the item<br />
will also appear in the<br />
deleted items view so that<br />
the last published version<br />
of the item can be restored.<br />
Once the draft is<br />
republished, the version in<br />
the deleted items view is<br />
removed.<br />
Note: Items with<br />
references cannot be<br />
restarted in the workflow.<br />
References includes link<br />
components, link elements,<br />
and embedded links in rich<br />
text or HTML fields. You<br />
will need to remove these<br />
references before you can<br />
restart the workflow of the<br />
item. Use the view<br />
references dialog to see if<br />
references exist. This<br />
restriction is to prevent<br />
broken links appearing in<br />
your site.<br />
Role access to library<br />
resources<br />
Editor access or higher to<br />
the item type.<br />
Managing authoring templates<br />
From time to time, you may need to reapply or change the authoring templates assigned to a set of<br />
content items.<br />
Changing the authoring template for a content item:<br />
You can change the authoring template associated with a content item by applying another authoring<br />
template to the content item. To accommodate differences between the templates, you can add or remove<br />
elements and specify how elements are processed.<br />
1. Display a list of content items by following one of the following paths in the navigator.<br />
v <strong>Content</strong> > By Site Area<br />
v <strong>Content</strong> > By Title<br />
Building a web content system 433
v <strong>Content</strong> > By Category<br />
2. Select the content item for which you want to change the authoring template.<br />
3. Click More Actions > Apply Template.<br />
4. Select the authoring template you would like to associate with the content item.<br />
5. Select any of the following options:<br />
v Add new elements: If the new authoring template contains elements that do not exist in the<br />
content item, these elements are added to the converted content item.<br />
v Remove existing elements: If the content item contains elements that do not exist in the authoring<br />
template being applied, those elements are removed during the conversion.<br />
v Replace elements that have changed type (with auto data conversion): Replace elements in the<br />
content item with elements of the same name from the authoring template being applied. If the two<br />
elements are of different types, the data is automatically converted to the new type. If the<br />
conversion fails. Any data stored in an element in the content item is lost if replaced by an element<br />
of a different type.<br />
v Replace elements that have changed type (without auto data conversion): Replace elements in the<br />
content item with elements of the same name from the authoring template being applied. Any data<br />
stored in an element in the content item is lost if replaced by an element of a different type.<br />
v Copy hidden element values from authoring template: Select this option to include hidden<br />
element values from the authoring template when changing or reapplying an authoring template<br />
v Enter values for mandatory fields: This option copies default values from the authoring template<br />
to mandatory fields and elements in the content item that do not already have values.<br />
v Save invalid content: This forces invalid content to be saved when applying or changing a<br />
template. For example, if a text field containing ten characters are replaced with a text field with a<br />
maximum of eight characters, the old text is saved in the updated field. You must fix the invalid<br />
content the next time you edit the <strong>Content</strong> item.<br />
v Save content as draft: A draft content item is created when the authoring template is applied.<br />
6. Click OK.<br />
Reapplying an updated authoring template:<br />
You can reapply changes made to an authoring template to the content items that have been created from<br />
the template.<br />
Reapplying an authoring template is required when the following kinds of changes are made to the<br />
template:<br />
v Elements are removed.<br />
v New elements are added and are designated as mandatory.<br />
v Existing elements are designated as hidden fields on the content form.<br />
Note: You cannot reapply an authoring template if you are currently editing the template. Before<br />
reapplying the template, you must save your changes or cancel out of edit mode.<br />
1. Display a list of authoring templates by clicking Authoring Template.<br />
2. Click the authoring template to open the template in read-only mode.<br />
3. Click Apply Authoring Template.<br />
4. Select any of the following options:<br />
v Add new elements: If the new authoring template contains elements that do not exist in the<br />
content item, these elements are added to the converted content item.<br />
v Remove existing elements: If the content item contains elements that do not exist in the authoring<br />
template being applied, those elements are removed during the conversion.<br />
434 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Replace elements that have changed type (with auto data conversion): Replace elements in the<br />
content item with elements of the same name from the authoring template being applied. If the two<br />
elements are of different types, the data is automatically converted to the new type. If the<br />
conversion fails. Any data stored in an element in the content item is lost if replaced by an element<br />
of a different type.<br />
v Replace elements that have changed type (without auto data conversion): Replace elements in the<br />
content item with elements of the same name from the authoring template being applied. Any data<br />
stored in an element in the content item is lost if replaced by an element of a different type.<br />
v Copy hidden element values from authoring template: Select this option to include hidden<br />
element values from the authoring template when changing or reapplying an authoring template<br />
v Enter values for mandatory fields: This option copies default values from the authoring template<br />
to mandatory fields and elements in the content item that do not already have values.<br />
v Save invalid content: This forces invalid content to be saved when applying or changing a<br />
template. For example, if a text field containing ten characters are replaced with a text field with a<br />
maximum of eight characters, the old text is saved in the updated field. You must fix the invalid<br />
content the next time you edit the <strong>Content</strong> item.<br />
v Save content as draft: A draft content item is created when the authoring template is applied.<br />
5. Click OK.<br />
Managing a taxonomy<br />
From time to time, you need to edit the structure of a taxonomy.<br />
Changing the order within a taxonomy:<br />
As your site evolves, you need to change the structure of a taxonomy.<br />
1. Select the categories you would like to reposition.<br />
2. Click the Move To button.<br />
3. Select the category you would like to move.<br />
4. Click OK.<br />
5. Select a taxonomy or a category to move the category under. Items you do not have sufficient access<br />
to select are grayed out. If these items have children you can still navigate down to select them.<br />
6. Click OK.<br />
Copying a category:<br />
As a taxonomy evolves, you are required to edit your taxonomy by copying categories from one section<br />
of your taxonomy to another. You use the Copy button to copy a category in a taxonomy.<br />
1. Navigate to a category list.<br />
2. Select a category.<br />
3. Click Copy.<br />
4. Select a library.<br />
5. Select a taxonomy or a category to copy the category under. Items you do not have sufficient access to<br />
select are grayed out. If these items have children you can still navigate down to select them.<br />
6. Click OK.<br />
Note: The children of an item are not copied when copying an item. You must copy any children<br />
separately.<br />
Moving a category:<br />
Building a web content system 435
As a taxonomy evolves, you are required to edit your taxonomy by moving categories from one section<br />
of your taxonomy to another. You use the Move button to change the position of a category in a<br />
taxonomy. When you reposition a parent category, any child categories are also moved.<br />
1. Navigate to a category list.<br />
2. Select a category.<br />
3. Click Move.<br />
4. Select a library.<br />
5. Select a taxonomy or a category to move the category under. Items you do not have sufficient access<br />
to select are grayed out. If these items have children you can still navigate down to select them.<br />
6. Click OK.<br />
Managing site framework items<br />
From time to time, you need to move content items and site areas.<br />
Copying a site area:<br />
As your site framework evolves, you are required to edit your site framework by copying site areas from<br />
one section of your site framework to another. You use the copy button to copy a site area in the site<br />
framework.<br />
1. Navigate to a site area list.<br />
2. Select a site area.<br />
3. Click Copy.<br />
4. Select a library.<br />
5. Select a site area.<br />
a. Items you do not have sufficient access to select are grayed out If these items have children, you<br />
can still navigate down to select them.<br />
b. If the selected site area has existing children, you then select how to add the new site area:<br />
v Select First child to copy the site area as the first listed site area. Then click OK.<br />
v Select Last child to copy the site area as the last listed site area. Then click OK.<br />
v Select Before specified child to copy the site area before a selected child item. A further<br />
selection dialog opens if this option is selected. Select a child item and then click OK.<br />
v Select After specified child to copy the site area after a selected child item. A further selection<br />
dialog opens if this option is selected. Select a child item and then click OK.<br />
Note: The children of an item are not copied when copying an item. You must copy any children<br />
separately.<br />
Moving a site area:<br />
As your site framework evolves, you are required to edit your site framework by moving site areas from<br />
one section of your site framework to another. You use the Move button to change the position of a site<br />
area in the site framework. When you reposition a parent site area, any child site areas and related<br />
content are also moved.<br />
1. Navigate to a site area list.<br />
2. Select a site area.<br />
3. Click Move.<br />
4. Select a library.<br />
5. Select a site area:<br />
a. Items you do not have sufficient access to select are grayed out. If these items have children, you<br />
can still navigate down to select them.<br />
436 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
. If the selected site area has existing children, you then select how to add the new site area:<br />
v Select First child to move the site area as the first listed site area. Then click OK.<br />
v Select Last child to move the site area as the last listed site area. Then click OK.<br />
v Select Before specified child to move the site area before a selected child item. A further<br />
selection dialog opens if this option is selected. Select a child item and then click OK.<br />
v Select After specified child to move the site area after a selected child item. A further selection<br />
dialog opens if this option is selected. Select a child item and then click OK.<br />
Linking or copying content items to site areas:<br />
When a content item is first created, you must select a site area to save the content item under. You can<br />
link content items to other site areas using the Link and Add Links buttons. You can also copy a content<br />
item to a different site area using the Copy button.<br />
When you link a content item to other site areas, changes made to the content item appear everywhere<br />
the content item is linked to. If you copy a content item, a new content item is created and the link<br />
between the original content item and new content item is broken.<br />
Template maps:<br />
When choosing a site area to link a content item to, ensure that the site area you choose has a valid<br />
template map between the authoring template and presentation template you would like to use with the<br />
selected content item.<br />
Using the Link button<br />
1. Select the content items to link to other site areas.<br />
2. Click Link.<br />
3. Click Add.<br />
4. Select the site area you would like to add them to:<br />
a. Items you do not have sufficient access to select are grayed out. If these items have children you<br />
can select, you can navigate down to select them.<br />
b. If the selected site area has existing children, you then select how to add the content item within<br />
the site area:<br />
1) Select First child to link the content item as the first listed content item within a site area.<br />
Then click OK.<br />
2) Select Last child to link the content item as the last listed content item within a site area. Then<br />
click OK.<br />
3) Select Before specified child to link the content item before the selected child item. A further<br />
selection dialog opens if this option is selected. Select a child item and then click OK.<br />
4) Select After specified child to link the content item after the selected child item. A further<br />
selection dialog opens if this option is selected. Select a child item and then click OK.<br />
5. Click OK.<br />
Using the Add Links button<br />
1. Select the Site Area you would like to link your content to and then click the Add Links button.<br />
2. Select the content items you would like to add.<br />
3. Click OK.<br />
Building a web content system 437
Using the Copy button<br />
Copying a content item is different to linking because a new content item is created.<br />
1. Navigate to a content list.<br />
2. Select a content item.<br />
3. Click Copy.<br />
4. Select a library.<br />
5. Select a site area or a content item to copy the content item under:<br />
a. Items you do not have sufficient access to select are grayed out. If these items have children you<br />
can select, you are able to navigate down to select them.<br />
b. If the selected site area has existing children, you then select how to add the content item within<br />
the site area:<br />
1) Select First child to save the new content item as the first listed content item within a site area.<br />
Then click OK.<br />
2) Select Last child to save the new content item as the last listed content item within a site area.<br />
Then click OK.<br />
3) Select Before specified child to save the new content item before a selected child item. A<br />
further selection dialog opens if this option is selected. Select a child item and then click OK.<br />
4) Select After specified child to save the new content item after a selected child item. A further<br />
selection dialog opens if this option is selected. Select a child item and then click OK.<br />
6. Click OK.<br />
Moving a content item:<br />
You move content items from one site area to another using the Move To button. This is different from<br />
linking content as the content you choose to move is removed from the original site area.<br />
Template maps:<br />
When choosing a site area to link a content item to, ensure that the site area you choose has a valid<br />
template map between the authoring template and presentation template you would like to use with the<br />
selected content item.<br />
1. Navigate to a content list.<br />
2. Select a content item.<br />
3. Click Move.<br />
4. Select a library.<br />
5. Select a site area to move the content item under:<br />
a. Items you do not have sufficient access to select are grayed out. If these items have children you<br />
can select, you can navigate down to select them.<br />
b. If a selected site area has existing children, you then select how to add the content item within the<br />
site area:<br />
v Select First child to move the content item as the first listed content item within a site area.<br />
Then click OK.<br />
v Select Last child to move the content item as the last listed content item within a site area. Then<br />
click OK.<br />
v Select Before specified child to move the content item before a selected child item. A further<br />
selection dialog opens if this option is selected. Select a child item and then click OK.<br />
v Select After specified child to move the content item after a selected child item. A further<br />
selection dialog opens if this option is selected. Select a child item and then click OK.<br />
438 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Removing content item links from site areas:<br />
You remove content items from site areas using the Remove Links or Link buttons. This is different from<br />
deleting content items as the content you choose to remove is removed from a site area, but not from the<br />
web content library.<br />
Using the Remove Links button:<br />
1. Select a site area.<br />
2. Click Remove links.<br />
3. Select the content items you would like to remove.<br />
4. Click OK.<br />
Using the Link To button:<br />
1. Select the content items to remove links from.<br />
2. Click Link To.<br />
3. Select the site area you would like to remove a link from and then click Remove.<br />
4. Click OK.<br />
Copying other items to a different library<br />
You use the Copy button to copy an item from one library to another.<br />
1. Navigate to an item list.<br />
2. Select an item.<br />
3. Click Copy.<br />
4. Select a library.<br />
5. Click OK.<br />
Note: The children of an item are not copied when copying an item. You must copy any children<br />
separately.<br />
Moving other items between libraries<br />
You use the Move button to move an item between libraries.<br />
1. Navigate to an item list.<br />
2. Select an item.<br />
3. Click Move.<br />
4. Select a library.<br />
5. Click OK.<br />
Removing and adding workflows<br />
The process of adding and removing workflows on items is determined by the type of item being edited,<br />
and your level of access.<br />
Note: When an item is first created, you require manager access to that item type in any library to access<br />
the Add Workflow and Remove Workflow buttons. Once saved, you require manager access to both the<br />
item and item type in the library the item is stored in.<br />
1. To add a workflow on a non-workflowed item:<br />
a. Create or open a draft item in edit mode.<br />
b. Click Add Workflow.<br />
c. A workflow section is added to the form. Select a workflow to use.<br />
d. Save the item.<br />
2. To remove a workflow on an item using a multiple-stage workflow:<br />
Building a web content system 439
a. Create or open a draft item in edit mode.<br />
b. Click Remove Workflow.<br />
c. The workflow section is removed from the item form.<br />
d. If you click Save the item is saved in draft mode and the workflow is not removed from the live<br />
item until you publish the draft.<br />
e. If you click Save and publish the published item is saved and no longer requires a workflow.<br />
3. You cannot create drafts of items that use a single-stage workflow. To remove a workflow on an item<br />
using a single-stage workflow:<br />
a. Create or open an item in edit mode.<br />
b. Click Remove Workflow.<br />
c. The workflow section is removed from the item form.<br />
d. If you click Save the published item is saved and no longer requires a workflow.<br />
e. If you click Save as Draft the workflow is not removed from the live item until you publish the<br />
draft.<br />
Restoring an item<br />
You can then view, restore, delete, preview, and label different versions of an item.<br />
1. The are two ways to access the version history of an item.<br />
a. Open an item in read mode and click Versions.<br />
b. Go to either My items>Deleted or All items>Deleted, select an item and click Versions.<br />
2. To view the details of a version, click Read.<br />
3. To enter a description of the version, click Edit Label.<br />
4. To restore a version, select a version and click Restore.<br />
a. If no drafts exist, the item is restored as published.<br />
b. If draft exists, then you can choose to restore the item to an existing draft or create a new draft. To<br />
restore an item as a new draft, select Restore as new draft. Otherwise, select an existing draft<br />
from the list of drafts.<br />
c. When restoring deleted items you are given a choice of either using the default restore options, or<br />
you can choose to modify how the item is restored. To restore the item using the default restore<br />
options, select Restore Immediately. Otherwise, choose Select restore options, then restore to<br />
modify the restore parameters of the item.<br />
d. When restoring items that contain references to other items you can replace references to items<br />
that no longer exist. The available options are different for each item type you restore. To use the<br />
existing references, click OK.<br />
5. Administrators and <strong>Manager</strong>s can restore the item as a published item by clicking Restore as<br />
Published.<br />
a. When restoring items that contain references to other items you can replace references to items<br />
that no longer exist. The available options are different for each item type you restore. To use the<br />
existing references, click OK.<br />
b. When using Restore as Published the item is restored to the workflow and workflow stage used<br />
by the existing item. If restoring an item that is currently expired, the restored item also has a<br />
status of expired<br />
6. To delete a version, select a version and click Delete.<br />
7. To preview a version, select a version and click Preview.<br />
Editing user profiles<br />
You can add profile information to users. User profiles can be used as search parameters in menus.<br />
Note: Profiling cannot be added to groups, only users.<br />
1. Open an authoring portlet.<br />
440 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
2. Open the Preferences section of the authoring portlet.<br />
3. Click Profile Users.<br />
4. Click Select to select the users you would like to edit and then click Next.<br />
5. Click Select Categories to add or remove categories.<br />
6. Enter keywords in the Keywords field separated by commas.<br />
7. Click Finish.<br />
Note: To use this feature you must configure a property extension database to store user-specific data.<br />
See Managing user data for further information.<br />
Batch-editing access controls<br />
An administrator can apply access control settings for multiple items.<br />
To batch-edit security:<br />
1. Open an item view.<br />
2. Select the items you would like to batch-edit, and then click More Actions > Edit Access.<br />
3. If you are assigning access to individual users or groups, edit the list of users or groups you would<br />
like to set security levels for.<br />
v To remove items, first select the required items from the item list, then click Remove<br />
v To add items, click Add Search for and then select the users or groups you would like to add<br />
Security for. Click OK.<br />
4. Select how to apply the new access levels:<br />
v The same access level changes the access level of the selected users or groups to the specific access<br />
level selected in step 5.<br />
v Minimum access level changes the minimum access level of the selected users or groups to the<br />
access level selected in step 5. The access levels of a user can be raised, but not reduced.<br />
v Maximum access level changes the maximum access level of the selected users or groups to the<br />
access level selected in step 5. The access levels of a user can be reduced, but not raised.<br />
5. Select an access level.<br />
6. Select inheritance options as required. If you select "ignore", no changes are applied to inheritance.<br />
7. Select to apply these settings either to the Administrator Defined or User Defined access control<br />
settings.<br />
8. Select Only change access for existing users or groups. Do not add any new users or groups to<br />
change the access level of users and groups have already been granted access to an item. No new<br />
users or groups are added.<br />
9. Click OK to finish.<br />
Storing web content<br />
You use elements to store different types of web content. Elements can be stored in components, site<br />
areas and content items. The item type used to store content in is determined by where the content will<br />
be used in your website.<br />
Components<br />
You use components to store elements that are used in more than one area of your website. For example,<br />
a company logo or a copyright notice.<br />
Building a web content system 441
Static components<br />
Static components are used to store static content such as text, files or images.<br />
v “Creating a component reference component” on page 299<br />
v “Creating a date and time component” on page 303<br />
v “Creating a file resource component” on page 306<br />
v “Creating an HTML component” on page 311<br />
v “Creating an image component” on page 314<br />
v “Creating a JSP component” on page 319<br />
v “Creating a link component” on page 323<br />
v “Creating a number component” on page 341<br />
v “Creating a rich text component” on page 356<br />
v “Creating a short text component” on page 372<br />
v “Using a style sheet element” on page 375<br />
v “Creating a text component” on page 383<br />
v “Creating a user selection component” on page 389<br />
Dynamic components<br />
Dynamic components are used dynamically generate content based on the parameters set in the<br />
component properties.<br />
v “Creating a menu component” on page 329<br />
v “Creating a navigator component” on page 336<br />
v “Creating a Personalization component” on page 352<br />
v “Creating a taxonomy component” on page 378<br />
v “Using a user name element” on page 387<br />
Tool components<br />
Tool components are used to create tools that can be added to web pages for users to perform tasks such<br />
as search, inline editing, and paging through pages of links.<br />
v “Creating an authoring tools component” on page 293<br />
v “Creating a page navigation component” on page 346<br />
v “Creating a search component” on page 368<br />
<strong>Content</strong> items<br />
You use content items to store web page specific content in the form of elements.<br />
Each content item you create is based on an authoring template. The authoring template can determine<br />
what element types are included in a content item, whether a workflow will be used or not and what<br />
workflow to use, and where the content item can be saved.<br />
Each content item you create is the equivalent to a web page in a traditional website. Unlike traditional<br />
websites, a single content item can be linked to different areas within your website, or linked to a<br />
different website altogether. The changes you make to a single content item will be visible in every place<br />
you link the content item to.<br />
The look and feel of a content item when displayed in a website will depend on what authoring template<br />
was used to create the content item, and what presentation template is used to display the content. The<br />
442 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
presentation template used will depend on the current context of the content item, and which<br />
template-map applies to the current context of the content item.<br />
Related tasks:<br />
“Creating content items” on page 253<br />
<strong>Content</strong> items are based on authoring templates. The fields displayed in a content item form can be<br />
hidden from different users, so not all the steps outlined below may be required. Some fields and<br />
elements may already contain default data.<br />
Site areas and site frameworks<br />
Site areas are used to define a hierarchical site framework. <strong>Content</strong> items are saved within the site<br />
framework to give your content structure and context.<br />
The items that make up a site framework<br />
A site framework consists of a single top-level site area containing a set of site areas that contain content<br />
items. Although a site framework contains only a single top-level site area, you can create multiple site<br />
frameworks for use in a single website.<br />
Building a web content system 443
Site Areas:<br />
v You use site areas to build the site framework within which you group content items. The site<br />
areas that comprise the site framework can be classified into ancestors, descendants and<br />
siblings. The vertical hierarchy of a site framework is split into ancestors and descendants.<br />
Depending on where you are within your site framework, site areas can act as ancestors and<br />
descendants. Site Areas that share the same ancestor are known as siblings.<br />
v The relationships between authoring templates and presentation templates are set in site areas.<br />
v Site area specific web content is stored in site areas in the form of elements.<br />
<strong>Content</strong> items:<br />
v You use content items to store web page specific content in the form of elements.<br />
v You save content items within site areas.<br />
v You can save content items within multiple site areas and multiple site frameworks.<br />
v You must select an authoring template when creating content items. The authoring template<br />
determines which elements are available to enter web content into.<br />
v The site area a content item is located under, and the content item's authoring template,<br />
determines which presentation template to use to display elements stored within a content<br />
item.<br />
v You use categories and keywords to profile content items that the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
application uses to generate further pieces of content such as menus.<br />
When to use site areas and content items<br />
Site areas and content items are similar item-types. They all store web content in the form of elements,<br />
but they are used in different ways:<br />
v Site areas are used to define different sections within a site framework.<br />
v <strong>Content</strong> items represent web page specific content and can be used in multiple site areas and multiple<br />
site frameworks.<br />
The structure of a website will determine whether a single site framework, or multiple site frameworks<br />
are used.<br />
In the following examples, a company sells three different product brands.<br />
Example 1: A single website<br />
In this example, the simplest method to use is a website comprising a single site framework with<br />
multiple site areas:<br />
v Top site area<br />
444 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
– Site area for Brand A<br />
- <strong>Content</strong> item A1<br />
- <strong>Content</strong> item A2<br />
- Generic content item<br />
– Site area for Brand B<br />
- <strong>Content</strong> item B1<br />
- <strong>Content</strong> item B2<br />
- Generic content item<br />
– Site area for Brand C<br />
- <strong>Content</strong> item C1<br />
- <strong>Content</strong> item C2<br />
- Generic content item<br />
Example 2: Intranet, extranet and website<br />
In this example, a separate site framework is created for an intranet, an extranet and a website. Some<br />
content items are used in more than one site framework.<br />
Table 73. Example 2: Intranet, extranet and website<br />
Intranet Extranet website<br />
v<br />
Intranet<br />
v<br />
Extranet<br />
v<br />
<strong>Web</strong>site<br />
– Intranet site area for Brand A<br />
– Extranet Site area for Brand A<br />
– <strong>Web</strong> site area for Brand A<br />
- <strong>Content</strong> item A1<br />
- <strong>Content</strong> item A1<br />
- <strong>Content</strong> item A1<br />
- <strong>Content</strong> item A2<br />
- <strong>Content</strong> item A2<br />
- <strong>Content</strong> item A2<br />
- <strong>Content</strong> item A3 (intranet<br />
only)<br />
- Generic intranet content item<br />
- Generic content item<br />
– Intranet site area for Brand B<br />
- <strong>Content</strong> item B1<br />
- <strong>Content</strong> item B2<br />
- <strong>Content</strong> item B3 (intranet and<br />
extranet only)<br />
- Generic intranet content item<br />
- Generic content item<br />
– Intranet site area for Brand C<br />
- <strong>Content</strong> item C1<br />
- <strong>Content</strong> item C2<br />
- <strong>Content</strong> item C3 (intranet<br />
only)<br />
- Generic intranet content item<br />
- <strong>Content</strong> item A4 (extranet<br />
only)<br />
- Generic extranet content item<br />
- Generic content item<br />
– Extranet Site area for Brand B<br />
- <strong>Content</strong> item B1<br />
- <strong>Content</strong> item B2<br />
- <strong>Content</strong> item B3 (intranet and<br />
extranet only)<br />
- Generic extranet content item<br />
- Generic content item<br />
– Extranet Site area for Brand C<br />
- <strong>Content</strong> item C1<br />
- <strong>Content</strong> item C2<br />
- <strong>Content</strong> item C4 (extranet and<br />
web only)<br />
- Generic extranet content item<br />
- <strong>Content</strong> item A5 (web only)<br />
- Generic web content item<br />
- Generic content item<br />
– <strong>Web</strong> site area for Brand B<br />
- <strong>Content</strong> item B1<br />
- <strong>Content</strong> item B2<br />
- <strong>Content</strong> item B4 (web only)<br />
- Generic web content item<br />
- Generic content item<br />
– <strong>Web</strong> site area for Brand C<br />
- <strong>Content</strong> item C1<br />
- <strong>Content</strong> item C2<br />
- <strong>Content</strong> item C4 (extranet and<br />
web only)<br />
- Generic web content item<br />
- Generic content item<br />
- Generic content item<br />
- Generic content item<br />
Building a web content system 445
Related tasks:<br />
“Creating site areas” on page 234<br />
To create a site framework, you need to create site areas.<br />
Working with web content<br />
This section describes how to work with <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items to create content and build<br />
integrated features.<br />
Creating links and navigation<br />
You use these elements to define or generate links between different pages in a website, or add<br />
navigational elements to a website.<br />
Link element<br />
A link element stores a link to a web content item, or to external content such as a web page.<br />
Most web pages contain links, either to other web pages, or to files. In a web content site, most links are<br />
generated using navigator and menu elements. A link element stores a link that is not part of a site's<br />
navigation. For example, you can store a link to your "home" content item in a link element. You then<br />
add a reference to the link element in every presentation template used by your site to enable users to<br />
return to the "home" content item. If you want to change your "home" content, you only need to change<br />
the selected item in the link element.<br />
Creating a link element<br />
To create a link element, you can either add a link element to an authoring template, site area or content<br />
item, or create a link component.<br />
Related tasks:<br />
“Using a link element” on page 323<br />
A link element stores a link to a web content item, or to external content such as a web page.<br />
Menu element<br />
A menu element displays metadata and content from content items that match the search criteria of the<br />
menu element. The search criteria of a menu element can include matching site areas, authoring<br />
templates, categories and keywords.<br />
Creating a menu element<br />
You can only use a menu element by creating a menu component. You cannot add a menu element to<br />
authoring templates, site areas or content items.<br />
Menu search options<br />
Menu element search options are defined in the Menu Component Query section of the menu element<br />
form. These search options define which content items from your site will be displayed in the menu<br />
element. Search options can include a combination of search parameters including searches based on<br />
authoring templates, categories and site areas.<br />
Menus can search for the following in a website:<br />
v <strong>Content</strong> with matching authoring templates<br />
v <strong>Content</strong> with matching site areas<br />
v <strong>Content</strong> with matching categories<br />
v <strong>Content</strong> with matching keywords<br />
446 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Between different criteria, menu searches are "and" searches, but within each search criteria, menu<br />
searches are "or" searches. For example, a menu element that searches for two different categories and an<br />
authoring template will display content items profiled with at least one of each profile type. <strong>Content</strong> that<br />
matches only one profile type are not displayed.<br />
Menus will not display search results if you select a search criteria but do not enter any search<br />
parameters. For example, if the menu is configured to display results based on categories, but no<br />
categories are specified in the menu form, then no matches are displayed.<br />
Menu sorting options<br />
You can sort menu search results according to following criteria:<br />
v <strong>Content</strong> document name<br />
v <strong>Content</strong> document description<br />
v Published date<br />
v Expired date<br />
v General date one<br />
v General date two<br />
v Last modified date<br />
You can select a maximum of three sort options.<br />
Menu paging options<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> provides flexible paging options to enable you to display search results are<br />
generated by the menu element.<br />
v You can specify the number of results displayed in a menu page. For example, a menu defined to show<br />
five results per page would display only five records from the set of search results.<br />
v You can indicate where in the results set you want to begin showing results by specifying which menu<br />
page to use as a starting point. As an example, if you are displaying five results per menu page and<br />
you want to show records 6–10, you would start showing search results with the second menu page<br />
instead of the first.<br />
v To provide easier navigation of the search results in a menu, you can include a page navigation<br />
element in the header or the footer of the menu element. The page navigation element enables stepping<br />
forward or backward through multiple menu pages without the need for creating multiple menu<br />
elements to display the different pages.<br />
v A large number of search results can cause a delay when the menu element is initially rendered. To<br />
prevent this delay, you can limit the maximum number of pages of results that are included in the<br />
menu. To further improve the efficiency of the menu, you can also specify how many pages of results<br />
should be read beyond the current page, so that paging performance is not affected by rebuilding the<br />
menu.<br />
While a page navigation element is a convenient way of displaying and navigating a menu's search<br />
results, you can use the menu's paging options to display search results in other ways. For example, if<br />
you wanted to show the results in a 3-column table, you could create three menu elements with the same<br />
search criteria and then tailor the paging options of each menu to display different result sets:<br />
Table 74. Example<br />
Menu Results per page Start page Records displayed<br />
Menu element 1: 5 1 1 to 5<br />
Menu element 2: 5 2 6 to 10<br />
Menu element 3: 5 3 11 to 15<br />
Building a web content system 447
The three menus could then be referenced within three different cells of a table row in a presentation<br />
template.<br />
Related tasks:<br />
“Using a menu element” on page 329<br />
To create a menu element you must specify the criteria to search content items with, and then create a<br />
layout for the metadata or content to be displayed in the menu element.<br />
Navigator elements<br />
A navigator elements displays metadata and content from a predefined section of a site framework,<br />
usually in the form of links.<br />
Navigators are not menus. Menus are a list of hyperlinks that take you to specific pages. Navigators can<br />
also be hyperlinks that can take you to specific pages but navigators are organized differently. Navigators<br />
present the logical arrangement of a website whereas menus are a list of related web pages in your<br />
website.<br />
The navigator element is configured by selecting a start area and determining a child depth, a parent<br />
level, and a sibling value relative to the start area. Possible start areas are site areas, or content items.<br />
There are also options to determine if the start area is to be displayed, if content items are to be<br />
displayed, and if the hierarchy from the start area to the current site area should be expanded.<br />
A set of element designs is used to format the information for each branch of a navigator.<br />
Navigators display links to different site areas in a website. As such, each site area in a website should<br />
have a default content item. Otherwise, some links in a navigator will not work.<br />
Creating a navigator element<br />
You can only use a navigator element by creating a navigator component. You cannot add a navigator<br />
element to authoring templates, site areas or content items.<br />
Related tasks:<br />
“Defining navigator element design options” on page 337<br />
You use the element design options of a navigator element to determine how to display the results a<br />
navigator.<br />
Writing links to <strong>Web</strong> content<br />
Links to content items can be written as URLs.<br />
Linking to web content from other web content<br />
The following examples show how to write links to web content that are to be used with the JSR 286 web<br />
content viewer or the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> servlet.<br />
To create a link from a piece of web content to another piece of web content, use the following URL<br />
format:<br />
[URLCmpnt mode="current" context="Selected" type="<strong>Content</strong>"<br />
name="LIBRARY/SITE_AREA_PATH/CONTENT"]<br />
v LIBRARY = the name of the web content library.<br />
v SITE_AREA_PATH = the path to the site area where the content resides.<br />
v CONTENT = the name of the content item.<br />
448 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Linking to web content from an external portlet or web site<br />
To create a link from an external portlet or web site that displays web content, use the following URL<br />
format:<br />
http://HOST/wps/wcm/connect/LIBRARY/SITE_AREA_PATH/CONTENT<br />
v HOST = the name of the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> host.<br />
v wps/wcm = the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> context root.<br />
v LIBRARY = the name of the web content library.<br />
v SITE_AREA_PATH = the path to the site area where the content resides.<br />
v CONTENT = the Name of the content item.<br />
Linking to content displayed in a JSR 286 web content viewer from an external portlet or<br />
web site<br />
To create a link from an external portlet or web site to content displayed in a JSR 286 web content viewer,<br />
use the following URL format:<br />
http://PORTAL_HOST/wps/mypoc/vp_mappingurile=wcm%3Apath%3ALIBRARY/<br />
SITE_AREA_PATH/CONTENT&page=unique_name | object_id | &mapping=mapping |<br />
¤t=true | &pagedesign=LIBRARY/PRES_TEMPLATE_NAME<br />
v PORTAL_HOST = the name of the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> host.<br />
v wps/mypoc = the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> context root, specifying the piece of content lookup service.<br />
– For protected access, use wps/mypoc.<br />
– For unprotected access, use wps/poc.<br />
v vp_mapping = the virtual portal mapping, if appropriate. For example, wps/mypoc/myvp or<br />
wps/poc/myvp.<br />
v LIBRARY = the name of the web content library.<br />
v SITE_AREA_PATH = the path to the site area where the content resides.<br />
v CONTENT = the name of the content item.<br />
To address a specific portal page, use one of the following parameters. The parameters cannot be<br />
combined.<br />
v page: Specify the unique name or the object ID of the page.<br />
v mapping: Specify the URL mapping for the page.<br />
v current: Indicates that the current page should be used.<br />
To address a specific presentation template to use to render the web content you use the following<br />
parameter:<br />
v pagedesign: Specify the name of the library and presentation template to use including the names of all<br />
folders<br />
Dynamic page lookup: The page parameter is optional. You can use the link broadcasting feature of the<br />
JSR 286 web content viewer to dynamically look up pages by simply omitting the page parameter. For<br />
example, if you have a content item called News1, stored in the library <strong>Web</strong> <strong>Content</strong> under the site area<br />
News, you can create a link to that content item with the following URL:<br />
http://host_name/wps/mypocurile=wcm%3Apath%3A/<strong>Web</strong>+<strong>Content</strong>/News/News1<br />
Alternatively you can also add a specific portal page using a URL mapping by using the following<br />
format:<br />
http://PORTAL_HOST/PORTAL_CONTEXT_ROOT<br />
/PORTAL_PAGE_URL_MAPPING/current=true&urile=wcm%3Apath%3ALIBRARY/SITE_AREA_PATH/CONTENT<br />
v PORTAL_HOST = the name of the portal host<br />
Building a web content system 449
v PORTAL_CONTEXT_ROOT = the portal context root. For anonymous sites use /wps/portal, otherwise<br />
use /wps/myportal<br />
v PORTAL_PAGE_URL_MAPPING = the compound name of the portal URL mapping to the portal page<br />
that contains the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> portlet (URL mappings can be set up using the portal<br />
administration portlets).<br />
v LIBRARY = the name of the web content library.<br />
v SITE_AREA_PATH = the path to the site area where the content resides.<br />
v CONTENT = the name of the content item.<br />
Note: The JSR 286 web content viewer on the target page must be configured to receive links from Other<br />
portlets and this portlet.<br />
Adding cache parameters to a URL<br />
You can add web content “Cache parameters” on page 459 and “Cache expire parameters” on page 460<br />
to a URL to custom caching strategies to individual items. For example:<br />
http://HOST/wps/wcm/connect/LIBRARY/SITE_AREA_PATH/CONTENT>cache=site&contentcache=session<br />
Adding a last modified parameter to a URL<br />
You can add the last modified date of the current content item to the header of the rendered page. For<br />
example:<br />
http://HOST/wps/wcm/connect/LIBRARY/SITE_AREA_PATH/CONTENT>returnLastModified=true<br />
Contextual linking<br />
Contextual linking is used in systems where content from one site is shared across multiple sites. When<br />
content is linked into a site, embedded links (link elements and links in HTML) will reference the site the<br />
original content item is located in. Contextual linking is used so that when content is linked from another<br />
site, the link will be rendered relative to the current site if possible.<br />
Contextual path linking<br />
Contextual path linking will attempt to resolve a link using a relative path technique. Contextual path<br />
linking assumes that each site framework that the linked content is stored in has the same site structure.<br />
Contextual path linking can be applied to elements referenced using the element tag. For example:<br />
v [Element type="content" context="current" key="body" link="path" ]<br />
It can only be used if context=current or context=autofill.<br />
When contextual path linking is used a compatible link is searched for using the same relative path. If no<br />
link is found, the original link is used.<br />
Storing text and HTML<br />
You use different types of elements to store text or HTML depending on the type of text or HTML being<br />
created.<br />
Tip: Text that is common to all content using a single presentation template should be entered directly in<br />
the presentation template rather than separate elements.<br />
Text, rich text and HTML elements<br />
You use the short text, text, rich text and HTML elements to store blocks of text, but each has slightly<br />
different properties.<br />
450 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Creating an element<br />
Short text, text, rich text and HTML elements can be added to site areas, content items and authoring<br />
templates or they can be created as individual components.<br />
Short text element<br />
A short text element is used to store small amounts of fixed-length text where the length is 250 bytes or<br />
less. Unlike the other text elements, short text elements can also be used as a search parameter in a<br />
Personalization rule.<br />
Text element<br />
You use a text element to store larger amounts of text than can be stored in a short text element. No<br />
special processing occurs for this element.<br />
HTML element<br />
An HTML element is used to store fragments of HTML that can be reused in presentation templates and<br />
other elements designs. You can enter HTML directly into the element or upload HTML from a<br />
previously created HTML file.<br />
Rich text element<br />
A rich text element is similar to the HTML element except that it includes a rich text editor that can be<br />
used to format text stored within a rich text element. The main purpose of the rich text element is<br />
provide base-level content creators with an easy-to-use text editor. Advanced users who are required to<br />
produce more advanced code, including web content tags, or who need to store fragments of HTML<br />
should use an HTML element instead.<br />
You should use rich text elements sparingly in authoring templates, site areas and content items as<br />
adding multiple rich text elements to these items can reduce authoring performance.<br />
The rich text editors used by <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> are supplied by other vendors. For information on<br />
using the rich text editor, see the user documentation supplied by the specific rich text editor vendor.<br />
Using web content tags in rich text and HTML elements<br />
Table 75. Using web content tags in rich text and HTML elements<br />
Element type<br />
Details<br />
Short Text and Text elements <strong>Web</strong> content tags cannot be used in short text and text elements.<br />
HTML elements<br />
Any combination of web content tags can be used in HTML elements with the<br />
following exceptions:<br />
1. You cannot use single quotes around attribute values.<br />
v [Component name='example']<br />
v [Component name='example' start='link']<br />
v [Component name='example' start='']<br />
2. You cannot use double quotes inside attribute values.<br />
v [Component name="example" start="link"]<br />
v [Component name="example" start=""]<br />
Building a web content system 451
Table 75. Using web content tags in rich text and HTML elements (continued)<br />
Element type<br />
Rich text elements<br />
Details<br />
Basic <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags can be used in rich text elements. For example, the<br />
following tags can be used in Rich Text elements:<br />
v [component name="test"]<br />
v [element type="content" context="current" key="body"]<br />
Note: Highlighting of rich text elements is not enabled by default. To enable this<br />
support, ensure that your server administrator adds the following property to the WCM<br />
WCMConfigService service:<br />
v Property name: wcm.enableWCMTagHighlighting<br />
v Value: true<br />
The following tag formats are invalid:<br />
1. The use of single quotes around attribute values.<br />
v [Component name='example']<br />
v [Component name='example' start='link']<br />
v [Component name='example' start='']<br />
2. The use of double quotes inside attribute values.<br />
v [Component name="example" start="link"]<br />
v [Component name="example" start=""]<br />
3. Embedding tags inside other HTML tags.<br />
v link<br />
v <br />
Number element<br />
You can store a numerical value in a number element.<br />
Creating a number element<br />
To create a number element, you can either add a number element to an authoring template, site area or<br />
content item, or create a number component.<br />
Note: The maximum number of digits that can be entered into a number element is 16.<br />
Storing files and images<br />
You use these elements to store files or images.<br />
File resource element<br />
You can store a file in a file resource element. You can then reference the file resource so that users can<br />
download the file using a link or, for supported file types, convert the file directly to HTML and render it<br />
on the page.<br />
By storing a file in a file resource element:<br />
v you can reference the file anywhere in your site regardless of the original file location or URL.<br />
v the file is automatically transferred to other servers during syndication.<br />
Creating a file resource element<br />
To create a file resource element, you can either add a file resource element to an authoring template, site<br />
area or content item, or create a file resource component.<br />
452 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Using a resource content item versus using a file resource component:<br />
If you configure an authoring template to be a resource template the content items created using that<br />
authoring template are known as resource content items. Like a file resource component, files stored<br />
within a resource content item can be directly rendered in a web page. The difference between using a<br />
resource content item instead of a file resource component is that a resource content item can be listed in<br />
navigational components such as menus and navigators.<br />
Image element<br />
You store an image in an image element.<br />
When you store an image in an image element:<br />
v You can reference the image anywhere in your site regardless of the original file location or URL.<br />
v The image is automatically transferred to other servers during syndication.<br />
v You can reference the image element within other items as required.<br />
Creating an image element<br />
To create an image element, you can either add an image element to an authoring template, site area or<br />
content item, or create an image component.<br />
Note: Images with names that include non-ascii characters cannot be pre-rendered. If you are<br />
pre-rendering a site, you must rename the image before adding it to the image element.<br />
Valid mime types<br />
You can configure which mime types are valid for an image element by editing the<br />
imageresourcecmpnt.allowedmimetypes setting. See “<strong>Web</strong> content authoring options” on page 51 for<br />
further information.<br />
JSP elements<br />
You use a JSP element to store a path to a JSP. When rendered within a presentation template or element<br />
design, a request to a JSP is generated and processed.<br />
Creating a JSP element<br />
To create a JSP element, you can either add a JSP element to an authoring template, site area or content<br />
item, or create a JSP component.<br />
Syndication:<br />
Syndication will not move the JSP page referred to in a JSP element. Only the item containing the JSP<br />
element is moved. You will need to store the JSP page in the same folders of both the subscribing and<br />
syndicating servers.<br />
Note:<br />
The JSP referenced within a JSP component must not include a reference, directly or indirectly, to the<br />
same JSP component. This includes references within web content tags or the API. If it does, a loop is<br />
created and errors will occur.<br />
Building a web content system 453
Related tasks:<br />
“Using a JSP element” on page 319<br />
You use a JSP element to store a path to a JSP. When rendered within a presentation template or element<br />
design, a request to a JSP is generated and processed.<br />
Style sheet element<br />
You store a style sheet file in a style sheet element.<br />
Note: You cannot use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to create or edit style sheet files.<br />
Creating a style sheet element<br />
You can only use a style sheet element by creating a style sheet component. You cannot add a style sheet<br />
element to authoring templates, site areas or content items.<br />
Related tasks:<br />
“Using a style sheet element” on page 375<br />
You store a style sheet file in a style sheet element. You can only use a style sheet element by creating a<br />
style sheet component. You cannot add a style sheet element to authoring templates, site areas or content<br />
items.<br />
Using style sheets in items:<br />
Style sheets can be used to format the look and feel of <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> pages in the same way<br />
as normal web pages.<br />
Creating and referencing style sheet elements<br />
Style sheet elements can only be stored in style sheet components.<br />
To link a style sheet component to a specific authoring template, you must select a style sheet component<br />
as the default style sheet in an authoring template.<br />
To link a style sheet component to a specific site area or content item, you must add a component<br />
reference element to a site area or content item and select a style sheet component.<br />
Referencing a style sheet element in a presentation template<br />
Style sheet elements are referenced in the "header" section of a presentation template using either a style<br />
element tag or component tag.<br />
Table 76. Referencing a style sheet element in a presentation template<br />
Details<br />
Code example<br />
To use the style sheet<br />
specified in the authoring<br />
template of the current<br />
content item, you must use<br />
a tag.<br />
To use the style sheet<br />
selected in a component<br />
reference element stored in<br />
either the current site area<br />
or content item, you must<br />
use a tag.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
454 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 76. Referencing a style sheet element in a presentation template (continued)<br />
Details<br />
To use a specific style<br />
sheet, you must use a<br />
tag.<br />
Code example<br />
<br />
<br />
<br />
<br />
<br />
<br />
When rendered in web content, references to style sheet components are rendered as external style sheet<br />
links:<br />
<br />
<br />
<br />
<br />
<br />
<br />
Using styles in HTML tags<br />
Styles are used in HTML stored in presentation templates and element designs in the same way as<br />
normal HTML. The style must exist in the style sheet that has been referenced in the presentation<br />
template used to render the HTML.<br />
For example, to add a class called "wcm" to a heading tag:<br />
Heading<br />
Using styles in web content tags<br />
Style sheets can be used to format the style of content retrieved using <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags. The<br />
style must exist in the style sheet referenced in the presentation template used to render the <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> tag.<br />
For example, to format the links in a menu using a style sheet class called "wcm", the following<br />
placeholder tag would be used:<br />
<br />
Selection elements<br />
You use these elements to make selections from existing elements and data.<br />
Component reference element<br />
You use a component reference element to store a reference to a component.<br />
You can use component reference elements in two ways:<br />
v A component-reference element can be added to an authoring template. This then allows content<br />
creators to select an existing component from the component library rather than build the component<br />
themselves.<br />
v By referencing a component-reference element in a presentation template or another element, the<br />
component being displayed can be changed without having to change the presentation template or<br />
element design.<br />
For example, If you referenced a component-reference element called "Featured Product" in more than<br />
one presentation template the element referenced within the component-reference element can be<br />
changed without having to edit the presentation templates.<br />
Building a web content system 455
Creating a component reference element<br />
To create a component reference element, you can either add a component reference element to an<br />
authoring template, site area or content item, or create a component reference component.<br />
Date and time element<br />
You use a date and time element to store a date or time to be displayed on a web page.<br />
Creating a date and time element<br />
To create a date and time element, you can either add a date and time element to an authoring template,<br />
site area or content item, or create a date and time component.<br />
Option selection element<br />
An option selection element is used to present a list of predefined options that your content creators can<br />
select from when creating a content item. An option selection element can only be added to an authoring<br />
template.<br />
When using an option selection element, you can either enter a custom set of options, or select a set of<br />
categories. Which option you use will depend on how you want to use the option selection element.<br />
Simplifying item profiling<br />
If you select a set of categories in a option selection element, you can choose to have the categories that a<br />
user selects when creating a content item added to the item's profile. This means you can use multiple<br />
option selection elements on a content item form to simplify the process of profiling a content item. For<br />
example, if you used separate taxonomies for "product type", "team" and "campaign", you could use three<br />
separate option selection elements in an authoring template. This would make it easier for your content<br />
creators to select categories from each taxonomy on the content form.<br />
Displaying different text on a rendered page<br />
A simple use-case for using option selection elements is when you want to enable content creators to<br />
select from a short list of text options that will then be rendered on a page. For example, if you wanted to<br />
indicate different document types such as a "procedure", "policy" or "news" on the rendered page.<br />
Working with custom code<br />
Option selection elements can also be used to allow content creators to select different options that can<br />
then be used as parameters in some custom code such as a custom workflow or a JSP component.<br />
User selection element<br />
A user selection element stores a selection of users or groups.<br />
Creating a user selection element<br />
To create a user selection element, you can either add a user selection element to an authoring template,<br />
site area or content item, or create a user selection component.<br />
Using a user selection element<br />
Click Select Users to select users and groups.<br />
v Select either Users or Groups.<br />
v Type text to search for in the Search field and then click Search. Leave the Search field blank to<br />
display all users or groups.) Select the required users or groups and then click OK.<br />
456 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v To remove a user or group, select the users or groups you would like to remove and then click<br />
Remove.<br />
Note: Virtual users cannot be selected in a user selection element.<br />
Personalized content<br />
You use these elements to create or reference personalized content.<br />
Personalization element<br />
A personalization element stores a reference to a personalization rule or content spot generated by Portal<br />
Personalization. To use a personalization element you must create a personalization component.<br />
A personalization element can:<br />
v display personalization content within a presentation template or element design.<br />
v display a link to personalization content within a presentation template or element design.<br />
v display attributes of personalization content within a presentation template or element design.<br />
Creating a personalization element<br />
You can only use a personalization element by creating a personalization component. You cannot add a<br />
personalization element to authoring templates, site areas or content items.<br />
Note: A maximum of 100 items can be displayed in a single Personalization element.<br />
Access controls<br />
When creating a personalization element, a user will only be able to select those personalization rules and<br />
content spots that they have access to in Portal Personalization.<br />
The personalization rule or content spot selected in the personalization element will only be rendered if<br />
the user viewing the web content has access to the personalization rule or content spot in Portal<br />
Personalization.<br />
Recreating Personalization Rules and content spots<br />
If you delete a Personalization Rule or content Spot that has been referenced in a Personalization element<br />
and then create a new Personalization Rule or content spot with the same name, it will no longer be<br />
displayed in the Personalization element. You will need to edit the Personalization element and reselect<br />
the Personalization Rule or content spot.<br />
Caching Personalization components<br />
<strong>Web</strong> content caching can sometimes be used with Personalization components but will depend on the<br />
conditions set in the personalization rule, or the resources used to determine the rule results. Cache<br />
testing will be required to determine if the content returned by your personalization component can be<br />
cached using web content caching.<br />
Related tasks:<br />
“Using a Personalization element” on page 352<br />
A Personalization element stores a reference to a rule or content spot.<br />
Taxonomy element<br />
A taxonomy element defines the layout of a category selection form that enables users to select categories<br />
to display in a personalized menu.<br />
Building a web content system 457
You configure the element by selecting either a taxonomy or a category to be the start area of the<br />
category selection tree. You then select a child depth relative to the start area. Select "Include Start" if you<br />
would like the start area to display in the category selection tree. This option has no effect if the start area<br />
is a taxonomy.<br />
There are two element design options available: one is rendered when the logged in user has selected the<br />
category that is to be displayed, and the other is rendered if the user has not selected the category. These<br />
element designs are rich text elements, and are used in a similar fashion to the navigator and menu<br />
elements.<br />
Note: To use this feature you must configure a property extension database to store user-specific data.<br />
SeeManaging user data for further information.<br />
Creating a taxonomy element<br />
You can only use a taxonomy element by creating a taxonomy component. You cannot add a taxonomy<br />
element to authoring templates, site areas or content items.<br />
Related tasks:<br />
“Using a taxonomy element” on page 378<br />
You use a taxonomy element to display a list of categories from a taxonomy.<br />
Page navigation element<br />
A page navigation element provides navigation controls that are used to navigate through a set of results<br />
generated by menus, navigators, personalization and search elements.<br />
A page navigation element can generate two kinds of page navigation controls:<br />
v Shuttle controls provide navigation relative to the current page. This includes sequential linking to the<br />
previous or next page of results and quick linking to the first and last pages in the set.<br />
v Paging controls provide navigation according to the page number of the result set. A list of page<br />
number links is displayed, along with a continuation link for access to the previous or next set of page<br />
numbers, if all page numbers are not displayed.<br />
A page navigation element can combine both shuttle and paging controls, as in the following example.<br />
Table 77. Page navigation layout example<br />
Layout<br />
section: First PreviousContinuation<br />
Navigation<br />
example:<br />
Page<br />
NumbersContinuation<br />
>> Items to<br />
display:<br />
10|50|<br />
All<br />
When rendered the page navigation element might look like this:<br />
Using the page navigation element in a remote rendering portlet<br />
The page navigation element will not work when rendered in a remote rendering portlet that is<br />
configured to receive no links from other portlets. You must configure a remote rendering portlet to<br />
receive links either from "This portlet" or "Other portlets and this portlet" to use a page navigation<br />
element.<br />
458 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Creating a page navigation element<br />
You can only use a page navigation element by creating a page navigation component. You cannot add a<br />
page navigation element to authoring templates, site areas or content items.<br />
Related tasks:<br />
“Using a page navigation element” on page 346<br />
A page navigation element provides navigation controls that are used to navigate through a set of results<br />
generated by menus, navigators, personalization and search elements.<br />
Using custom caching<br />
You can overrule the default caching parameters of a site by using "cache" and "expire" parameters in<br />
URLs and <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags.<br />
Note: Custom caching can only be used when a server's default <strong>Web</strong> <strong>Content</strong> cache is set to none or<br />
advanced caching. If basic caching is used as your default web <strong>Content</strong> cache, Custom caching cannot be<br />
used.<br />
There are two basic methods in which custom caching can be used with your default server caching<br />
settings:<br />
Default Server Caching Enabled<br />
In this scenario, some form of default server caching has been enabled. Caching parameters<br />
within connect tags and URLs can be used to either:<br />
v Disable caching for the data being requested.<br />
v Apply different caching parameters to the data being requested.<br />
This method is used with sites that are mostly static, but which contain a few dynamic elements<br />
that require a different caching strategy from the server's default caching strategy.<br />
Default Server Caching Disabled<br />
In this scenario, default server caching has been disabled. Caching parameters within connect<br />
tags and URLs can be used to enable caching for the data being requested.<br />
This scenario is used with sites that contain a large number of elements requiring different<br />
caching strategies.<br />
Cache parameters<br />
You use "cache" parameters in <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags and URLs to specify whether the retrieved<br />
data should be cached or not, and if so, how it should be cached. The "cache" parameter is not<br />
mandatory.<br />
Custom caching parameters can only be used when a server's default <strong>Web</strong> content cache is set to none or<br />
advanced caching. If basic caching is used as your default web <strong>Content</strong> cache, custom caching cannot be<br />
used. Custom caching can be used to set cache parameters for basic, advanced and data caches. When<br />
custom caching is used in a connect tag, the caching applies to the data being retrieved via the connect<br />
tag. When custom caching is used in a URL request, the caching applies to the entire page being<br />
requested.<br />
Table 78. Values for the CACHE parameter<br />
Basic caching Advanced Caching Data caching<br />
CACHE=SITE<br />
CACHE=SESSION<br />
CACHE=NONE<br />
CONTENTCACHE=SITE<br />
CONTENTCACHE=SESSION<br />
CONTENTCACHE=USER<br />
CONTENTCACHE=SECURED<br />
CONTENTCACHE=PERSONALIZED<br />
CONTENTCACHE=NONE<br />
CONNECTORCACHE=SITE<br />
CONNECTORCACHE=SESSION<br />
CONNECTORCACHE=NONE<br />
Building a web content system 459
Examples:<br />
<br />
http://host:port/wps/wcm/connect/library/sitearea/contentcache=site&contentcache=session<br />
Custom caching strategies<br />
v When applying custom caching to static content, you would mostly use CACHE=SITE,<br />
CACHE=SESSION or CONTENTCACHE=USER.<br />
v When User Groups are used in implementing site security, you can use the SECURED custom caching<br />
strategy: CONTENTCACHE=SECURED.<br />
v When Categories and/or Keywords, along with User Groups, are used for customization of your site,<br />
you can use the PERSONALIZED custom caching strategy: CONTENTCACHE=PERSONALIZED.<br />
v If your Server's default web <strong>Content</strong> Cache is set to Advanced, you must use<br />
CONTENTCACHE=NONE to disable caching.<br />
v If retrieving external data you must use CONNECTORCACHE=NONE to disable caching.<br />
CacheKey parameter<br />
The CacheKey parameter is used when caching content via the basic cache. A CacheKey is used as a key<br />
instead of a URL. This is useful if you have multiple URLs for the same page but only want it cached<br />
once. This reduces the amount of memory used by the cache.<br />
Example:<br />
The following URLs may use the same web page called news.html.<br />
<br />
<br />
<br />
In this example, "news" is used as the CacheKey to store the value of the response from these connect<br />
tags. This means that news.html is cached only once instead of being cached three separate times.<br />
Cache expire parameters<br />
You use the "expires" parameter in <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags and URLs to specify how long to<br />
maintain data in the cache before it is expired. Once data expires from a cache, the next request for the<br />
data will be retrieved from the original server. The expires parameter is not mandatory.<br />
Custom expiring parameters can only be used when a server's default <strong>Web</strong> content cache is set to none or<br />
advanced caching. If basic caching is used as your default web content cache, custom expiring cannot be<br />
used. Even though you cannot use custom expiring with basic caching enabled, you can still use custom<br />
expiring (when using the advanced cache) to expire data in the basic cache.<br />
Values for the expires parameter can represent either a relative period or an absolute date and time:<br />
Basic cache<br />
v EXPIRES="ABS {date and time}"<br />
v EXPIRES="REL {integer}{units}"<br />
Advanced Caching<br />
v CONTENTCACHEEXPIRES="ABS {date and time}"<br />
v CONTENTCACHEEXPIRES="REL {integer}{units}"<br />
460 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Data caching<br />
v CONNECTORCACHEEXPIRES="ABS {date and time}"<br />
v CONNECTORCACHEEXPIRES="REL {integer}{units}"<br />
Examples:<br />
<br />
http://host:port/wps/wcm/connect/library/sitearea/contentcache=site&expires="REL 9000s"<br />
Custom expiring strategies<br />
v CONNECTORCACHEEXPIRY= must be used when setting custom expiry parameters when retrieving<br />
external data using a connect tag or URL request.<br />
v If your default cache is basic, or if you specify CACHE= in a connect tag or URL request, you must use<br />
EXPIRES=<br />
v If your default cache is advanced, or if you specify CONTENTCACHE= in a connect tag or URL<br />
request, you must use CONTENTCACHEEXPIRES=<br />
v If your default cache is none, and only CACHE=, or CONTENTCACHE= is specified in a connect tag<br />
or URL request, the connect.connector.httpconnector.defaultcacheexpires property in the WCM<br />
WCMConfigService service is used to expire the data.<br />
Specifying an absolute time<br />
An absolute date specifies the date and time the document expires.<br />
To indicate a time use the following format:<br />
v ABS {date and time}<br />
For example:<br />
v ABS Mon, 29 May 2000 03:04:18 GMT<br />
A request for this document after this exact time will cause the document to be flushed from the cache<br />
and a new copy retrieved.<br />
When specifying an absolute expiry date, the date must be prefixed with ABS, and the date specified<br />
must be in one of the following formats:<br />
v Mon, 06 Nov 2000 09:00:00 GMT<br />
v Monday, 06-Nov-00 09:00:00 GMT<br />
v Mon Nov 6 09:00:00 2000.<br />
v 6 Nov 2000 9:00 AM.<br />
The first three date formats are those used in the standard HTTP specification, while the last is a simple,<br />
short date format for convenience.<br />
When using absolute times and dates to expire data, cached items remain in the cache until they expire.<br />
Once expired, the original item is retrieved on the next request and a copy placed in the cache, but as the<br />
absolute time or date has already expired, the item will immediately be expired. Essentially, once expired,<br />
an item will not be permanently cached again when using absolute times and dates. All absolute time<br />
values are in GMT.<br />
Building a web content system 461
Specifying a relative period<br />
Rather than specifying an absolute time, a relative time can be used to specify that the document will<br />
expire some time after the document is placed in the cache, for example a number of hours or days. The<br />
actual time the document expires is then calculated from the time the document is retrieved and added to<br />
the cache.<br />
Rather than specifying a fixed time for the expiry of cached data, the expiry can be specified relative to<br />
the time that the data was added to the cache, for example, a number of hours or days.<br />
To indicate a relative time use the following format:<br />
v REL {integer}{units}<br />
Note:<br />
The space after REL is required.<br />
The integer specifies a whole number of time units. Decimal numbers are not supported. The units are<br />
specified by using a single case-insensitive character:<br />
v S: Seconds<br />
v H: Hours<br />
v D: Days<br />
v M: Months<br />
Table 79. Formatting examples<br />
In a connect tag<br />
In a URL Request<br />
v EXPIRES="REL 2M"<br />
v EXPIRES="REL 9000s"<br />
v<br />
v<br />
EXPIRES=REL 2M<br />
EXPIRES=REL 9000s<br />
The first example indicates an expiry of two months. The second indicates 9000 seconds (2.5 hours).<br />
By design only seconds, hours, days or months may be specified. Minutes are not supported to simplify<br />
the interface (M is used for months). Instead, a multiple of seconds can be used (for example, 300 seconds<br />
for 5 minutes).<br />
Caching <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> elements<br />
You can apply caching to elements by using "connect" tags to reference elements within presentation<br />
templates instead of the component or element tag.<br />
Important:<br />
v See “Enabling connect tags” on page 78 for information on enabling connect tags.<br />
v Process Connect Tags must be selected in a presentation template form for connect tags to be<br />
processed.<br />
Example: Applying custom caching<br />
This is an example of the type of tag that can be used to cache individual elements within a presentation<br />
template.<br />
<br />
<br />
462 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 80. Connect tag details<br />
Parameter<br />
Details<br />
SRV="cmpnt"<br />
The Service for this Module is "cmpnt".<br />
PATH="/libraryname/<br />
SiteArea/<strong>Content</strong>"<br />
SOURCE="library"<br />
CMPNTNAME="TestNav"<br />
CONTENTCACHE="site"<br />
EXPIRES="REL 9000s"<br />
This sets the context for the element.<br />
The "sitepath" and "name" placeholders can be used instead of "PATH=" when<br />
caching menus or navigators:<br />
[placeholder tag="sitepath"]/[placeholder tag="name"]<br />
Source is either "content", "sitearea" or "library". In this example it is "library" because<br />
the element we are caching comes from a component.<br />
This is the name of the element to be cached.<br />
This is either "site or "session".<br />
The time the component will expire from the cache is set here.<br />
The first time the presentation template is rendered, the element will be added to the cache. The next<br />
time the presentation template is rendered, the element will be displayed from the cache instead of being<br />
rendered afresh by the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application. Not until it is expired from the cache will the<br />
element be rendered again by the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application. For this reason, only elements that<br />
do not require to be freshly rendered every time a page is accessed should be cached.<br />
If you are caching a component that is used in more than one presentation template, it is best practice to<br />
save the connect tag as a HTML component and then reference that component in each presentation<br />
template. If you then need to change the cached component tags, you only need to change it in the<br />
HTML component rather than in multiple presentation templates.<br />
If you have a set of cached components that use the same "Expires" setting, then it is best practice to save<br />
the "Expires=" parameter as a HTML component and then reference that component in each connect tag<br />
used to cache components. If you then need to change the "Expires=" parameter, you only need to change<br />
it in the HTML component rather than in multiple connect tags. This also applies to any common cache<br />
tags.<br />
Example: Disabling caching<br />
You can also use this method to disable caching. In this example the property CONTENTCACHE=NONE<br />
is used to disable caching of this element.<br />
<br />
<br />
URL generation using PathCmpnt and URLCmpnt tags<br />
There are some special considerations to keep in mind when using URLCmpnt and PathCmpnt tags to create<br />
URLs to other web content items from within your content.<br />
Using the URLCmpnt tag<br />
The URL component tag URLCmpnt can be used to create URLs to content items in a presentation template.<br />
If the attribute mode="portal" is set, the content item is displayed through a content viewer portlet. URLs<br />
to the JSR 286 web content viewer differ from URLs to the traditional web content viewer. When the<br />
URLCmpnt tag is used in content rendered in the JSR 286 <strong>Web</strong> content viewer, the tag creates URLs in an<br />
updated format that the portlet understands. When the tag is used from a traditional web content viewer,<br />
the tag creates URLs in the older format. This means that the URLCmpnt tag cannot be used to link from<br />
the traditional web content viewer to the JSR 286 web content viewer or vice versa.<br />
Building a web content system 463
Using the PathCmpnt tag<br />
The path component is used to create the base part of a URL in web content. Typically, the base part is<br />
extended by some string that identifies the content to be displayed. If the path component is used inside<br />
the context of a JSR 286 web content viewer, the generated URL has the updated URL format and thus<br />
cannot be displayed with the traditional web content viewer.<br />
Adding URL parameters<br />
Adding URL parameters to a regular portal URL will not affect the JSR 286 web content viewer. For this<br />
purpose you must use the URLCmpnt or PathCmpnt tag. Additional URL query parameters, like those used<br />
with the traditional web content viewer, can be appended to the URLs generated by these tags.<br />
Personalizing federated documents<br />
Portal Personalization provides the federated documents feature to retrieve metadata about documents<br />
stored in external content management systems or document repositories, such as <strong>IBM</strong> <strong>Lotus</strong> Quickr, <strong>IBM</strong><br />
DB2 ® <strong>Content</strong> <strong>Manager</strong>, or <strong>IBM</strong> FileNet <strong>Content</strong> <strong>Manager</strong>. You can use a personalization component in<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to display metadata from federated documents and to create links that can be<br />
used to download or open the documents.<br />
Note: The document metadata is acquired from the remote systems using the Document Services remote<br />
interfaces as supported by <strong>Lotus</strong> Quickr, DB2 <strong>Content</strong> <strong>Manager</strong>, and FileNet <strong>Content</strong> <strong>Manager</strong>.<br />
Creating a federated documents selection rule<br />
Create a new selection rule that selects metadata of documents contained in a specific folder of a remote<br />
content management system or document repository.<br />
Before you create a rule to access federated documents information, ensure that you have configured the<br />
feature as described in “Setting up support for federated documents” on page 58.<br />
1. Open the Personalization Editor.<br />
2. Navigate to the folder where you want to create the rule, or create a folder for the new rule.<br />
3. Click New > Rule.<br />
4. Enter a name for the rule.<br />
5. Optional: Enter a description for the rule to identify the kind of data that the rule selects.<br />
6. Click content * in the rule editor, and select Federated Documents.<br />
7. Click value * in the rule editor, and select the folder on the remote system. You can specify the<br />
folder in one of several ways:<br />
v Click the > symbol, select Select Feed URL, and then use the selection interface to navigate to the<br />
folder.<br />
v Enter the URL of the folder.<br />
v Enter the URL of any other ATOM feed available on the network. The ATOM data exposed by<br />
those feeds will be mapped into corresponding AttributeResource tags. The parameter defining the<br />
maximum number of entries to be retrieved is ignored in such selection rules.<br />
8. Click Submit in the rule editor.<br />
9. Optional: Click show all items, and specify the maximum number of entries to be retrieved.<br />
10. Click Save.<br />
You can now use this rule in a personalization component to render the selection result of this rule in<br />
web content.<br />
464 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Using a federated documents rule in a personalization component<br />
To access the information from a federated documents rule in your web content system, create a<br />
personalization component, associate it with the rule, and specify the design for displaying document<br />
information retrieved by the rule.<br />
1. Open the authoring portlet, and click New > Component > Personalization.<br />
2. Enter a name and description for the new component.<br />
3. Click Search in the Personalization Element section, and select the federated documents selection<br />
rule.<br />
4. Define the design for the headers, footers, and individual documents selected by the configured<br />
selection rule. Use the AttributeResource element to reference individual metadata fields from the<br />
selected documents.<br />
5. Save the component.<br />
You can now preview your component and reference it from within presentation templates, other element<br />
designs, or a web content viewers.<br />
Sample designs for a federated documents selection rule:<br />
When rendering document metadata information retrieved with a federated documents selection rule,<br />
you can tailor the header, footer, and menu search result designs for simple or more elaborate<br />
presentations.<br />
Bulleted list design<br />
To render a simple bulleted list of links to the documents, you can use a design like that described here.<br />
Header<br />
<br />
Design for each menu search result<br />
<br />
<br />
[AttributeResource attributeName="title"]<br />
<br />
<br />
Footer<br />
<br />
Table list design<br />
To render a more complete list of information with a table, you can use a design like that described here.<br />
Header<br />
<br />
<br />
Title<br />
Authors<br />
Load<br />
Edit<br />
<strong>Content</strong> Type<br />
Size<br />
Updated<br />
Published<br />
<br />
Building a web content system 465
Design for each menu search result<br />
<br />
[AttributeResource attributeName="title"]<br />
[AttributeResource attributeName="authors" separator=","]<br />
download<br />
open<br />
[AttributeResource attributeName="contentType"]<br />
[AttributeResource attributeName="size"]<br />
[AttributeResource attributeName="updated"]<br />
[AttributeResource attributeName="published"]<br />
<br />
Footer<br />
<br />
AttributeResource values for federated documents:<br />
The AttributeResource tag is used as a placeholder to display attributes from a federated documents<br />
selection rule within a personalization element design. It cannot be used in a presentation template or<br />
other element types.<br />
When used with a federated documents selection rule, the following values for the attributeName<br />
attribute of the AttributeResource tag are supported for each document in the result set:<br />
id This attribute displays the unique ID of the document.<br />
title This attribute displays the title of the document. The actual result depends on the corresponding<br />
attribute mapping that needs to exist at the remote content management system. If no such<br />
mapping exists, the file name is displayed.<br />
authors<br />
This attribute displays the names of the authors of the document. The actual result depends on<br />
the corresponding attribute mapping that needs to exist at the remote content management<br />
system. If no such mapping exists, an empty string is displayed.<br />
published<br />
This attribute indicates the point in time of the first availability of the document. The actual result<br />
depends on the corresponding attribute mapping that exists at the remote content management<br />
system. If no such mapping exists, an empty string is displayed.<br />
updated<br />
This attribute indicates the point in time of the last update to the given document. The actual<br />
result depends on the corresponding attribute mapping that exists at the remote content<br />
management system. If no such mapping exists, an empty string is displayed.<br />
contentType<br />
This attribute displays the MIME type of the document. If this information is not served by the<br />
remote content management system, an empty string is displayed.<br />
contentLink<br />
This attribute displays the absolute URL that can be used to download the document.<br />
viewLink<br />
This attribute displays the absolute URL that can be used to open the given document in context<br />
of the remote content management user interface. If no such URL is returned by the remote<br />
content management system, an empty string is displayed.<br />
Note: The viewLink attribute is not supported if you are connected to a DB2 <strong>Content</strong> <strong>Manager</strong><br />
repository.<br />
size<br />
This attribute displays the size of the document in bytes. If this information is not served by the<br />
remote content management system, an empty string is displayed.<br />
466 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Here is an example of how to use these attribute values in a design:<br />
<br />
<br />
[AttributeResource attributeName="title"]<br />
<br />
<br />
Adding tagging and rating to web content<br />
Just as you can tag and rate portal resources like pages and portlets, you can also tag and rate content<br />
items generated with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> and displayed with the JSR 286 web content viewer.<br />
Two plug-in components are available to support the tagging and rating of content items in your web<br />
content system. You can add the [Plugin:tags] component and [Plugin:ratings] component in a<br />
presentation template to quickly integrate tagging and rating widgets into the current content item.<br />
Related tasks:<br />
“Managing tagging and rating for web content” on page 90<br />
When using tagging and rating with web content, the JSR 286 web content viewer provides additional<br />
scope options for the filtering of tagging and rating results. Because changes in the web content system<br />
can affect the accuracy of the tagging and rating information used by the portal, it is important to keep<br />
the scope information up to date by synchronizing the scopes on a regular basis.<br />
Adding a tagging widget to web content<br />
You can add a tagging widget to a content item by adding a [Plugin:tags] component to your<br />
presentation template. By default the plug-in component is rendered using the TaggingWidgetDesign<br />
design, which is included in the web content library <strong>Web</strong> Resources v70, or you can create your own<br />
design.<br />
Note: When using tagging and rating with web content, ensure that synchronization of the tagging and<br />
rating scopes has been set up for the portal.<br />
To add a tagging widget to a content item, include the tagging plug-in in your presentation template.<br />
For example:<br />
[Plugin:tags]<br />
The tagging plug-in supports the following parameters that are specified in a key=value format:<br />
design=path<br />
The design parameter indicates which design to use when rendering the tagging widget. Specify<br />
the path information using the full library path to the HTML component that contains the design<br />
template for the tagging widget. For example:<br />
[Plugin:tags design="<strong>Web</strong> <strong>Content</strong>/folder/myTaggingDesign"]<br />
If the design parameter is not specified, a default design is defined in the TaggingWidgetDesign<br />
component, which is provided with the <strong>Web</strong> Resources v70 library that is included in the product.<br />
During rendering the system checks the following locations for the default design:<br />
1. The current web content library<br />
2. The web content library <strong>Web</strong> Resources v70<br />
actionScope=scope<br />
The actionScope parameter indicates the scope of tags that you want to show in this widget. For<br />
a list of possible values see the description of the tagScope parameter used with the inline tag<br />
widget. For example:<br />
[Plugin:tags actionScope="personal_private"]<br />
Building a web content system 467
Related tasks:<br />
“Synchronizing scopes for web content” on page 91<br />
When users are tagging or rating web content, the JSR 286 web content viewer provides the tagging or<br />
rating information to the portal, where it is stored. If information in the web content system changes, this<br />
can cause the tagging and rating information stored in the portal to be out of sync. This can happen, for<br />
example, if content items are moved or category information changes. To ensure the tagging and rating<br />
information is current, synchronize the scopes used for web content.<br />
Adding a rating widget to web content<br />
You can add a rating widget to a content item by adding a [Plugin:ratings] component to your<br />
presentation template. By default the plug-in component is rendered using the RatingWidgetDesign<br />
design, which is included in the web content library <strong>Web</strong> Resources v70, or you can create your own<br />
design.<br />
Note: When using tagging and rating with web content, ensure that synchronization of the tagging and<br />
rating scopes has been set up for the portal.<br />
To add a rating widget to a content item, include the rating plug-in in your presentation template.<br />
For example:<br />
[Plugin:ratings]<br />
The rating plug-in supports the following parameters that are specified in a key=value format:<br />
design=path<br />
The design parameter indicates which design to use when rendering the rating widget. Specify<br />
the path information using the full library path to the HTML component that contains the design<br />
template for the rating widget. For example:<br />
[Plugin:ratings design="<strong>Web</strong> <strong>Content</strong>/folder/myRatingDesign"]<br />
If the design parameter is not specified, a default design is defined in the RatingWidgetDesign<br />
component, which is provided with <strong>Web</strong> Resources v70 library that is included in the product.<br />
During rendering the system checks the following locations for the default design:<br />
1. The current web content library<br />
2. The web content library <strong>Web</strong> Resources v70<br />
actionScope=scope<br />
The actionScope parameter indicates the scope of tags that you want to show in this widget. For<br />
a list of possible values see the description of the ratingScope parameter used with the inline tag<br />
widget. For example:<br />
[Plugin:tags actionScope="community"]<br />
Related tasks:<br />
“Synchronizing scopes for web content” on page 91<br />
When users are tagging or rating web content, the JSR 286 web content viewer provides the tagging or<br />
rating information to the portal, where it is stored. If information in the web content system changes, this<br />
can cause the tagging and rating information stored in the portal to be out of sync. This can happen, for<br />
example, if content items are moved or category information changes. To ensure the tagging and rating<br />
information is current, synchronize the scopes used for web content.<br />
Profiling strategies<br />
You use the profiling features of <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to group content items into different types of<br />
content.<br />
Profiling methods<br />
You use the following profiling methods to group content items.<br />
468 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Profiling content items<br />
Taxonomies and categories<br />
A Category refers to the subject matter of your content item. For example, your content item may<br />
be of the category New Products or Latest News. You use taxonomies to group categories. Users<br />
select from a predefined list of categories when profiling a <strong>Content</strong> item.<br />
In most cases, you should only use bottom-level categories to profile content. This will give you<br />
more control over what will display in menus.<br />
Keywords<br />
You also use Keywords to profile content. Unlike categories, which are chosen from a predefined<br />
list, you can enter any keywords you like when creating content items.<br />
Additional profiling options<br />
Profiling users<br />
You can add profile information to users. This can be used as search parameters in menu<br />
elements.<br />
Profiling rendering portlets<br />
You can enter profile information when configuring a rendering portlet. This can be used as<br />
search parameters in menu elements.<br />
Profiling versus access controls<br />
Profiling can be used to personalize a website for different users. This is different from using item access<br />
controls to limit what items a user can access. In a profile based personalized site, although a user may<br />
not be able to access all the pages via personalized menus, they may still be able to access other pages by<br />
using navigators, or by searching for content. Using access controls limits a user to only view items that<br />
they have been granted access to.<br />
Related tasks:<br />
“Editing user profiles” on page 440<br />
You can add profile information to users. User profiles can be used as search parameters in menus.<br />
Planning a taxonomy<br />
Before creating a taxonomy, you should analyze how the taxonomy will be used in your site to determine<br />
the best structure for your taxonomy.<br />
You group categories within taxonomies.<br />
You cannot use taxonomies in menu searches. If you would like to have a menu return results based on<br />
content profiled with any category in a taxonomy, you should create a single top-level category and base<br />
the menu on the top-level category.<br />
"Metabank" example taxonomy<br />
v Financial<br />
– Banking Solutions<br />
– Interest Rates<br />
- Personal<br />
- Business<br />
- Corporate<br />
v News<br />
Building a web content system 469
In this example:<br />
v Taxonomy = MetaBank taxonomy<br />
v "Financial" is the ancestor of "Interest Rates", "Personal", "Business", "Corporate" and "Banking<br />
Solutions".<br />
v "Personal", "Business" and "Corporate" are the descendants of "Interest Rates" and "Financial".<br />
Using categories to profile content<br />
When building a hierarchy of taxonomies and categories it is important to consider how a menu will use<br />
your categories in a search. This is because menus search both upwards and downwards within groups<br />
of categories.<br />
Table 81. Examples<br />
Scenario<br />
If you base a menu on a top-level category, all content<br />
profiled with categories belonging to that top-level<br />
category and their descendants will appear in the menu.<br />
If you base a menu on a mid-level category, all content<br />
profiled with the mid-level category or its descendants or<br />
its ancestors appear in the menu.<br />
If you base a menu on a bottom-level category, all<br />
content profiled with the bottom-level category or its<br />
ancestors will be returned by the menu.<br />
Example<br />
In the above example, a menu based on Financial will<br />
display content profiled with any of the following:<br />
v Financial<br />
– Banking Solutions<br />
– Interest Rates<br />
- Personal<br />
- Business<br />
- Corporate<br />
A Menu based on Interest Rates, it will display <strong>Content</strong><br />
profiled with any of the following:<br />
v<br />
Financial<br />
– Interest Rates<br />
- Personal.<br />
- Business.<br />
- Corporate.<br />
A Menu based on Business will display content profiled<br />
with any of the following:<br />
v Financial<br />
– Interest Rates<br />
- Business.<br />
Presenting web content<br />
The presentation of content items displayed in your website is determined by the presentation template<br />
used to display the content item.<br />
Presentation templates<br />
Presentation templates determine the structure of each web page in your site and which elements and<br />
components are displayed on each page.<br />
Presentation templates allow you to change the look of a page without having to update what is being<br />
displayed on a page. For example, a presentation template that displays a menu on the left side of a page<br />
can be changed to place it on the right without having to rebuild the menu. All web pages based on the<br />
same presentation template will be changed.<br />
470 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
There is little difference between building a presentation template and using HTML to build a web page.<br />
It may even be helpful to build a "mock-up" of the page you are designing in HTML before creating a<br />
new presentation template. Simply replace the different sections of your web page with references to<br />
elements using web content tags.<br />
You need to create a separate presentation template for each page type in your site.<br />
Related tasks:<br />
“Creating a presentation template” on page 260<br />
You use a presentation template define the layout of elements displayed on a web page, and to define the<br />
default properties of a web page such as the background and default font of a web page.<br />
Page layout<br />
You use HTML to define the layout of a presentation template in the same way you use HTML to define<br />
the layout of a web page.<br />
This is an example of a possible layout of a presentation template. Although it is recommended that<br />
HTML elements (such as tables) be used to specify the exact layout of a presentation template, you do<br />
not have to use them. You can lay out your page in any way you want.<br />
Once the layout of a page is defined, all you need to do is reference different components into the<br />
different sections of your HTML table. (You can reference more that one component within a single table<br />
cell.)<br />
You can also enter text and HTML tags directly into a presentation template. This is useful if you have an<br />
element that needs to appear on all pages using a common presentation template. However, if that<br />
element is used on other presentation templates, it would be more efficient to save it as a component.<br />
Example<br />
This is an example of the HTML you could enter in a presentation template to set the layout of a<br />
presentation template.<br />
Building a web content system 471
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Text and <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags are then added to the different table cells to create the finished<br />
web page.<br />
Enabling Connect tags<br />
Connect tags are advanced <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags that can be used to retrieve data from external<br />
sources and apply custom caching. Process connect tags must be selected in a presentation template form<br />
for connect tags to be processed.<br />
Related tasks:<br />
“Inserting an image in an element” on page 393<br />
You can insert images into elements containing an HTML or rich text field using the Insert Image button.<br />
“Inserting a link in an element” on page 394<br />
You can insert links into elements containing an HTML or rich text field using the Insert Link button.<br />
“Inserting element tags” on page 397<br />
You can insert elements tags for all the elements of a selected authoring template into the design of a<br />
presentation element using the Insert Element Tags button.<br />
“Creating web content tags” on page 402<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags to reference elements within presentation templates and element<br />
designs.<br />
Page style<br />
You use HTML to define the default properties of a presentation template in the same way you use<br />
HTML to define the default properties of a web page.<br />
Any valid HTML property can be set including:<br />
v Margin sizes<br />
v Text colors<br />
v Background colors or images<br />
Example<br />
This is an example of the HTML you could enter in a presentation template to set default properties for a<br />
presentation template.<br />
<br />
<br />
<br />
<br />
<br />
Note: If the same page properties are used in more than one presentation template, they can be stored in<br />
a single text component that is itself referenced within the presentation template:<br />
472 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
This means that by editing a single text component, the page properties of multiple presentation<br />
templates can quickly be updated.<br />
Using cascading style sheets<br />
Default style properties cannot be set for components. The default page properties will override any page<br />
properties set in a component.<br />
Cascading style sheets can be used to control the style of components. For example, You could make the<br />
links in a menu a different color to the links in a navigator by using cascading style sheets to determine<br />
the style of different components.<br />
Note: Where possible, it is best practice to use one cascading style sheet for an entire site. A link to the<br />
style sheet should be used, rather than embedding the style sheet.<br />
Template maps<br />
Template maps are used to determine which presentation templates are used to display each content<br />
item.<br />
Template map strategies<br />
The presentation template used by a content item is determined by the relationship between the content<br />
item's authoring template and a presentation template defined in the authoring template, or a template<br />
map defined in a site area in the path of the current content item. Template maps assigned in site areas<br />
will override those set in authoring templates.<br />
This can result in the following relationships:<br />
v A content item can be displayed using two different presentation templates if linked to different site<br />
areas.<br />
v Two content items using different authoring templates can be displayed using the same presentation<br />
template if both authoring templates are mapped to the same presentation template.<br />
Defined in authoring templates<br />
If you select a default presentation template in an authoring template, it will be used as the<br />
default presentation template for all content items based on that authoring template. This will<br />
ensure that all content items based on that authoring template will be rendered with the same<br />
presentation template, but it does not guarantee design consistency between other content items<br />
located in the same site area. If a different template map is specified in any site area in the<br />
content item path, then the template map defined in the lowest part of the content item path will<br />
be used instead.<br />
Defined in site areas<br />
If you define a template map in a site area, this will ensure that all content items based on the<br />
selected authoring template will use the same presentation template in that site area. If a different<br />
template map is specified in any child site areas of the parent site area, then the template map<br />
defined in site area in the lowest part of the content item path will be used.<br />
Template map examples<br />
In these examples the following template maps are used:<br />
v Authoring Template 1 uses Presentation Template 1 as its default presentation template<br />
v Authoring Template 2 uses Presentation Template 2 as its default presentation template<br />
v Authoring Template 3 also uses Presentation Template 2 as its default presentation template<br />
Building a web content system 473
v Authoring Template 4 has no default presentation template<br />
v Site Area 1 has no template map<br />
v Site Area 2 contains a map between Authoring Template 1 and Presentation Template 2<br />
v Site Area 1 and Site Area 2 are located under Site Area A.<br />
v Site Area A contains a map between Authoring Template 4 and Presentation Template 3<br />
The presentation template used by each content item will be determined by the authoring template the<br />
content item used, and the location of the content item in the site framework.<br />
Table 82. Template Map Results<br />
<strong>Content</strong> and location<br />
Result<br />
<strong>Content</strong> 1 using Authoring Template 1 located in Site Area 1 As Site Area 1 contains no template maps, <strong>Content</strong> 1 is<br />
displayed using Presentation Template 1 which is the<br />
default presentation template of Authoring Template 1.<br />
<strong>Content</strong> 1 using Authoring Template 1 located in Site Area 2 As Site Area 2 contains a map between Authoring Template<br />
1 and Presentation Template 2, <strong>Content</strong> 1 is instead<br />
displayed using Presentation Template 2.<br />
<strong>Content</strong> 2 using Authoring Template 2 located in Site Area 1 As Site Area 1 contains no template maps, <strong>Content</strong> 2 is<br />
displayed using Presentation Template 2 which is the<br />
default presentation template of Authoring Template 2.<br />
<strong>Content</strong> 3 using Authoring Template 3 located in Site Area 1 As Site Area 1 contains no template maps, <strong>Content</strong> 3 is<br />
also displayed using Presentation Template 2 which is the<br />
default presentation template of Authoring Template 3.<br />
<strong>Content</strong> 4 using Authoring Template 4 located in Site Area 1 As Site Area 1 contains no template maps, <strong>Content</strong> 4 is<br />
displayed using Presentation Template 3 which is mapped<br />
to Authoring Template 4 in Site Area A.<br />
Element references<br />
When referencing elements in a presentation it is important to note the following:<br />
v The elements a presentation template uses must be defined in the authoring template the content is<br />
based on.<br />
v If the element being referenced does not exist in the current content item, nothing is displayed in that<br />
section of the presentation template.<br />
Although the template author can identify a number of elements that can be displayed on the content<br />
item form, whether the elements are displayed depends on the presentation template used with the<br />
authoring template to render the content form. A presentation template might not include every element<br />
defined in an authoring template, but in order for an element or element type to be available to a<br />
presentation template, the element must be included in the authoring template used to create the content.<br />
Item management features<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> includes a range of features that enable you manage the web content items used in<br />
your system.<br />
Working with folders<br />
You use folders to group sets of item types into logical groupings.<br />
Folders are used to group sets of item types into logical groupings. This is useful when you have large<br />
numbers of items in your library and want to distinguish between different groups of items within each<br />
item type view.<br />
474 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
For example, you could create the following component folders to distinguish between different types of<br />
image components:<br />
v Photos<br />
v Logos<br />
v Diagrams<br />
v Design images<br />
You can create folders for the following item types:<br />
v authoring templates<br />
v presentation templates<br />
v components<br />
The folders you create are displayed in the authoring portlet within each item type view.<br />
v Only a single item type can be stored per folder. For example, if you create a folder under the<br />
Presentation Template view, only presentation templates can be saved in that folder.<br />
v You can create folders under existing folders allowing you to create a hierarchical structure of folders.<br />
v You add items to folders selecting a folder as a location when you first create an item, or by moving or<br />
copying an item into an existing folder.<br />
Related tasks:<br />
“Creating a folder” on page 232<br />
You create a folder when you need to store a set of the same type of items in a logical grouping.<br />
Change management features<br />
You can manage changes to web content items either by creating drafts, using workflows or adding items<br />
to projects.<br />
Item status<br />
There are three major status levels that an item can be in at any one time; Draft, Published or Expired.<br />
The current state of an item indicates where the item exists within a change management process, and<br />
where that item can be viewed and accessed.<br />
Status types<br />
Draft This indicates that the item is currently being updated.<br />
Pending published<br />
An item that uses a workflow can appear in a state of pending published. This indicates that the<br />
item has entered a workflow stage that includes a publish action but the action has yet to be<br />
processed.<br />
Published<br />
A published status indicates that an item is ready to be rendered in the live site.<br />
Pending expired<br />
An item that uses a workflow can appear in a state of pending expired. This indicates that the<br />
item has entered a workflow stage that includes an expire action but the action has yet to be<br />
processed.<br />
Expired<br />
An expired status indicates that an item is ready to be expired from the live site.<br />
Changing status<br />
The status of an item can only change in a linear fashion:<br />
v Draft to Published.<br />
Building a web content system 475
v Published to Expired.<br />
v Expired to Published .<br />
v Published to Draft .<br />
You cannot change an item's status from Expired to Draft.<br />
The process of publishing and expiring items<br />
When the status of an item changes to published or expired, this does not mean that the item will have<br />
been added or removed from the rendered site. A status of published or expired means that the process<br />
of publishing or expiring an item has begun.<br />
The actual time a published item will appear on a website, or the time an expired item is removed from a<br />
website, also depends on:<br />
v how long it takes to syndicate updates to the delivery server<br />
v how long it takes for the current cache to expire<br />
Draft items<br />
Creating a draft of an item allows you to work on changes to that item without changing the published<br />
version of the item. Draft items can either be stand-alone items, or form part of a workflow. Once the<br />
changes are completed, you can choose to either publish the item, or discard the changes by cancelling<br />
the draft. You can create multiple drafts of a single item.<br />
Note: Draft items are only displayed in the Authoring Portlet and are not rendered within the published<br />
website.<br />
Working with draft items not using a workflow<br />
You can directly create a draft of any non-workflowed items.<br />
Creating a draft item<br />
To create a new draft item:<br />
v open a non-workflowed published item in edit mode and click Save as Draft. This will create a<br />
draft copy of the published item without removing the published item from the live site.<br />
v open a non-workflowed published item in read mode and click Create Draft. This will create a<br />
draft copy of the published item without removing the published item from the live site.<br />
v open a non-workflowed published item and click Change to Draft. This will change the state<br />
of the item from "published" to "draft" and the item will no longer be visible on the live site.<br />
You cannot change an item to draft if it is being referenced by any other items.<br />
Saving a draft item<br />
Once the draft has been created:<br />
v to save the draft item, click Save, Save and Close or Save and Read.<br />
v to publish the draft item, click Save and publish.<br />
Once saved, your draft item will be displayed along side other items in your item views but will<br />
be displayed with a status of draft. If you have created a draft of a previously published item,<br />
both the draft and published versions of your item will appear in your item views. You can edit<br />
and save drafts multiple times before publishing your changes.<br />
Publishing a draft item<br />
Any changes made to a draft item will not appear in the live site until you publish the draft item.<br />
When your draft is ready to publish you can either:<br />
v select an item in a view and click Publish item.<br />
476 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v open an item in read-mode and click Publish item.<br />
v open an item in edit-mode and click Save and publish.<br />
Canceling a draft<br />
Cancelling a draft is essentially the same as deleting a draft as all the changes made to the item<br />
are discarded. To cancel a draft open a draft item and click Cancel draft. You need editor access<br />
or above to cancel a draft of items not using a workflow.<br />
Working with draft items in a workflow<br />
Within a workflow, items have a status of draft until they enter a workflow stage where a publish action<br />
is executed. Draft items in a workflow are displayed along side other items in your item views but are<br />
displayed with a status of draft. If you have created a draft of a previously published item, both the draft<br />
and published versions of your item will appear in your item views. You can edit and save drafts<br />
multiple times before submitting your draft to the next stage in the workflow.<br />
You use the following buttons to work with items during a workflow.<br />
Table 83. Approving and declining access controls.<br />
Note: This table assumes contributor access or higher to the library.<br />
Actions Function Item Access<br />
Approve<br />
When joint approval is set, Approver or administrator.<br />
button is used to approve<br />
an item in the All Items<br />
and My Items views.<br />
Cancel draft<br />
Decline<br />
Next Stage<br />
Previous Stage<br />
Process now<br />
This removes a draft item<br />
from a workflow altogether.<br />
This displays only after an<br />
item has been published<br />
and a new draft has been<br />
created.<br />
Used when an item is<br />
rejected during a workflow.<br />
Executes any actions<br />
defined in the reject stage,<br />
and then sends the item<br />
back to the first stage of a<br />
workflow.<br />
Used to approve an item<br />
and send it to the next<br />
stage in a workflow.<br />
The previous stage button<br />
returns an item to the stage<br />
previous to the current<br />
stage. When an item is<br />
moved to the previous<br />
stage, the entry workflow<br />
actions on the previous<br />
stage are executed, but the<br />
exit workflow actions on<br />
the current stage are not.<br />
Manually processes an item<br />
if its status is pending. All<br />
actions in the stage are<br />
processed.<br />
<strong>Manager</strong> access or higher.<br />
Approver access.<br />
Approver access.<br />
<strong>Manager</strong> access or higher,<br />
or on workflow stages that<br />
have been configured to<br />
enable approvers access to<br />
the previous stage button.<br />
Administrator access<br />
Role access to library<br />
resources<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Not required.<br />
Building a web content system 477
Disabling multiple drafts:<br />
When creating a workflow you can choose to disable the creation of multiple drafts for any item using<br />
that workflow. This allows you to assign a workflow to items where you only want to manage one<br />
change at a time.<br />
Working with draft items in a project<br />
You use draft items within a project in the same way you use drafts outside of a project, regardless of<br />
whether the draft item is participating in a workflow, or not participating in a workflow. The only<br />
difference being that when the draft is ready to be published, it will remain in a pending state until all<br />
items in the project are ready to be published. Draft items in a project are displayed alongside other items<br />
in your item views, but are displayed with a status of draft. If you have created a draft of a previously<br />
published item, both the draft and published versions of your item will appear in your item views.<br />
Managing drafts<br />
There are various ways you can manage your draft items:<br />
v If viewing a published item with only one draft item, you can view the draft item by clicking Go to<br />
draft.<br />
v When viewing a draft item, you can open the published version of an item by clicking Go to<br />
published.<br />
v If a published item has more than one draft, the Manage Drafts button is displayed on both the<br />
published and draft versions of an item. You click Manage Drafts to view a list of drafts for the<br />
current item. All drafts are displayed, but you can only read, edit and cancel drafts that you have<br />
sufficient access to.<br />
Published items<br />
Items are not visible on a website until they are published. Once published, an item can be expired, or<br />
returned to a draft state.<br />
Working with published items not using a workflow<br />
To create a new draft item:<br />
v open a non-workflowed published item in edit mode and click Save as Draft. This will create a draft<br />
copy of the published item without removing the published item from the live site.<br />
v open a non-workflowed published item and click Change to Draft. This will change the state of the<br />
item from "published" to "draft" and the item will no longer be visible on the live site.<br />
Working with published items using a workflow<br />
You use the following buttons to work with items during a workflow.<br />
Table 84. Published items functions and access controls.<br />
Note: This table assumes contributor access or higher has been set on the library.<br />
Actions Function Item Access<br />
Approve<br />
When joint approval is set, Approver or administrator.<br />
button is used to approve<br />
an item in the All Items<br />
and My Items views.<br />
Role access to library<br />
resources<br />
Contributor access or<br />
higher to the item type.<br />
478 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 84. Published items functions and access controls (continued).<br />
Note: This table assumes contributor access or higher has been set on the library.<br />
Actions Function Item Access<br />
Create draft<br />
Creates a draft copy of a <strong>Manager</strong> access or higher,<br />
published item. The or approver access.<br />
published item is locked on<br />
the rendered site, while a<br />
copy of the item is sent<br />
through a workflow. Once<br />
the draft item has been<br />
approved for publishing, it<br />
replaces the published item.<br />
Next Stage<br />
Previous Stage<br />
Process now<br />
Used to approve an item<br />
and send it to the next<br />
stage in a workflow.<br />
The previous stage button<br />
returns an item to the stage<br />
previous to the current<br />
stage.<br />
v<br />
v<br />
If the current stage<br />
contains a publish action,<br />
the item status will<br />
revert to draft when<br />
returned to the previous<br />
stage. The published<br />
version is removed and<br />
is no longer visible on<br />
the live site.<br />
When an item is moved<br />
to the previous stage, the<br />
entry workflow actions<br />
on the previous stage are<br />
executed, but the exit<br />
workflow actions on the<br />
current stage are not.<br />
Note: The previous stage<br />
button is not enabled:<br />
v<br />
v<br />
on published items that<br />
have children.<br />
on published items<br />
where a draft already<br />
exists.<br />
Manually processes an item<br />
if its status is pending. All<br />
actions in the stage are<br />
processed.<br />
Approver access.<br />
<strong>Manager</strong> access or higher,<br />
or on workflow stages that<br />
have been configured to<br />
enable approvers access to<br />
the previous stage button.<br />
Administrator access<br />
Role access to library<br />
resources<br />
Editor access or higher to<br />
the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Not required.<br />
Building a web content system 479
Table 84. Published items functions and access controls (continued).<br />
Note: This table assumes contributor access or higher has been set on the library.<br />
Actions Function Item Access<br />
Restart workflow<br />
Sends an item back to the <strong>Manager</strong> access or higher,<br />
first stage of a Workflow or approver access.<br />
without activating the reject<br />
stage. The item no longer<br />
appears as published and is<br />
removed from the rendered<br />
site.<br />
Note: When you restart a<br />
workflow, any actions set to<br />
run on entering the first<br />
stage will not be executed.<br />
Note: When you restart a<br />
workflow with multiple<br />
stages, a draft item is<br />
created in the first stage. In<br />
addition to this, the item<br />
will also appear in the<br />
deleted items view so that<br />
the last published version<br />
of the item can be restored.<br />
Once the draft is<br />
republished, the version in<br />
the deleted items view is<br />
removed.<br />
Note: Items with<br />
references cannot be<br />
restarted in the workflow.<br />
References includes link<br />
components, link elements,<br />
and embedded links in rich<br />
text or HTML fields. You<br />
will need to remove these<br />
references before you can<br />
restart the workflow of the<br />
item. Use the view<br />
references dialog to see if<br />
references exist. This<br />
restriction is to prevent<br />
broken links appearing in<br />
your site.<br />
Role access to library<br />
resources<br />
Editor access or higher to<br />
the item type.<br />
Expired items<br />
Expired items are items that were once published but have since been removed from the live website.<br />
Only items that use a workflow can be expired.<br />
You use the following buttons to work with expired items within a workflow.<br />
480 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 85. Expired items functions and access controls.<br />
Note: This table assumes contributor access or higher to the library.<br />
Actions Function Item Access<br />
Approve<br />
When joint approval is set, Approver or administrator.<br />
button is used to approve<br />
an item in the All Items<br />
and My Items views.<br />
Create draft<br />
Next Stage<br />
Previous Stage<br />
Process now<br />
Creates a draft copy of an<br />
expired item.<br />
Used to approve an item<br />
and send it to the next<br />
stage in a workflow. For<br />
expired items, additional<br />
workflow stages may<br />
include further actions that<br />
will be run after an item<br />
has been expired.<br />
The previous stage button<br />
returns an item to the stage<br />
previous to the current<br />
stage.<br />
v<br />
v<br />
If the current stage<br />
contains an expire action,<br />
the item status will<br />
revert to published when<br />
returned to the previous<br />
stage and will be visible<br />
on the live site.<br />
When an item is moved<br />
to the previous stage, the<br />
entry workflow actions<br />
on the previous stage are<br />
executed, but the exit<br />
workflow actions on the<br />
current stage are not.<br />
Manually expires an item if<br />
its status is pending<br />
expired. All actions in the<br />
stage are processed.<br />
<strong>Manager</strong> access or higher,<br />
or approver access.<br />
Approver access.<br />
<strong>Manager</strong> access or higher,<br />
or on workflow stages that<br />
have been configured to<br />
enable approvers access to<br />
the previous stage button.<br />
Administrator access<br />
Role access to library<br />
resources<br />
Contributor access or<br />
higher to the item type.<br />
Editor access or higher to<br />
the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Contributor access or<br />
higher to the item type.<br />
Not required.<br />
Building a web content system 481
Table 85. Expired items functions and access controls (continued).<br />
Note: This table assumes contributor access or higher to the library.<br />
Actions Function Item Access<br />
Restart workflow<br />
Sends an item back to the <strong>Manager</strong> access or higher,<br />
first stage of a Workflow or approver access.<br />
without activating the reject<br />
stage. The item no longer<br />
appears as published and is<br />
removed from the rendered<br />
site.<br />
Note: When you restart a<br />
workflow, any actions set to<br />
run on entering the first<br />
stage will not be executed.<br />
Note: When you restart a<br />
workflow with multiple<br />
stages, a draft item is<br />
created in the first stage. In<br />
addition to this, the item<br />
will also appear in the<br />
deleted items view so that<br />
the last published version<br />
of the item can be restored.<br />
Once the draft is<br />
republished, the version in<br />
the deleted items view is<br />
removed.<br />
Note: Items with<br />
references cannot be<br />
restarted in the workflow.<br />
References includes link<br />
components, link elements,<br />
and embedded links in rich<br />
text or HTML fields. You<br />
will need to remove these<br />
references before you can<br />
restart the workflow of the<br />
item. Use the view<br />
references dialog to see if<br />
references exist. This<br />
restriction is to prevent<br />
broken links appearing in<br />
your site.<br />
Role access to library<br />
resources<br />
Editor access or higher to<br />
the item type.<br />
Working with workflows<br />
You use workflows to control the access to, verification and eventual approval of items. Only if an item is<br />
approved at all stages up to a published stage can it be viewed on your website.<br />
You can use a workflow to:<br />
v review the accuracy of content.<br />
v review content for any legal implications.<br />
v review content to ensure it meets accessibility guidelines.<br />
v ensure that no malicious code such as cross scripting attacks have been added to content.<br />
482 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
If an item is rejected at any stage, it is corrected or amended and then resubmitted to the selected<br />
workflow (for approval). All items that are rejected (regardless of the stage they are at in the approval<br />
process) are sent back to the first stage of a workflow.<br />
Related tasks:<br />
“Creating a publish action” on page 272<br />
A publish action changes the status of an item from "draft" to "published".<br />
“Creating an expire action” on page 274<br />
An expire action changes the status of an item from "published" to "expired".<br />
“Creating an e-mail action to notify users, groups, or both” on page 276<br />
An email action sends an email to a set of users or groups.<br />
“Creating a custom action” on page 280<br />
A custom action is used to run a custom workflow action based on a Java class you have previously<br />
created and added to your system.<br />
“Creating a version action” on page 282<br />
A version action causes a new version of an item to be created when run.<br />
“Creating an action to move an item in the workflow as a specified time” on page 284<br />
A scheduled move action moves an item to the next workflow stage at a specified date and time.<br />
“Creating a workflow stage” on page 287<br />
A workflow stage is composed of a set of selected workflow actions.<br />
“Creating a workflow” on page 290<br />
You select the workflow stages to comprise a workflow in a workflow form.<br />
Workflows, stages and actions:<br />
To create a workflow, you will need to understand the roles of workflow actions, workflow stages and<br />
workflows.<br />
Workflows<br />
A workflow controls the access to an item, its verification and eventual approval. A workflow comprises<br />
one or more stages. Before an item can appear on your website, it must pass through a series of stages.<br />
Only if an item is accepted at all stages prior to entering a stage with a publish action can it be<br />
published. If the item is rejected at any stage, someone with edit access needs to correct or amend the<br />
item and resubmit it into the selected workflow (for approval). All items that are rejected (regardless of<br />
the stage they are at in the approval process) are sent back to the first (creation) stage of the workflow.<br />
Workflows must have a minimum of one stage. Only linear workflows are allowed. A reject stage may be<br />
specified, which is a stage that is executed when a document is declined, before moving it to the first<br />
stage of the workflow. You can also specify that a comment must be entered on every move a document<br />
makes in the workflow or only on specific Stages. This comment is added to the document's history<br />
section.<br />
Workflow stages<br />
Workflow stages are the building blocks of a workflow. You need to create at least one stage before you<br />
can create a workflow. Stages determine:<br />
v What actions to execute when entering or exiting a workflow stage<br />
v The access levels of users or groups within that stage.<br />
In most cases, actions are run when entering a stage. For example, you add a scheduled move action to<br />
run on entering a stage so that it is enabled as soon as an item enters that stage. However, if you set a<br />
scheduled move action to run on leaving a stage, it will never run. The most common type of actions to<br />
Building a web content system 483
un on leaving a stage are email actions, when you want to notify users that an item has left a workflow<br />
stage, or custom workflow actions that have been designed to run a task when an item leaves a stage.<br />
Note: Some actions need to be run in a specific order. For example:<br />
v A scheduled move action must always be the final action in a workflow stage, because any actions<br />
scheduled after a scheduled move action will not be run.<br />
v You cannot run a version action before a publish action because you cannot save versions of draft<br />
items.<br />
v If using a custom action, you may want to run the custom action before executing an email action so<br />
that the draft content item is in a state ready to be reviewed by an approver.<br />
Note: The access settings that are defined in the properties section of the workflow stage form are the<br />
security settings applied to items during a workflow, not the Security section of a workflow stage. The<br />
Security section only defines who has access to the workflow stage item itself.<br />
Reject stages<br />
In addition to the workflow stages that make up a workflow, there are also workflow stages that are used<br />
as part of rejecting an item. When an item is rejected, a reject stage can be triggered that executes<br />
pre-defined actions. Once the actions have been executed, the item is returned to the first stage of the<br />
workflow.<br />
Workflow stage actions<br />
Each stage contains sets of actions; those that are executing when entering the stage and those executed<br />
when exiting the stage. The exit actions are restricted to non-scheduled actions, since they must be<br />
executed immediately.<br />
Table 86. Workflow stage actions<br />
Action<br />
Details<br />
Publish<br />
Changes an item's Status from Draft to Published. This means the item is available<br />
on the rendered site.<br />
Expire<br />
Email<br />
Scheduled Move<br />
Version<br />
Custom<br />
An item will only be published once it has entered a workflow stage containing a<br />
publish action, and when the selected published date and time has been reached.<br />
Changes an item's Status from Published to Expired. This means the document is no<br />
longer available on the site.<br />
An item will only be expired once it has entered a workflow stage containing an<br />
expire action, and when the selected expired date and time has been reached.<br />
This sends emails when executed. You can create new email actions and specify who<br />
the recipients will be. You can select to email approvers, authors and owners. You can<br />
also create a list of other users or groups to email.<br />
A link to the Item to be reviewed is included in the email.<br />
Performs a scheduled move to the next stage on a specified date. A list-box will allow<br />
you to select one of four date types that are entered on each individual document, or<br />
you specify a static date.<br />
This will create a version of an item when executed.<br />
You can also create custom workflow actions by creating a custom workflow plug-in.<br />
These can be used and scheduled within a workflow like other workflow actions.<br />
Accessing Items during a workflow:<br />
484 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
If an item is participating in a workflow, the creator is given delete access to the item only in the first<br />
workflow stage. As the item progresses through a workflow, the item access is determined by the<br />
combined workflow and system defined access levels.<br />
Table 87. Access levels<br />
Access level 1st workflow stage Additional workflow stages<br />
Read v System defined<br />
v Workflow defined<br />
Edit v System defined<br />
v Workflow defined<br />
Delete v User who created item<br />
v System defined<br />
v Workflow defined<br />
v<br />
v<br />
v<br />
v<br />
v<br />
v<br />
System defined<br />
Workflow defined<br />
System defined<br />
Workflow defined<br />
System defined<br />
Workflow defined<br />
Approve v Workflow defined v Workflow defined<br />
Joint approval:<br />
Joint approval is used in cases where approval from multiple users is required before moving the<br />
document to the next stage.<br />
v You specify which stages you want to be jointly approved.<br />
v If joint approval is active, then all the approvers specified for this stage must approve the document.<br />
v The exception is an administrator, who can force a document to the next stage.<br />
v If a group is specified as an approver, only one user per group is required to approve the document.<br />
v If that user is a member of more than the Group that has been given Approve access, then all the<br />
groups will be considered as having approved the document.<br />
v If joint approval is active, the Approve button will be visible instead of the usual "Next Stage" button,<br />
except in the All Items and My Items views.<br />
Note:<br />
Administrators and managers always have access to the Next Stage button.<br />
Workflow example:<br />
This example describes the steps required to create a four stage Workflow.<br />
Actions<br />
The actions required for this workflow are:<br />
Table 88. Actions<br />
Action<br />
Publish<br />
Scheduled Move<br />
Expire<br />
Email<br />
Description<br />
Makes a document visible as a published document on the website.<br />
This scheduled move action detects when a document has passed its expire date and<br />
moves the document into the Expired stage.<br />
Stops a document from being visible on the web site.<br />
Sends emails to selected users. In this example, you select "Email Stage Approvers".<br />
Building a web content system 485
Stages<br />
The following stages make up the Workflow:<br />
Table 89. Stages<br />
Workflow Stage Actions on Entering Description<br />
Stage 1, Draft<br />
All content will begin the Workflow<br />
in this Stage. All content authors will<br />
be authorized to use the Draft stage.<br />
Stage 2, Review Email <strong>Content</strong> will require a review stage<br />
before being published. A small<br />
group of people will be authorized to<br />
approve content in this stage and<br />
move it to the Publish stage. The<br />
email action will send an email to<br />
each approver.<br />
Stage 3, Publish<br />
Publish<br />
Scheduled Move<br />
This is the stage where content from<br />
the workflow is published. The<br />
Publish action is triggered when the<br />
Publish Date is reached. At this<br />
point the content will be visible on<br />
the website. The Scheduled Move<br />
action will also be triggered when the<br />
Expire Date is reached.<br />
Stage 4, Expired Expire The Scheduled Move action will<br />
move the content into this stage,<br />
where the Expire action will stop the<br />
document from being visible on the<br />
website.<br />
Progressing through the workflow<br />
Table 90. Progressing through the workflow<br />
Process Stage Status<br />
An item is first created and saved: Stage 1, Draft Draft<br />
Once the Item Creator is ready, they<br />
Stage 2, Review<br />
Draft<br />
move it to the next stage.<br />
An Approver would then access the<br />
document and review it. If<br />
Approved, the item would be moved<br />
to the next stage.<br />
Stage 3, Publish<br />
Draft pending Published<br />
The Status is Draft pending<br />
Published. This is because the time<br />
specified in the Publish Date field of<br />
the item has not yet been reached.<br />
Once the Publish Date is reached,<br />
the item's Status changes to<br />
Published. The item is still in Stage<br />
3, Publish, but the Status has<br />
changed.<br />
Stage 3, Publish<br />
Published<br />
486 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 90. Progressing through the workflow (continued)<br />
Process Stage Status<br />
Once the Expire Date is reached, the<br />
document is moved to the final stage.<br />
As both the Scheduled Move and<br />
Expire actions are using the Expired<br />
date in this example, the item's Status<br />
immediately changes to Expired.<br />
If the Scheduled Moved Action used<br />
a General Date prior to the Expire<br />
Date, then the item's Status would<br />
remain as Published pending Expire<br />
until the Expire Date was reached<br />
even though it had entered Stage 4,<br />
Expire.<br />
Stage 4, Expire<br />
Expired<br />
Using workflows and access to workflow items:<br />
Users do not require access to a workflow's actions or stages to participate in a workflow. Actions are<br />
performed using system access and are not determined by the access of the user who approved/rejected<br />
the item.<br />
Working with projects<br />
Projects allow you to change a set of items and ensure that they are published together at the same time.<br />
Working with items in a project<br />
To add an item to a project, you can either:<br />
v open an item in read mode and click Add to project.<br />
v open an item in edit mode and click Add to project and then save the item. If the item is closed before<br />
saving, the item is not added to the project.<br />
v select items in a view and click More actions > Add to project.<br />
v open a project and click the Add to project button and then select an item to add to the project.<br />
v open a project and click New to create a draft item in the project.<br />
Note: The maximum number of items that can be used in a single project is 500.<br />
Note: In order to add an item to a project, you must have editor access to that item.<br />
When you add an item to a project:<br />
v You can also select items that are referenced by the item you are adding to the project.<br />
v Non-workflowed item types are saved as a draft.<br />
v Workflowed items are added to a project in the first workflow stage of their workflow.<br />
Once added to a project, you work with your items in the same way as any other item by selecting an<br />
item in the project and clicking Edit:<br />
v Non-workflowed item types are saved as drafts until you are ready to publish them by clicking<br />
Approve.<br />
v Workflowed items are processed through a full workflow cycle until reaching a pending state.<br />
Building a web content system 487
v Draft items in a project are displayed alongside other items in your item views, but are displayed with<br />
a status of draft. If you have created a draft of a previously published item, both the draft and<br />
published versions of your item will appear in your item views.<br />
v When using selection dialogs, draft items from your current project appear alongside currently<br />
published items allowing you to select and link to both current items and draft project items.<br />
Workflow item types:<br />
Workflows, workflow stages and workflow actions cannot be added to projects.<br />
Previewing items in a project<br />
While you are working on a project, you can preview the draft items in the project as if they were<br />
published together on the live site.<br />
Deleting items in a project<br />
Remove From Project<br />
When you select an item in a project and click Remove From Project, the draft item is removed<br />
from the project but is still visible in the Library Explorer.<br />
Delete When you select an item in a project and click Delete, the draft is removed from the project and<br />
also deleted.<br />
Mark for deletion<br />
When an item is marked for deletion, the item is deleted when the project is published.<br />
You can mark items for deletion in a project by:<br />
1. adding the item to a project<br />
2. opening a draft project item in read mode and clicking Mark for deletion.<br />
When an item is marked for deletion, other buttons in the edit view of the item are disabled. To<br />
cancel a deletion, click Cancel deletion.<br />
Note: Hierarchical items such as site areas and taxonomies cannot be marked for deletion.<br />
Project status<br />
When working with a project, the project progresses through the following states:<br />
Active A project which has draft items in it is considered "active". These items can be individually<br />
approved until they reach a state of "pending".<br />
Syndicating<br />
If "All items" or "Live and project" syndication has been enabled for the library that the project is<br />
stored in, a status of "Syndicating" is displayed until all items on both the syndicator and<br />
subscriber have reached a state of pending.<br />
Pending<br />
A project which contains only items in a "pending" state is itself considered "pending". If the<br />
project publish option is set to automatic this state is skipped. When the project is published<br />
manually or when the publish date is reached, the project moves to the "publishing" state.<br />
Publishing<br />
This is the state where all items in the project move from pending to published.<br />
Failed Indicates that one or more project items failed to publish.<br />
Published<br />
Once all items are published the project achieves a state of "published".<br />
488 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Publishing a project<br />
There are three publishing methods used by projects:<br />
Date When Date is selected, all items are published as soon as all the items in the project reach a state<br />
of "pending" and the publish date selected in the project is reached. You can also click Publish in<br />
the project form before the date being reached once all items in the project reach a state of<br />
"pending".<br />
Manual<br />
When Manual is selected all items remain in a state of "pending" until the project is manually<br />
published by clicking Publish in the project form. The Publish button is not activated until all<br />
items in the project reach a state of "pending". Only users with editor access or higher to a project<br />
can publish a project.<br />
Automatic<br />
When Automatic is selected all items are published as soon as all the items in the project reach a<br />
state of "pending".<br />
Once the project is published, you can continue to review the status and version history of the items in<br />
the project by opening the project form.<br />
Access controls<br />
The access controls on a project do not affect the access controls on the items in a project. For example, a<br />
user that has editor access to a project but only read access to an item that is included in the project is<br />
not able to edit that item.<br />
Syndicating a project<br />
Projects are designed to be used only on a syndicator server. Although projects will be syndicated with<br />
other items in a library that is being syndicated, you cannot use the subscriber copy of the project to<br />
update or publish your project. When a project is syndicated, the publish method on the subscriber is<br />
automatically changed to "deferred syndication", and the following actions are disabled on the subscriber:<br />
v Publish project<br />
v Add to project<br />
v Remove from project<br />
v Mark for deletion<br />
v Cancel deletion<br />
This means that the project on the subscriber cannot be updated or published unless it receives updates<br />
from the syndicator.<br />
Disabling a workflow in a project<br />
A workflow can be configured so that it is disabled when an item using that workflow is added to a<br />
project.<br />
v Any items using the disabled workflow have a status of draft when added to a project, but no longer<br />
require to pass through a workflow before being published.<br />
v The workflow stage the item is returned to when the project is published is also defined in the<br />
workflow.<br />
v Any actions set to run on entering the stage that the item is returned to are not run.<br />
v An item has a status of "published" when the project is published regardless of the workflow stage it is<br />
returned to, even if the workflow stage does not use a publish action or if it precedes or follows a<br />
workflow stage that contains a publish action.<br />
Building a web content system 489
Related tasks:<br />
“Creating a project” on page 268<br />
You use a project to manage changes to a set of items.<br />
Managing versions of items<br />
You can configure your system to either automatically save a version of an item each time it is published,<br />
or allow users to select when to save a version of an item. You can restore items individually, or choose<br />
to restore a set of items within a library that either have the same label or were versioned at, or before, a<br />
specified date and time.<br />
Item level version control<br />
v If automatic versioning is enabled, a version is saved each time you save an item, or if the item is<br />
participating in a workflow, each time the item's state changes to published. You cannot save versions<br />
of draft items.<br />
v If manual versioning is enabled, users with editor access or above can manually save versions of<br />
published items. You can restore a version by viewing an item's version history and selecting a version<br />
to restore.<br />
v Any hierarchical relationships to other items are not saved. For example, if you save a version of a site<br />
area that has child site areas and you delete the child site areas, the child site areas will not be restored<br />
if you restore the parent site area.<br />
v If you have links to external resources within an item, a copy of the external item is not saved when a<br />
version is created. If you delete the external resource, you cannot use the web <strong>Content</strong> Management<br />
version feature to restore the external resource.<br />
Item names: An item name is independent of version control. For example, changing the name of<br />
version 4 will also change the name of all versions of that item.<br />
Library level version control<br />
v You cannot choose to save a version of an entire library. Only those items that have had versions saved<br />
using item level version controls are saved within a library.<br />
v You can restore a set of items from within a library that either have the same label or were versioned<br />
at, or before, a specified date and time.<br />
You can apply a label to the most recent set of saved versions in a library at any time and then restore all<br />
the items with the same label at a later date.<br />
Note: Labels that you apply to versions are not syndicated to subscribers.<br />
Clearing version history<br />
The clear versions tool can be used to clear version histories from items. It is configurable and can be<br />
used to clear versions within a specific date range, for specific item-types or libraries, or to keep only a<br />
certain number of most recent versions.<br />
Related tasks:<br />
“Clearing version history” on page 567<br />
You use the clear versions tool to clear the version history of an item.<br />
“Restoring items in a library” on page 213<br />
You can restore a set of items within a library that either have the same label or were versioned at, or<br />
before, a specified date and time.<br />
490 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Delivering web content<br />
The type of delivery method you use to deliver web content to your viewers will depend on the type of<br />
content being delivered, and the type of viewers your website is intended for.<br />
Accessing web content via a servlet<br />
Users can access content displayed via the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> servlet by connecting to a URL. A<br />
servlet delivered website should be used when you don't need to use any <strong>Web</strong>Sphere Portal based<br />
features such as authoring tools.<br />
Accessing a web page using a servlet<br />
The following URL structure is used to connect to a web page:<br />
http://[HOST]:[PORT]/wps/wcm/connect/[PATH]srv=<br />
Non-ascii characters:<br />
Non-ascii characters can not be used in the query string section of URLs. For this reason, it is best not to<br />
name <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items using Non-ascii characters if you plan to use URLs to call <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> items.<br />
v [PATH] can be the path to a site area or content item. This must be entered for all types of content<br />
including components. In the case of components, this is the path to the site area or content item that<br />
the component is displayed with.<br />
v srv= is either cmpnt or page.<br />
Table 91. Service options<br />
Service option<br />
srv=cmpnt<br />
Details<br />
This will retrieve a component either from the component library or from a site area<br />
or content item. You must also specify the following:<br />
source=<br />
This determines where the component is being sourced from. This is either:<br />
v library<br />
v sitearea<br />
v content<br />
cmpntname=[componentname]<br />
This is the name of the component being retrieved.<br />
srv=page<br />
This will retrieve a content item. As srv=page is returned as default, this can be left<br />
out of the URL.<br />
The presentation template to use when displaying this content is specified by adding:<br />
presentationtemplate=library/presentationtemplatename<br />
Examples:<br />
URL to content:<br />
http://[HOST]:[PORT]/wps/wcm/connect/[PATH]<br />
Example: http://host:10039/wps/wcm/connect/sitearea/content<br />
491
URL to content with a presentation template defined:<br />
http://[HOST]:[PORT]/wps/wcm/connect/[PATH]<br />
presentationtemplate=[libraryname/presentationtemplatename]<br />
Example: http://host:10039/wps/wcm/connect/sitearea/contentpresentationtemplate=library/<br />
presentationtemplate<br />
URL to a library component:<br />
http://[HOST]:[PORT]/wps/wcm/connect/[PATH]<br />
srv=cmpnt&source=library&cmpntname=[componentname]<br />
Example: http://host:10039/wps/wcm/connect/sitearea/contentsrv=cmpnt&source=library<br />
&cmpntname=component<br />
URL to a content component:<br />
http://[HOST]:[PORT]/wps/wcm/connect/[PATH]<br />
srv=cmpnt&source=content&cmpntname=[componentname]<br />
Example: http://host:10039/wps/wcm/connect/sitearea/contentsrv=cmpnt&source=content<br />
&cmpntname=component<br />
Applying Custom Caching and Expiring Parameters.<br />
Like any other URL request made to a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> Server, Custom Caching and Expiring<br />
parameters can be added to a request. See the topic, "Using Custom Caching" for further information.<br />
Example:<br />
http://[HOST]:[PORT]/wps/wcm/connect/[PATH]CACHE=SITE&EXPIRES=REL+9000s<br />
In this example, the content being retrieved via URL will be saved in the Basic Site Cache, and<br />
expired after 9000 seconds (two and half hours).<br />
Displaying content with web content viewers<br />
To display content developed with your web content system, you must add a portlet called a web content<br />
viewer to the server where you want the content to appear. If your presentation is simple, a single web<br />
content viewer can be sufficient, but you can also use multiple web content viewers to provide a richer<br />
experience for your users.<br />
Depending on how you decide to deploy the servers in your environment, you can install a web content<br />
viewer locally on the same portal server where <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> is installed, or you can install it<br />
remotely on a different portal server.<br />
<strong>Web</strong> content viewers<br />
<strong>Web</strong> content viewers are portlets that display content from a web content library as part of a portal page.<br />
If your presentation is simple, a single web content viewer can be sufficient, but you can also use<br />
multiple web content viewers to aggregate content from different libraries and provide a richer<br />
experience for your users. The JSR 286 web content viewer is suited to nearly all situations for local and<br />
remote rendering. For a few special cases, the older <strong>IBM</strong> Portlet API web content viewer can still be used.<br />
JSR 286 web content viewer<br />
Based on the Java Portlet Specification 2.0 (JSR 286), the JSR 286 web content viewer is a full-featured<br />
viewer that integrates the portal's page structure with information from a web content library. In addition<br />
to leveraging the personalization, presentation, and security benefits afforded by JSR 286, the JSR 286 web<br />
content viewer provides additional advantages:<br />
492 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v <strong>Web</strong> content pages are supported. Because you attach content to a web content page when you create<br />
it, the JSR 286 web content viewer automatically displays that content without requiring configuration<br />
when you add the web content viewer to the page.<br />
v The portlet does not create a portlet session for rendering web content for both anonymous and<br />
authenticated portal users.<br />
v Support for portal site analysis is available to measure how frequently content items are visited.<br />
v Performance is improved over the traditional web content viewer.<br />
v Remote rendering is performed using WSRP.<br />
Deprecated <strong>IBM</strong> Portlet API web content viewer<br />
Although the JSR 286 web content viewer is recommended for the majority of uses with <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>, there are limited situations where the JSR 286 web content viewer cannot be used. For these<br />
situations, the traditional web content viewer, based on the <strong>IBM</strong> Portlet API, can be used.<br />
Note: With version 7, the <strong>IBM</strong> Portlet API web content viewer has been deprecated and removed from<br />
the default installation. Wherever possible it is recommended that you adapt your web content<br />
environment to use the JSR 286 web content viewer to ensure future compatibility. If you have migrated<br />
from a previous version of the product to version 7, you can also convert existing instances of the <strong>IBM</strong><br />
Portlet API web content viewer to the JSR 286 web content viewer, as described in the topic "Converting<br />
instances and settings of the <strong>IBM</strong> API <strong>Web</strong> <strong>Content</strong> Viewer portlet to the standard API <strong>Web</strong> <strong>Content</strong><br />
Viewer Portlet."<br />
The traditional web content viewer is available for the following cases:<br />
URLs built on unsupported format<br />
The JSR 286 web content viewer uses an updated URL format for links to web content that is not<br />
compatible with the URL format used with the <strong>IBM</strong> Portlet API web content viewer. Because of<br />
this, the JSR 286 web content viewer cannot process the following URLs:<br />
v URLs generated by the <strong>IBM</strong> Portlet API web content viewer.<br />
v URLs from external web sites or from third party applications that use the WCM_GLOBAL_CONTEXT<br />
query parameter.<br />
If your web content environment still requires support for the previous URL format, you can<br />
install the <strong>IBM</strong> Portlet API web content viewer to process those links.<br />
Remote rendering from portals older than version 7<br />
Remote rendering in version 7 is generally performed using the WSRP support of the JSR 286<br />
web content viewer. However, if you still need to display web content from a server that is<br />
running a version older than version 7, you can install the <strong>IBM</strong> Portlet API remote web content<br />
viewer.<br />
Remote rendering with authoring tools components or remote authoring action URLs<br />
The WSRP support in the JSR 286 web content viewer does not support the use of authoring tools<br />
components or remote authoring action URLs. If your web content system uses either of these<br />
features, you will need to use the <strong>IBM</strong> Portlet API web content viewer to display this content on<br />
a remote server.<br />
To install the <strong>IBM</strong> Portlet API web content viewer, install the appropriate file from the<br />
PortalServer_root/wcm/prereq.wcm/installableApps directory:<br />
v Local rendering: ilwwcm-localrendering-portlet.war<br />
v Remote rendering: ilwwcm-remoterendering-portlet.war<br />
Refer to the version 6.1.5 product documentation for details on installing portlets and configuring the<br />
web content viewer.<br />
Delivering web content 493
Related concepts:<br />
“Working with web content pages” on page 515<br />
A web content page is a portal page that displays web content from a site or site area by mapping the<br />
page to the web content site structure in your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system. When you add the web<br />
content viewer to a web content page, the portlet automatically renders the default content of the<br />
attached site or site area. In addition to displaying the default content, the web content viewer provides a<br />
dynamic broadcasting option that selects the best matching web content page when selecting links to<br />
other content items.<br />
Related tasks:<br />
“Converting an <strong>IBM</strong> API web content viewer to the JSR 286 API” on page 695<br />
Out-of-the-box the web content viewer is based on the JSR 286 API. However, if you have exported the<br />
web content viewer from another server or if you installed the older <strong>IBM</strong> API web content viewer, you<br />
can use the convert-wcm-rendering-portlet task to convert the <strong>IBM</strong> API web content viewer setttings and<br />
instances to the JSR 286 <strong>Web</strong> <strong>Content</strong> Viewer portlet.<br />
Related information:<br />
<strong>Web</strong>Sphere Portal 6.1.5: Installing a portlet<br />
<strong>Web</strong>Sphere Portal 6.1.5: Writing links to <strong>Web</strong> <strong>Content</strong> Management content<br />
Adding a web content viewer portlet<br />
You add web content viewer portlets to a page just like any other portlet.<br />
1. Click Administration > Manage Pages.<br />
2. Navigate to the page where you want to add the web content viewer, and click Edit Page Layout.<br />
3. Click Add portlets, and search for <strong>Web</strong> <strong>Content</strong> Viewer (JSR 286).<br />
4. Select the portlet, and click OK.<br />
Editing the settings of a web content viewer portlet<br />
Use a local web content viewer to deliver websites that require the use of <strong>Web</strong>Sphere Portal based<br />
features such as authoring tools.<br />
Related tasks:<br />
“Adding existing blogs or blog libraries to a page” on page 679<br />
You can add a JSR 286 web content viewer to a page to point to an existing blog or blog library on the<br />
site.<br />
“Adding existing wikis to a page” on page 683<br />
You can add a JSR 286 web content viewer to a page to point to an existing wiki on the site.<br />
Locking configuration settings<br />
Use the Configure mode of the web content viewer to lock configuration settings of the portlet so that<br />
these settings cannot be changed in the Edit Shared Settings mode.<br />
1. Click Configure in the portlet menu.<br />
2. For the setting you want to lock, click the lock icon next to the label for the setting. Once a setting has<br />
been locked, it cannot be changed in any instance of the web content viewer.<br />
3. To unlock a locked setting, click the lock icon for the setting. Unlocked items can be changed in the<br />
Edit Shared Settings mode.<br />
Setting default values<br />
Use the Configure mode to define default values for the configuration settings of the web content viewer.<br />
1. Click Configure in the portlet menu.<br />
2. Specify values for any settings that you wish to designate with default values. The default values are<br />
used whenever a new instance of the web content viewer is added to a page.<br />
494 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Note: Any configuration setting that has been changed in the Edit Shared Settings mode can be<br />
restored to the default value defined in the Configure mode by clicking Reset for the setting.<br />
<strong>Content</strong> settings<br />
The <strong>Content</strong> settings for the web content viewer enable you to specify which content from your web<br />
content library to display in the portlet.<br />
Note: If no web content has been selected in the Configure or Edit Shared Settings mode, the portlet<br />
displays the content that has been specified in the web content section of the page where the portlet<br />
resides. To create a web content page that is linked to a content item, use the Manage Pages<br />
administration portlet. To change the web content setting of the page, click Edit Page Properties from the<br />
page menu, and specify the content item in the Advanced options section.<br />
Important: Only published content can be displayed with the web content viewer. Draft content cannot<br />
be displayed and cannot be selected when configuring a web content viewer.<br />
v To display the content of a content item, select <strong>Content</strong> Item.<br />
1. Click Edit under the <strong>Content</strong> section to select the content item to display. If no content item is<br />
selected in the portlet, the web content specified in the page properties of the page containing the<br />
portlet is used for rendering.<br />
2. Click Edit under the Alternate Presentation Template section to select an alternate presentation<br />
template to use when the content item is displayed. If no alternate presentation is selected, the<br />
content item will be displayed using its default presentation template.<br />
v To display the content of a component, select Component.<br />
1. Click Edit under the Component section to select the component to display.<br />
2. Click Edit under the <strong>Content</strong> section to select the content item to use to give the selected<br />
component a context. For example, if a content item called "news" is selected as the context for a<br />
navigator, when the portal page is first opened, the navigator will behave as if "news" is the current<br />
content item. If no content item is selected in the portlet, the web content specified in the page<br />
properties of the page containing the portlet is used for rendering.<br />
v To display the content of an element stored in a content item, select Element.<br />
1. Click Edit under the <strong>Content</strong> section to select the content item. If no content item is selected in the<br />
portlet, the web content specified in the page properties of the page containing the portlet is used<br />
for rendering.<br />
2. Select the element to display from the selected content item under the Element section.<br />
Page context<br />
If the current page has an active page context, the configured content item or element will not be visible<br />
if the portlet is configured to receive links from other portlets. A page context always exists when a<br />
portlet has broadcast a content item to this page previously. You can delete an active page context by<br />
clicking Clear page context.<br />
Locked settings<br />
If a lock icon is displayed for setting instead of an Edit link, the setting has been locked using the<br />
Configure mode and cannot be changed in the Edit Shared Settings mode.<br />
Configuration by ID versus path<br />
Though this dialog shows the title paths of the configured items, most items are actual configured with<br />
their unique ID. This has the advantage that the configuration does not break if an item is renamed or<br />
moved. But if the XMLAccess scripting interface is used to configure the portlet, it is possible to<br />
alternatively configure the items with their content path. This removes the burden from the XMLAccess<br />
user to find out the unique ID of an item. But if an item is renamed or moved, this kind of configuration<br />
Delivering web content 495
eaks. To make the user aware of an item that is configured with its content path, a path icon ( )is<br />
displayed after the title path. When using the Edit Shared Settings or Configure mode to reconfigure an<br />
item that has been configured by Path before, the new item is configured by Path as well. Only if the<br />
Clear button is pressed before selecting a new item, the path icon disappears and the newly chosen item<br />
is configured with its unique ID.<br />
Profiling settings<br />
The Profile section contains profiling settings for the JSR 286 web content viewer, specifying categories,<br />
site areas, and authoring templates that can be used as menu search options.<br />
You can profile the web content viewer by selecting categories, site areas, and authoring templates. A<br />
menu can use this profile to display a list of content items that are profiled with the same categories, site<br />
areas, or authoring templates.<br />
Categories<br />
Add or remove categories to profile content rendered with the <strong>Web</strong> content viewer.<br />
Site Areas<br />
Add or remove site areas to profile content rendered with the <strong>Web</strong> content viewer.<br />
Authoring Templates<br />
Add or remove authoring templates to profile content rendered with the web content viewer.<br />
Locked settings<br />
If a lock icon is displayed for setting instead of an Edit link, the setting has been locked using the<br />
Configure mode and cannot be changed in the Edit Shared Settings mode.<br />
Configuration by ID versus path<br />
Though this dialog shows the title paths of the configured items, most items are actual configured with<br />
their unique ID. This has the advantage that the configuration does not break if an item is renamed or<br />
moved. But if the XMLAccess scripting interface is used to configure the portlet, it is possible to<br />
alternatively configure the items with their content path. This removes the burden from the XMLAccess<br />
user to find out the unique ID of an item. But if an item is renamed or moved, this kind of configuration<br />
breaks. To make the user aware of an item that is configured with its content path, a path icon ( )is<br />
displayed after the title path. When using the Edit Shared Settings or Configure mode, to reconfigure an<br />
item that has been configured by Path before, the new item is configured by Path as well. Only if the<br />
Clear button is pressed before selecting a new item, the path icon disappears and the newly chosen item<br />
is configured with its unique ID.<br />
Portlet settings<br />
The Portlet Settings section defines additional settings for the JSR 286 web content viewer, such as the<br />
title of the portlet to display or whether the markup of the web content viewer should be cached in the<br />
portlet fragment cache.<br />
Portlet Display Title<br />
You can set the portlet title that is displayed for the web content viewer as part of the portlet window for<br />
this instance of the portlet.<br />
v Select Use default title to display the title that was set for the portlet in the portal administration.<br />
v Select Set the following title, and enter a portlet title that should be used for all languages. If the<br />
input field is left empty, the default title is used. To explicitly set the title to be empty, you must enter a<br />
blank.<br />
496 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Select Select from resource bundle, and enter the fully qualified name of the Java resource bundle that<br />
is used to set the title, depending on the user's language (for example,<br />
com.mycompany.myapplication.myresourcebundlename).<br />
The structure of the resource bundle must follow the specification defined by the Java<br />
java.lang.ResourceBundle class. The key that is used to look up the title in the resource bundle is<br />
javax.portlet.title.<br />
The resource bundle must be located in a directory that is part of the classpath of the web content<br />
viewer. The preferred way to do this is to create a new shared library that contains the custom resource<br />
bundle files using the <strong>Web</strong>Sphere Application Server administrative console. Creating a new shared<br />
library that contains the resource bundle allows a clean separation of the custom resource bundle code<br />
from the base <strong>Web</strong>Sphere Portal code. After creating a shared library, you need to add it to the<br />
classpath of <strong>Web</strong>Sphere Portal application server classloader.<br />
v Select Select from content to use the value of the Display title field for the content item that is<br />
displayed by the portlet.<br />
Note: If the web content viewer renders a site area, the title used is the display title of the site area<br />
itself and not the title of the default content of the site area.<br />
Page Display Title<br />
You can set the page title that is part of the page header and that is normally displayed by the browser<br />
window's title bar. If more than one portlet on the same page tries to set the page title, only one of these<br />
titles is taken.<br />
v Select Use default title to display the title that was set for the page in the administration Manage<br />
Pages portlet.<br />
v Select Set the following title, and enter a page title that should be used for all languages. If the input<br />
field is left empty, the default title is used. To explicitly set the title to be empty, you must enter a<br />
blank.<br />
v Select Select from resource bundle, and enter the fully qualified name of the Java resource bundle that<br />
is used to set the page title, depending on the user's language (for example,<br />
com.mycompany.myapplication.myresourcebundlename).<br />
The structure of the resource bundle must follow the specification defined by the Java<br />
java.lang.ResourceBundle class. The key that is used to look up the title in the resource bundle is<br />
com.ibm.portal.page.title.<br />
The resource bundle must be located in a directory that is part of the classpath of the web content<br />
viewer. The preferred way to do this is to create a new shared library that contains the custom resource<br />
bundle files using the <strong>Web</strong>Sphere Application Server administrative console. Creating a new shared<br />
library that contains the resource bundle allows a clean separation of the custom resource bundle code<br />
from the base <strong>Web</strong>Sphere Portal code. After creating a shared library, you need to add it to the<br />
classpath of <strong>Web</strong>Sphere Portal application server classloader.<br />
v Select Select from content to display the Display title of the currently rendered content.<br />
Note: If the web content viewer renders a site area, the title used is the display title of the site area<br />
itself and not the title of the default content of the site area.<br />
Portlet Cache Options<br />
You can define whether the output of the web content viewer is cached in the portlet fragment cache. The<br />
cache scope determines where the content will be cached. There are two types of caching:<br />
Shared cache across users<br />
This type of cache provides the biggest performance improvement as it caches the output of the<br />
portlet across users. Use this cache scope only for web content viewers that render web content<br />
that is not personalized.<br />
Delivering web content 497
Non-shared cache for a single user<br />
This type of cache provides a smaller performance improvement but enables caching of<br />
personalized web content that is displayed by the web content viewer.<br />
The cache expiration time determines how long the page is stored in a portlet fragment cache. There are<br />
three settings for cache expiration:<br />
Cache always expires<br />
<strong>Content</strong> is never cached in either a shared or a private portlet cache.<br />
Cache never expires<br />
<strong>Content</strong> can be stored indefinitely in either a shared or a private portlet cache.<br />
Cache expires after this many seconds<br />
<strong>Content</strong> is stored for the number of seconds specified in either a shared or a private portlet cache.<br />
Note: To cache the markup output of the web content viewer, the portlet fragment cache must be<br />
enabled. The <strong>Web</strong>Sphere Portal information center contains more information about the caching of portlet<br />
output and explains how to enable the portlet fragment cache.<br />
Locked settings<br />
If a lock icon is displayed for setting instead of an Edit link, the setting has been locked using the<br />
Configure mode and cannot be changed in the Edit Shared Settings mode.<br />
Related tasks:<br />
<strong>Web</strong>sphere Application Server information center: Shared library collection<br />
Java 2 Platform Standard: Class ResourceBundle<br />
Advanced options<br />
The Advanced Options settings specify link broadcast behavior between web content viewers and<br />
whether context processor plug-ins are applied.<br />
Links<br />
Use the Links section to enter the details of how you want to receive and broadcast links with other<br />
portlets. This determines whether the web content viewer is aware of the state or context of other<br />
portlets.<br />
Broadcast link options:<br />
Dynamically select a web content page<br />
Use the information about the web content item from the page properties to dynamically<br />
determine to which page the context is broadcast. When using this option, a lookup is done to<br />
determine the best matching <strong>Web</strong> content page to render the item selected. The best matching<br />
web content page is the page that is mapped to the closest parent site area of the selected item in<br />
the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system. If more than one web content page is found that maps equally<br />
well to the same parent site area, the first page found is used with the exception that the current<br />
web content page is preferred. If no web content page is found that is mapped to any of the<br />
parent site areas of the selected item, the item is rendered through the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
servlet.<br />
This portal page<br />
Broadcast the context of the current web content viewer to other <strong>Web</strong> content viewers on the<br />
same portal page.<br />
498 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The following portal page<br />
Broadcast the context of the current web content viewer to web content viewers on a different<br />
portal page. You must then enter the unique identifier or unique name to select the target portal<br />
page.<br />
None<br />
Do not broadcast the context of the current web content viewer to other web content viewers.<br />
Receive link options:<br />
Other portlets and this portlet<br />
Receive the context from any web content viewer broadcasting its context.<br />
This portlet<br />
Use the context of the content item, component, or element displayed in the web content viewer.<br />
None<br />
Do not receive the context of any other web content viewers.<br />
Plug-ins<br />
Use the Plug-ins section to specify which context processor plug-ins are run during rendering.<br />
The <strong>Web</strong> content viewer provides a plug-point for context processor plug-ins that can be used to control<br />
which web content item is rendered by the web content viewer portlet. Context processor plug-ins must<br />
implement the com.ibm.workplace.wcm.api.ContextProcessor interface described in the Javadoc<br />
documentation for the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> APIs and must provide a plugin.xml file that defines the<br />
extension of the com.ibm.workplace.wcm.api.ContextProcessor extension point. The following example<br />
shows how such an extension entry could be defined in a plugin.xml file:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
For more information about plugin.xml files or the extension framework, refer to the Eclipse Extension<br />
Point Framework documentation.<br />
The JAR file that implements the extension plug-in must be located in a directory that is part of the<br />
classpath of the <strong>Web</strong> <strong>Content</strong> Viewer (JSR 286) portlet application. The preferred way to do this is to<br />
create a new shared library that contains the custom resource bundle files using the <strong>Web</strong>Sphere<br />
Application Server administrative console. Creating a new shared library that contains the resource<br />
bundle allows a clean separation of the custom resource bundle code from the base <strong>Web</strong>Sphere Portal<br />
code. After creating a shared library, you need to add it to the classpath of <strong>Web</strong>Sphere Portal application<br />
server classloader. For details about creating shared libraries and adding shared libraries to the<br />
classloader's classpath, refer to the Shared library collection topic in the <strong>Web</strong>Sphere Application Server<br />
information center.<br />
To select the context processor plug-ins that should be run during rendering of web content items<br />
through the web content viewer, click on the name of the context processor plug-in in the box that lists<br />
all found plug-ins. To clear a plug-in, hold down the control key and click on the name of the plug-in. If<br />
more than one plug-in is selected, the processing order of the plug-ins is not defined.<br />
Scope tag cloud results<br />
With the Scope tag cloud results settings, you can limit the results shown by instances of the Tag Cloud<br />
portlet on the same page as the JSR 286 web content viewer to only display those tags that are associated<br />
with the following scopes:<br />
Delivering web content 499
Parent of selected content item<br />
The tag cloud displays tags that have been applied to content items that have the same parent,<br />
such as a site area, as the content item being displayed.<br />
Authoring template used for selected content item<br />
The tag cloud displays tags that have been applied to content items that are based on the same<br />
authoring template as the content item being displayed.<br />
Categories used to profile selected content item<br />
The tag cloud displays tags that have been applied to content items that are profiled with the<br />
same categories as the content item being displayed. In this way, you can manage scopes from<br />
within your web content system by defining taxonomies for your content items.<br />
Locked settings<br />
If a lock icon is displayed for setting instead of an Edit link, the setting has been locked using the<br />
Configure mode and cannot be changed in the Edit Shared Settings mode.<br />
Customizing error messages<br />
If an error occurs during rendering, the JSR 286 <strong>Web</strong> content viewer shows an error screen. The default<br />
error screen provides a standard error message, which is shown on every type of error, and a more<br />
detailed error message. The detailed error message provides information about the cause of the error and<br />
is displayed when you click the View details link. You can customize the default error screen, and you<br />
can create your own custom JSP file that is used to display error messages.<br />
1. Create a customized error JSP file.<br />
a. Copy the original error.jsp file from wp_profile_root/installedApps/node_name/<br />
PA_WCMLRingPortJSR286.ear/ilwwcm⌂localrende.war/jsp/html directory to create your custom<br />
error JSP file.<br />
Almost everything in the original JSP file can be changed according to your requirements. The<br />
essential part that should be retained in your error JSP file, if it is intended to display the actual<br />
cause, is:<br />
<br />
<br />
<br />
The variable msg contains the message of the error. In the original error.jsp this message is only<br />
displayed in a separate popup window when a user selects View details link. In some cases it<br />
might not be desired to show this message to a user.<br />
2. Configure the web content viewer to use the customized error JSP file.<br />
a. Log in to the portal as an administrator.<br />
b. Click Administration in the tool bar.<br />
c. Under Portlet Management in the navigation tree, click Portlets.<br />
d. Locate the <strong>Web</strong> <strong>Content</strong> Viewer (JSR 286) portlet.<br />
e. Click Configure Portlet.<br />
f. Edit the value of the parameter ERROR_JSP, and set the path to your customized error JSP file as the<br />
parameter value.<br />
Storing JSP files: You can store JSP files in one of two locations:<br />
v Within the wp_profile_root/installedApps/node_name/PA_WCMLRingPortJSR286.ear/ilwwcmlocalrende.war<br />
directory of your server. When storing JSP files in this directory, enter the path<br />
to your custom error JSP relative to the directory.<br />
v Within any other <strong>Web</strong> application running on the portal. When referencing JSP files in another<br />
<strong>Web</strong> application, use the following path: contextPath;jspPath. For example:<br />
/wps/customapplication;/jsp/error.jsp.<br />
500 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
g. Click OK, and then click OK again.<br />
Friendly URLs and web content viewers<br />
Friendly URLs provide a way for you to define a custom address for a portal page that is easy to<br />
remember and share. By defining friendly URLs for your portal pages, users can navigate the portal<br />
using more concise URLs that better reflect the page structure. The JSR 286 web content viewer expands<br />
on friendly URL support by enabling you to specify additional path information in the friendly URL that<br />
points to a content item to be displayed in the web content viewer. Just as friendly URLs for pages<br />
provide numerous usability benefits for users trying to manage and share URLs, friendly URLs for web<br />
content provide the same benefits by giving users an easier way to address content items in the context<br />
of a portal page.<br />
Related concepts:<br />
“Coordination with other JSR 286 portlets” on page 507<br />
The JSR 286 web content viewer provides support for two public render parameters, which allow<br />
coordination with other portlets and can be used to set the web content item that should be rendered by<br />
the rendering portlet.<br />
Working with friendly URLs for web content<br />
With friendly URLs for web content, you can construct URLs to content items that are clear and concise,<br />
making the URLs easier for users to remember and share. Friendly URLs for web content are a<br />
convenient way for users to create bookmarks to content items or for external applications to provide<br />
links directly to content items in the portal. To ensure that you create friendly URLs for web content<br />
effectively, it is important to understand how friendly URLs for portal pages are constructed and how<br />
friendly URLs for web content extend the portal friendly URLs.<br />
How friendly URLs for pages work<br />
For a page to be referenced as part of a friendly URL, you must assign a friendly URL name for the page.<br />
You can do this when you create the page, or you can use Manage Pages to edit the page properties after<br />
the page is created.<br />
Friendly URLs take the following general form:<br />
http://host_name:port_number/context_root/portal/page_id/[!ut/p/encoded_suffix]<br />
The page_id portion of the friendly URL is made up of the friendly URL names of each page in the page<br />
structure from the content root to the currently selected page.<br />
For example, you might have a portal page called Products with a friendly URL name of products, and<br />
underneath the Products page is another page called Appliances with a friendly URL name of<br />
appliances. When referenced as a complete friendly URL, you would enter the following URL to access<br />
the Appliances page:<br />
http://www.example.com:10039/wps/portal/products/appliances<br />
For friendly URLs to work for a specific page, you must define a friendly URL name for each page or<br />
label in the page hierarchy from the specific page back up to the content root. If you want to suppress a<br />
friendly URL name from appearing in the friendly URL, you can specify a friendly URL name of<br />
com.ibm.portal.friendly.wildcard for the page. For example, if the Products page has a friendly URL<br />
name of com.ibm.portal.friendly.wildcard, the friendly URL above for the Appliances page is<br />
abbreviated:<br />
http://www.example.com:10039/wps/portal/appliances<br />
Note: When the portal displays a page using a friendly URL, the URL might also include an encoded<br />
suffix at the end of the URL that takes this form: !ut/p/base_codec/rich_state. This suffix contains<br />
information about the portal's state that the portal might use when displaying the page. However, when<br />
bookmarking or sharing friendly URLs, it is not necessary to include the suffix.<br />
Delivering web content 501
How friendly URLs for web content work<br />
Friendly URLs for web content are constructed just as friendly URLs for pages but include additional<br />
information that identifies the path to a content item. When the portal decodes a friendly URL, it decodes<br />
the URL from left to right, matching each path segment of the URL to the friendly URL names of portal<br />
pages until it can no longer find a match. The remainder of the URL is then considered to be path<br />
information to a content item and is mapped to a shared public render parameter that is scoped to the<br />
portal page identified by the URL. The fully qualified name of this path-info parameter is<br />
http://www.ibm.com/xmlns/prod/websphere/portal/publicparams:path-info. The path-info parameter<br />
can contain multiple values, with the individual values representing segments of a content path that are<br />
concatenated using a forward slash (/) as a path separator.<br />
Friendly URLs for web content take the following general form:<br />
http://host_name:port_number/context_root/portal/page_id/path_to_content/[!ut/p/encoded_suffix]<br />
When you add a JSR 286 web content viewer to a portal page, the web content viewer reads the<br />
path-info parameter and assembles the path to the content to be rendered by appending the path<br />
information to the content mapping defined for the current page. For example, you might have the<br />
following friendly URL for web content:<br />
http://www.example.com:10039/wps/portal/products/appliances/welcome<br />
Several conditions contribute to this URL:<br />
v The portal page Products has a friendly URL name of products, and underneath the Products page is<br />
another page called Appliances with a friendly URL name of appliances.<br />
v A web content library contains a site area called Appliances, which contains a content item called<br />
welcome. For this example, the web content library is called <strong>Web</strong> <strong>Content</strong>.<br />
v The portal page Appliances contains a content mapping to the <strong>Web</strong> <strong>Content</strong>/Appliances site area.<br />
When a JSR 286 web content viewer is added to the Appliances page, the web content viewer interprets<br />
the path-info information from the friendly URL and identifies welcome as path information that<br />
represents content in a web content library. By examining the content mapping on the page, the web<br />
content viewer locates the <strong>Web</strong> <strong>Content</strong>/Appliances site area and then displays the site area's default<br />
content, which is the welcome content item.<br />
When setting up your portal page hierarchy and your web content hierarchy, ensure that your naming<br />
schemes for each do not overlap in such a way that the path_to_content information starts with<br />
segments that could be part of the page_id portion of the friendly URL. Because the page_id portion of<br />
the friendly URL is always evaluated first, the friendly URL could inadvertently point to the wrong page,<br />
if the first segment of the path_to_content information matches the friendly URL name of a portal page<br />
at that point in the page hierarchy.<br />
Considerations for the path-info parameter:<br />
v For a web content viewer to process the path-info parameter, the web content viewer must be<br />
configured to receive links. If configured to receive links, the JSR 286 web content viewer gives<br />
precedence to the path-info parameter over the context public render parameter, which can also be<br />
used to set a web content item to be displayed by the web content viewer. When you click links<br />
displayed by the web content viewer, the link automatically incorporates the path information for the<br />
linked item.<br />
v Clicking Clear page context when editing the settings of a web content viewer also clears the<br />
path-info parameter.<br />
v If a friendly URL includes an encoded suffix, it takes this form: !ut/p/base_codec/rich_state. Because<br />
this information is encoded, it is not intended to be read by people, but the portal itself might act on<br />
the information, which can sometimes cause the wrong page to be displayed.<br />
502 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
If the path-info public shared render parameter is encoded in the rich_state portion of the suffix, the<br />
path-info contents overwrites the path_to_content portion of the friendly URL. Similarly, if there is a<br />
mismatch between the path-info contents and the path information encoded in the rich_state section,<br />
the portal replaces the path_to_content portion of the friendly URL with the rich_state information<br />
and directs the user to that page.<br />
Table 92. Example of rich_state information affecting displayed page<br />
Description<br />
The user navigates to URL in the portal.<br />
The user modifies the URL in the browser's address bar<br />
to go to content_item_2.<br />
Resulting URL.<br />
URL<br />
http://www.example.com:10039/wps/portal/home/<br />
content_item_1/!ut/p/b1/dY07Do...<br />
http://www.example.com:10039/wps/portal/home/<br />
content_item_2/!ut/p/b1/dY07Do...<br />
http://www.example.com:10039/wps/portal/home/<br />
content_item_1/!ut/p/b1/dY07Do...<br />
Because the rich_state portion of the URL still contains<br />
path information pointing to content_item_1, the portal<br />
overwrites the path_to_content portion of the URL, and<br />
the user remains on the same page instead of being<br />
directed to the page where content_item_2 is displayed.<br />
Table 93. Example of friendly URL for web content without rich_state information<br />
Description<br />
The user navigates to URL in the portal.<br />
The user modifies the URL in the browser's address bar<br />
to go to content_item_2.<br />
Resulting URL.<br />
URL<br />
http://www.example.com:10039/wps/portal/home/<br />
content_item_1/!ut/p/b1/dY07Do...<br />
http://www.example.com:10039/wps/portal/home/<br />
content_item_2<br />
http://www.example.com:10039/wps/portal/home/<br />
content_item_2<br />
Because the user removed the rich_state portion of the<br />
URL when modifying the URL, the path_to_content<br />
portion of the URL is evaluated, and the user is directed<br />
to the page where content_item_2 is displayed.<br />
Troubleshooting friendly URLs for web content<br />
If you are seeing unexpected behavior when using friendly URLs for web content, review these issues to<br />
help identify why the friendly URL is not working:<br />
v Support for friendly URLs for web content requires that the values for the configuration properties<br />
friendly.enabled and friendly.pathinfo.enabled be set to true in the portal Configuration Service.<br />
v If the friendly URL for web content references a content item that cannot be located or if the user does<br />
not have sufficient access rights to view the content item, the JSR 286 web content viewer displays a<br />
warning.<br />
v If the portal page specified in the friendly URL for web content is not mapped to an existing web<br />
content folder or site area, any JSR 286 web content viewers on that page display a warning message<br />
about the missing page context.<br />
v If the target portal page does not contain a JSR 286 web content viewer that is configured to receive<br />
links, the content item specified in the friendly URL for web content is not displayed.<br />
v If a JSR 286 web content viewer is not configured to broadcast links, web content links rendered by the<br />
viewer do not affect the friendly URL for web content.<br />
Delivering web content 503
v The default portal page selection does not show the path of the default content item in the friendly<br />
URL. The path_to_content portion of the URL includes the content path information only after the<br />
user begins to browse the web content using links displayed by the JSR 286 web content viewer.<br />
v Friendly URLs for web content are URL-encoded. When using friendly URLs for web content, special<br />
characters that appear in any segment of the URL must be URL-encoded. For example, a space<br />
character in the URL would be replaced by its URL-encoded equivalent: %20. Some web browsers<br />
perform automatic decoding of the URL, so you might see unencoded characters in the URL, but the<br />
portal always works with an encoded version of the URL.<br />
v The segments of a friendly URL for web content are not localized for multiple languages. The<br />
path_to_content portion of a friendly URL for web content is composed of the unlocalized names of<br />
web content folders, site areas, and content items. For example, if you name these items with English<br />
terms, the friendly URL for web content will be constructed of these English terms, even if the portal<br />
language is set to a language other than English.<br />
Related concepts:<br />
“Coordination with other JSR 286 portlets” on page 507<br />
The JSR 286 web content viewer provides support for two public render parameters, which allow<br />
coordination with other portlets and can be used to set the web content item that should be rendered by<br />
the rendering portlet.<br />
Friendly URL for web content example<br />
This example demonstrates how friendly URLs for web content work in conjunction with multiple JSR<br />
286 web content viewers on a single portal page. The example describes the portal page structure<br />
referenced by the friendly URLs and explains the underlying structure of the content in a <strong>IBM</strong> <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> site framework, along with the configuration of the web content viewers.<br />
Setting up the example<br />
The example is composed of the following elements:<br />
Portal page hierarchy<br />
The portal page hierarchy in this example looks like this:<br />
<strong>Content</strong> Root<br />
> Home<br />
> Human Resources<br />
The page Home has a friendly URL name of home, and the page Human Resources has a friendly<br />
URL name of hr. The pages can be accessed directly using the following friendly URLs for pages:<br />
v http://www.example.com:10039/wps/portal/home<br />
v http://www.example.com:10039/wps/portal/home/hr<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> site framework<br />
The <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> site framework resembles the portal page hierarchy:<br />
<strong>Web</strong> <strong>Content</strong> (<strong>Web</strong> content library)<br />
> Home (site area)<br />
> Human Resources (site area)<br />
> HR Welcome (content item)<br />
> Health (site area)<br />
> Workplace Safety (content item)<br />
> Personal Wellness (content item)<br />
> HR Menu (menu component)<br />
These content items can be referenced by the following content paths:<br />
v <strong>Web</strong> <strong>Content</strong>/home/human resources/hr welcome<br />
v <strong>Web</strong> <strong>Content</strong>/home/human resources/health/workplace safety<br />
v <strong>Web</strong> <strong>Content</strong>/home/human resources/health/personal wellness<br />
504 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The menu component HR Menu is defined to display content from the human resources and health<br />
site areas.<br />
<strong>Content</strong> mapping<br />
The portal page Human Resources contains a content mapping to the <strong>Web</strong> <strong>Content</strong>/home/human<br />
resources site area.<br />
JSR 286 web content viewers<br />
The page Human Resources contains two instances of the JSR 286 web content viewer, <strong>Web</strong> <strong>Content</strong><br />
Viewer A and <strong>Web</strong> <strong>Content</strong> Viewer B.<br />
v <strong>Web</strong> <strong>Content</strong> Viewer A displays the menu component HR Menu and is configured to broadcast<br />
links to this portal page.<br />
v <strong>Web</strong> <strong>Content</strong> Viewer B inherits the content to display from the content mapping defined for the<br />
page Human Resources and is configured to receive links from other portlets and from itself.<br />
Browsing the content<br />
With the portal page and web content site framework defined as above, browsing the content<br />
demonstrates how the different elements interact:<br />
1. Navigate to Human Resources page for the first time.<br />
v URL displayed in browser's address bar: http://www.example.com:10039/wps/portal/home/hr/!ut/<br />
p/b1/...<br />
v The URL reflects the friendly URL names of the portal pages Home and Human Resources.<br />
v <strong>Web</strong> <strong>Content</strong> Viewer A renders the menu component and displays links to the content items HR<br />
Welcome, Workplace Safety, and Personal Wellness.<br />
v <strong>Web</strong> <strong>Content</strong> Viewer B shows the default content item HR Welcome from the site area Human<br />
Resources, because of the content mapping defined on the portal page.<br />
Note: When the portal page is first displayed, the path of the default content item is not included<br />
in the friendly URL.<br />
2. Click Workplace Safety from the list of content items.<br />
v URL displayed in browser's address bar: http://www.example.com:10039/wps/portal/home/hr/<br />
health/workplace%20safety/!ut/p/b1/...<br />
v <strong>Web</strong> <strong>Content</strong> Viewer B displays content item Workplace Safety.<br />
v The URL is adjusted so that the path to the content item (health/workplace%20safety) becomes part<br />
of the URL.<br />
Note: Although special characters are allowed in content item names, special characters cannot be<br />
used in URLs. For this reason, the content item path shown in a friendly URL for <strong>Web</strong> content is<br />
URL-encoded. For example, a space character in the URL would be replaced by its URL-encoded<br />
equivalent: %20. Some web browsers perform automatic decoding of the URL, so you might see<br />
unencoded characters in the URL, but the portal always works with an encoded version of the<br />
URL.<br />
3. Click HR Welcome from the list of content items.<br />
v URL displayed in browser's address bar: http://www.example.com:10039/wps/portal/home/hr/hr<br />
%20welcome/!ut/p/b1/...<br />
v <strong>Web</strong> <strong>Content</strong> Viewer B displays the content item HR Welcome again. This gives the same result as<br />
when the portal page was viewed for the first time.<br />
v Because <strong>Web</strong> <strong>Content</strong> Viewer A is broadcasting the link to the content item, the URL displayed in<br />
the browser is updated to reference the path to the content item (hr%20welcome).<br />
Delivering web content 505
Referencing content items with friendly URLs for web content<br />
Although the URL displayed in the web browser can sometimes include the content item path when you<br />
browse pages and content with web content viewers, you can also reference content items directly in<br />
friendly URLs for web content.<br />
For example, to reference the content items HR Welcome, Workplace Safety, and Personal Wellness in the<br />
context of the Human Resources page, you would use the following friendly URLs for web content:<br />
v http://www.example.com:10039/wps/portal/home/hr/hr%20welcome<br />
v http://www.example.com:10039/wps/portal/home/hr/health/workplace%20safety<br />
v http://www.example.com:10039/wps/portal/home/hr/health/personal%20wellness<br />
Note: These friendly URLs for web content include URL-encoded space characters (%20) instead of<br />
unencoded space characters. Although your web browser might accept unencoded space characters when<br />
specifying content item names in friendly URLs for <strong>Web</strong> content, using the URL-encoded value ensures<br />
consistent behavior from the portal.<br />
Related concepts:<br />
“Working with web content pages” on page 515<br />
A web content page is a portal page that displays web content from a site or site area by mapping the<br />
page to the web content site structure in your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system. When you add the web<br />
content viewer to a web content page, the portlet automatically renders the default content of the<br />
attached site or site area. In addition to displaying the default content, the web content viewer provides a<br />
dynamic broadcasting option that selects the best matching web content page when selecting links to<br />
other content items.<br />
Performing remote rendering with WSRP and the JSR 286 web content<br />
viewer<br />
To display web content on a portal that does not have <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> installed, you can use<br />
the JSR 286 web content viewer and the portal's WSRP support. The web content viewer can then retrieve<br />
and display content from a web content system on a different server.<br />
When using the JSR 286 web content viewer for remote rendering with WSRP, the remote web content<br />
server acts as the WSRP Producer and the portal with the web content viewer acts as the WSRP<br />
Consumer.<br />
1. Set up the WSRP environment between the Producer portal and the Consumer portal, as described in<br />
Using WSRP Services. If you plan to use the Edit Shared Settings or Configure modes in the portlet<br />
with WSRP, you must also configure web service security between the Producer and the Consumer<br />
portals.<br />
2. Provide the JSR 286 web content viewer portlet as a WSRP service hosted on the remote web content<br />
server acting as the WSRP Producer.<br />
3. Consume the remote web content viewer provided as a WSRP service on the portal acting as the<br />
WSRP Consumer.<br />
4. Configure the web content viewer to display content, just as you would configure a local web content<br />
viewer.<br />
When using the web content viewer with WSRP, settings that enable you to select content from a web<br />
content library display content from the remote web content system.<br />
Note: Any resources required by the web content viewer, such as resource bundle files or context<br />
processor plug-ins, must be available on the remote web content server acting as the WSRP Producer.<br />
Limitations when using WSRP with the web content viewer:<br />
506 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Because the concept of pages and <strong>Web</strong> content pages does not exist in WSRP, you cannot use the<br />
dynamic link broadcasting feature with web content pages. When specifying how links should be<br />
broadcast, do not select Dynamically select a web content page in the Broadcast links to field.<br />
Selecting this option has the same effect as broadcasting links to the current page.<br />
v The use of authoring tools components or remote authoring action URLs in your web content is not<br />
supported with WSRP.<br />
v All tagging and rating features for web content are not supported with WSRP.<br />
v Personalization elements using selection rules based on the federated documents resource collection<br />
cannot be used with WSRP.<br />
Related information:<br />
Using WSRP services<br />
Providing WSRP services as a Producer<br />
Consuming WSRP services in a Consumer portal<br />
Coordination with other JSR 286 portlets<br />
The JSR 286 web content viewer provides support for two public render parameters, which allow<br />
coordination with other portlets and can be used to set the web content item that should be rendered by<br />
the rendering portlet.<br />
Depending on the portal's configuration, one of the following public render parameters takes precedence:<br />
v By default the path-info public render parameter specifies the content item to be displayed. The fully<br />
qualified name of the parameter is http://www.ibm.com/xmlns/prod/websphere/portal/<br />
publicparams:path-info. The value of the public render parameter must be a valid path to a <strong>Web</strong><br />
content item that can be rendered by the portlet.<br />
v If the path-info parameter is not present, the context public render parameter specifies the path to the<br />
content item. This can occur, for example, if the page has no content mapping or if the content to be<br />
displayed is in a site area that is different from the site area specified by the default mapping. The fully<br />
qualified name of the public render parameter is http://www.ibm.com/xmlns/prod/datatype/<br />
content:context. The value of the public render parameter must be a valid path to a <strong>Web</strong> content item<br />
that can be rendered by the portlet.<br />
Important: The JSR 286 web content viewer only honors the public render parameters if it is configured<br />
to receive links from other portlets.<br />
The public render parameters are defined by the Java Portlet Specification 2.0.<br />
Related concepts:<br />
“Working with friendly URLs for web content” on page 501<br />
With friendly URLs for web content, you can construct URLs to content items that are clear and concise,<br />
making the URLs easier for users to remember and share. Friendly URLs for web content are a<br />
convenient way for users to create bookmarks to content items or for external applications to provide<br />
links directly to content items in the portal. To ensure that you create friendly URLs for web content<br />
effectively, it is important to understand how friendly URLs for portal pages are constructed and how<br />
friendly URLs for web content extend the portal friendly URLs.<br />
Related tasks:<br />
Java Portlet Specification 2.0 (JSR 286)<br />
Linking web content viewers<br />
Many web content viewers can be added to a single portal page or a series of pages. Sometimes it will be<br />
necessary for different <strong>Web</strong> content viewers to interact with each other.<br />
Delivering web content 507
For example, an <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> menu component could be placed in one web content<br />
viewer, and a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content item in another. If you would like the content item to<br />
change when a different link is clicked in the menu, you will need to link the two web content viewers.<br />
Important: You can only link web content viewers of the same type. For example, you can link a<br />
traditional web content viewer to another traditional web content viewer, or you can link a JSR 286 <strong>Web</strong><br />
content viewer to another JSR 286 web content viewer. Links from one type of web content viewer cannot<br />
be interpreted by the other type of viewer.<br />
Broadcasting links<br />
The state or context of a web content viewer is not sent directly from one portlet to another. <strong>Web</strong> content<br />
viewers can be configured to broadcast their current state or context to other web content viewers on the<br />
same <strong>Web</strong>Sphere Portal page, or to web content viewers on other pages. Any information broadcast by a<br />
web content viewer will only be received by web content viewers configured to receive this information.<br />
Receiving links<br />
A web content viewer can receive information on the state or context of the current <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> content item or component being displayed within it, or from <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content<br />
items or components displayed within other web content viewers that are "broadcasting".<br />
Example 1 - configuring links for a single portlet<br />
In this scenario a single web content viewer is configured to display a component, such as a menu, that<br />
contains links to content. When the link is clicked the component is replaced by the content of the link.<br />
The web content viewer then takes on the behavior of the displayed content. The originally displayed<br />
component is displayed again until a new portal session is started.<br />
Table 94. Example 1 - configuring links for a single web content viewer<br />
<strong>Web</strong> content viewer content Broadcast Links to: Receive Links from:<br />
Component: None This web content viewer<br />
When adding a component to a web content viewer, you can also select an alternative presentation<br />
template in the content view of the content section. When a link is clicked in the component, the content<br />
that is then displayed uses the alternate presentation template.<br />
Example 2 - configuring links for a menu and content<br />
In this scenario, one web content viewer contains a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> menu and another <strong>Web</strong><br />
content viewer contains some <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content. Links must be created between the two web<br />
content viewers to enable the displayed content to change when different links in the menu are selected.<br />
Table 95. Example 2 - configuring links for a menu and content<br />
<strong>Web</strong> content viewer content Broadcast Links to: Receive Links from:<br />
Menu: This page None<br />
<strong>Content</strong>: None Other web content viewers and this<br />
web content viewer<br />
Example 3 - configuring links for a navigator and content<br />
In this scenario, one web content viewer contains an item views navigator and another web content<br />
viewer contains some <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content. Links must be created between the two web content<br />
508 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
viewers to enable the displayed content to change when different links in the navigator are selected. The<br />
navigator also changes to reflect the current state of the content being displayed.<br />
Table 96. Example 3 - configuring links for a navigator and content<br />
<strong>Web</strong> content viewer content Broadcast Links to: Receive Links from:<br />
Navigator: This page Other web content viewers and this<br />
web content viewer<br />
<strong>Content</strong>: This page Other web content viewers and this<br />
web content viewer<br />
Example 4 - configuring dynamic links for a navigator and web content pages<br />
In this scenario, one JSR 286 web content viewer contains a site views navigator, and several web content<br />
pages that are mapped to the different site areas of the site. Each <strong>Web</strong> content page contains a JSR 286<br />
web content viewer and is configured to display the default content item of the site area mapped to the<br />
<strong>Web</strong> content page.<br />
Instead of manually creating links between the different JSR 286 web content viewers, a dynamic link<br />
broadcasting feature is used to determine which web content page should be used as the target for the<br />
links to the site area in the navigator.<br />
Table 97. Example 4 - configuring dynamic links for a navigator and web content pages<br />
<strong>Web</strong> content viewer content Broadcast Links to: Receive Links from:<br />
Navigator:<br />
Dynamically select a web content None<br />
page<br />
<strong>Content</strong> on web content page: This page Other JSR 286 web content viewers<br />
and this web content viewer<br />
Adding HTML meta tags for Search Engine Optimization<br />
Search engine optimization (SEO) focuses on improving the visibility of a page or website in search<br />
engine results. A basic technique of SEO is adding HTML title and meta tags to your page source. These<br />
meta tags are used to define keywords and other metadata that search engines and crawlers can use<br />
when creating search indexes and collections. When including content in a page with a web content<br />
viewer, you can improve the SEO of the page by adding title and meta tags with values derived from the<br />
web content itself.<br />
Note: This support is available with cumulative fix 12 for <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> Version 7.<br />
By default, the HTML title for a page is defined by the page title in the portal. However, when you add a<br />
web content viewer to a page to render web content, you can override the value used for the HTML title.<br />
<strong>Web</strong> content viewers that are configured to override the HTML title can also add HTML meta tags as<br />
portlet preferences.<br />
With the Page Display Title field in the portlet settings for the viewer, you can define an HTML title that<br />
better reflects the content on the page. You can even have the viewer pull the title directly from the<br />
rendered content.<br />
Note: Although multiple web content viewers on the same page can set meta tag values, this practice<br />
does not necessarily result in improved SEO. This issue can be further complicated when multiple<br />
viewers set different values for the same meta tag name. When you have multiple viewers on the same<br />
page, select the viewer whose content best represents what the page is about. You can then use that<br />
viewer to define a new HTML title and any meta tags.<br />
Delivering web content 509
To override the HTML title for a page and set meta tags, complete the following steps.<br />
1. Select one web content viewer to be the primary viewer on the page. Click Edit Shared Settings, and<br />
select a value for the Page Display Title field in the portlet settings for the viewer.<br />
To override the HTML title, you must select a value other than Use default title. If you want the title<br />
value to come directly from the web content being rendered by the viewer, select Select from content.<br />
This setting uses the value of the Display title field for the content item in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
After you save the changes, the page header is updated with the new title value. For example:<br />
<br />
Display title of the rendered web content<br />
<br />
2. Create portlet preferences for each meta tag that you want to add to the page header. Each meta tag is<br />
defined by a pair of portlet preferences:<br />
v meta.tag.name.suffix identifies the name of the meta tag (for example, keywords).<br />
v meta.tag.content.suffix identifies the value of the meta tag.<br />
You can also define a specific attribute for the meta tag with the following portal preference:<br />
meta.tag.attribute.suffix.<br />
The suffix portion of each preference is used to associate a name preference with its related value<br />
preference. The suffix can be any value as long as it is unique across the preferences.<br />
There are two ways you can add portlet preferences:<br />
v The Manage Pages portlet of the administration interface. Locate the instance of the web content<br />
viewer you want to modify, and select the Configure portlet icon.<br />
v The XML configuration interface. Export the page containing the instance of the web content viewer<br />
you want to modify. Edit the exported XML file with the meta tags you want to add, and update<br />
the page by using the XML file along with the xmlaccess command.<br />
If you do not set a portlet preference for the attribute name, the attribute name "name" is used by<br />
default.<br />
a. Specify the portal preference for the name of the meta tag. The meta tag name takes the following<br />
format:<br />
meta.tag.name.suffix=name<br />
If you want to specify an attribute other than the name attribute, you can define the attribute<br />
name with the following format:<br />
meta.tag.attribute.suffix=attribute_name<br />
For example, to add the following meta tag with the name keywords:<br />
<br />
Specify the following preference:<br />
meta.tag.name.1=keywords<br />
To add the following meta tag with the http-equiv attribute:<br />
<br />
Specify the following preference:<br />
meta.tag.attribute.1=http-equiv<br />
b. Specify the portal preference for the value of the meta tag. The value of the meta tag can be<br />
specified in three ways:<br />
v You can explicitly enter text for the meta tag value.<br />
v The meta tag value can be derived from the value of a text element in the rendered web<br />
content.<br />
v The meta tag value can be derived from properties that contain information about the rendered<br />
web content.<br />
510 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Depending on how you want to specify the meta tag value, different portlet preferences are<br />
required. Only one value can be specified per suffix.<br />
Use preset text<br />
The meta tag value takes the following format:<br />
meta.tag.content.text.suffix=text<br />
The suffix portion must match the suffix value of the associated meta.tag.name.suffix<br />
preference. The text portion indicates the text to use for the meta tag value.<br />
Use the value of an element<br />
The meta tag value takes the following format:<br />
meta.tag.content.element.suffix=name_of_element<br />
The suffix portion must match the suffix value of the associated meta.tag.name.suffix<br />
preference. The name_of_element portion indicates the name of the element from the web<br />
content being rendered.<br />
Table 98. Elements for populating meta tag values<br />
Element<br />
Text component<br />
Date component<br />
Image component<br />
File component<br />
Meta tag value<br />
Text of the element<br />
Date of the element<br />
URL of the image<br />
URL of the file<br />
Use a property<br />
The meta tag value takes the following format:<br />
meta.tag.content.property.suffix=property<br />
The suffix portion must match the suffix value of the associated meta.tag.name.suffix<br />
preference. The property portion indicates the property containing information about the<br />
web content being rendered. The properties are associated with fields on the rendered<br />
content.<br />
Table 99. Properties for populating meta tag values<br />
Property<br />
AdditionalViewers<br />
Authors<br />
authtemplatename<br />
authtemplatetitle<br />
Categories<br />
CreationDate<br />
Creator<br />
CurrentStage<br />
Description<br />
ExpiryDate<br />
ID<br />
Meta tag value<br />
Name of additional viewers<br />
Display names of the authors of the rendered content<br />
Name of the authoring template of the rendered content<br />
Display title of the authoring template of the rendered<br />
content<br />
Titles of any categories associated with the rendered<br />
content<br />
Creation date of the rendered content<br />
Display name of the user who created the rendered<br />
content<br />
Name of the current workflow stage of the rendered<br />
content<br />
Localized description of the rendered content<br />
Expiration date of the rendered content<br />
ID of the rendered content<br />
Delivering web content 511
Table 99. Properties for populating meta tag values (continued)<br />
Property<br />
GeneralDateOne<br />
GeneralDateTwo<br />
Keywords<br />
LastModifiedDate<br />
LastModifier<br />
Name<br />
Owners<br />
PublishDate<br />
SitePath<br />
Status<br />
Title<br />
Workflow<br />
Meta tag value<br />
Date from the general date one field<br />
Date from the general date two field<br />
Keywords associated with the rendered content<br />
Date that the rendered content was last modified<br />
Display name of the user who made the last change to<br />
the rendered content<br />
Name of the rendered content<br />
Display names of the owners of the rendered content<br />
Date the rendered content was published<br />
Site path of the rendered content<br />
Workflow status of the rendered content<br />
Localized title of the rendered content<br />
Name of the workflow of the rendered content<br />
For several of the most common meta tags, default values are predefined. For these meta tags, you<br />
can create the portlet preference for only the meta tag name. The meta tag value is provided<br />
automatically, without the need for a corresponding name preference. The following meta tags<br />
have default values:<br />
Author<br />
The default value is a list of the authors of the rendered content.<br />
Keywords<br />
The default value is list of any keywords associated with the rendered content.<br />
Description<br />
The default value is the localized description of the rendered content.<br />
If you do want to use the default value, you can set the value using one of the methods<br />
previously described.<br />
c. Optional: If the value of the meta tag requires a scheme attribute, specify the scheme attribute<br />
with the meta.tag.scheme.suffix preference. The meta tag scheme attribute takes the following<br />
format:<br />
meta.tag.scheme.suffix=attribute_value<br />
For example, to add the following scheme attribute with the value W3CDTF:<br />
<br />
Specify the following preference:<br />
meta.tag.scheme.1=W3CDTF<br />
The format and scheme that are used to write date elements and content properties related to date<br />
and time information, such as the LastModifiedDate property, depends on the meta tag attribute<br />
name. By default, all date and time information is formatted according to the date format defined<br />
by the HTTP specification. The format used to write date and time information in other meta tags<br />
is the data and time format recommended by the World Wide <strong>Web</strong> Consortium (W3C) under the<br />
scheme named W3CDTF.<br />
512 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Examples<br />
The following examples demonstrate the different ways of specifying portlet preferences and the resulting<br />
meta tags in the output.<br />
v Setting the meta tag value with the user who created the rendered content:<br />
meta.tag.name.1=DC.creator<br />
meta.tag.content.property.1=Creator<br />
Result:<br />
<br />
v Setting the meta tag value with preset text:<br />
meta.tag.name.1=DC.publisher<br />
meta.tag.content.text.1=<strong>IBM</strong><br />
Result:<br />
<br />
v Setting multiple meta tag values with the default value for the author and the value of the text element<br />
descelement in the rendered content:<br />
meta.tag.name.1=author<br />
meta.tag.name.2=description<br />
meta.tag.content.element.2=descelement<br />
Result:<br />
<br />
<br />
v Setting the meta tag with an http-equiv attribute and a value of the date that the rendered content was<br />
last modified.<br />
meta.tag.name.1=last-modified<br />
meta.tag.attribute.1=http-equiv<br />
meta.tag.content.property.1=LastModifiedDate<br />
Result:<br />
<br />
v Setting the meta tag and with a scheme attribute and a value of the date that the rendered content was<br />
published.<br />
meta.tag.name.1=DC.date<br />
meta.tag.scheme.1=W3CDTF<br />
meta.tag.content.property.1=PublishDate<br />
Result:<br />
<br />
<strong>Web</strong> content viewer best practices<br />
View some best practices for using web content viewers.<br />
User authentication<br />
User authentication to web content viewers is managed by <strong>IBM</strong> <strong>Web</strong>Sphere Portal and <strong>IBM</strong> <strong>Web</strong>Sphere<br />
Application Server. SeeEnabling step-up authentication, the Remember me cookie, or both for further<br />
information.<br />
Delivering web content 513
Security when using WSRP<br />
When displaying web content from remote servers using WSRP and the JSR 286 web content viewer, it is<br />
recommended that you configure security and authentication between the portal server acting as the<br />
WSRP Consumer and the web content server acting as the WSRP Producer. Refer to the topic Security<br />
considerations for WSRP services for details.<br />
Performance considerations<br />
If you are using the web content viewer with a low-bandwidth network connection and if you do not<br />
intend to use inline editing features or remote authoring actions, you can consider disabling the loading<br />
of the JavaScript files used for inline editing. To do this, create a portlet preference parameter with the<br />
key WCM_DISABLE_INLINEEDITING and a value of true. Note that this should only be done if you are not<br />
planning to use authoring tools components or remote authoring action URLs with the web content<br />
viewer.<br />
User access to <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content and components<br />
Users will only be able to view content and components that either their portal user's logon or the user of<br />
the WSRP Consumer has access to. If a portal user's logon or the user of the WSRP Consumer does not<br />
have sufficient rights in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to view a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content or component,<br />
errors may occur.<br />
<strong>Content</strong> and component design<br />
Not all content or components built in a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> solution are suitable for inclusion within<br />
an <strong>IBM</strong> <strong>Web</strong>Sphere Portal page:<br />
v <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content or components to be displayed within a <strong>Web</strong>Sphere Portal page should<br />
be self-contained and not rely on other <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> content or components.<br />
v When creating presentation templates or page styles to use when displaying <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
content within a portlet, it is best practice to reference just the content you would like to display.<br />
Components, such as menus and navigators, should be displayed in separate portlets and linked to the<br />
<strong>Content</strong> Portlet as required.<br />
v JavaScript URLs will not work.<br />
Using JavaScript:<br />
When a web page is rendered via the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application, some tags may be rewritten.<br />
The <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application uses double quotes for attributes in HTML tags. If you use<br />
JavaScript to produce HTML tags, the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application will not recognize them if you<br />
use single quotes.<br />
Path component tags<br />
The URLs generated by the path component will be fully qualified when viewed through a portal. To<br />
generate URLs with no prefix, use the following "Type" parameters instead of the standard parameters:<br />
v Type="noprefixbase" instead of Type="base"<br />
v Type="noprefixservlet" instead of Type="servlet"<br />
v Type="Prefix". When viewed through portal the, prefix value will be printed. If no prefix exists then<br />
empty string is returned.<br />
Other limitations<br />
v The results of a POST in a form are only displayed within the portlet that sent the POST. You cannot<br />
send the result of a POST to another portlet.<br />
514 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v An anonymous <strong>Web</strong>Sphere Portal Server user will also be classed as an anonymous <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> user so that the logon override does not work for anonymous users.<br />
v If a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> proxy server is being used with web content viewers, all URLs rewritten by<br />
the proxy will not be fully-qualified, but server-relative instead. To address this issue, redirect<br />
mappings can be created in the HTTP Server configuration that will pass the URLs to the proxy server.<br />
v Category selection trees cannot be used with the local web content viewer.<br />
v Only advanced caching can be used with a local web content viewer.<br />
v Tagged web content that is displayed in the JSR 286 web content viewer is only available when there is<br />
a single instance of the portlet on the page. When you click on a tag result, the Tag Center broadcasts<br />
the information on what content should display in the viewer using a public render parameter. If you<br />
have multiple instances of web content being displayed in the JSR 286 web content viewer, these<br />
instances display the content that you tagged rather than the original content of these instances.<br />
Related information:<br />
Security considerations for WSRP services<br />
Public render parameters<br />
Working with web content pages<br />
A web content page is a portal page that displays web content from a site or site area by mapping the<br />
page to the web content site structure in your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system. When you add the web<br />
content viewer to a web content page, the portlet automatically renders the default content of the<br />
attached site or site area. In addition to displaying the default content, the web content viewer provides a<br />
dynamic broadcasting option that selects the best matching web content page when selecting links to<br />
other content items.<br />
Related concepts:<br />
“<strong>Web</strong> content viewers” on page 492<br />
<strong>Web</strong> content viewers are portlets that display content from a web content library as part of a portal page.<br />
If your presentation is simple, a single web content viewer can be sufficient, but you can also use<br />
multiple web content viewers to aggregate content from different libraries and provide a richer<br />
experience for your users. The JSR 286 web content viewer is suited to nearly all situations for local and<br />
remote rendering. For a few special cases, the older <strong>IBM</strong> Portlet API web content viewer can still be used.<br />
Creating a web content page<br />
Create a new web content page and associate it with a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> site area.<br />
The simplest way to create a web content page is to use the administration portlet provided in portal,<br />
and that is the process described here. Alternatively, you can also attach content from a web content<br />
folder on any existing portal page using the Advanced options section in the page properties. Doing this<br />
will essentially make the portal page a web content page. This also means that a unique public render<br />
parameters sharing scope is set on the page if no scope was defined yet.<br />
Caching note: When using web content pages, you cannot use advanced web content caching but instead<br />
can use only the portlet fragment cache.<br />
1. Log in to the portal as an administrator.<br />
2. Click Administration in the tool bar.<br />
3. Under Portal User Interface in the navigation tree, click Manage Pages.<br />
4. Click New Page from.<br />
5. Enter a title for the new page.<br />
6. Optional: Enter a friendly URL that is displayed as part of the URL whenever you go to that page.<br />
The friendly URL is intended to be concise and easy to read and remember. It can also be useful to<br />
give the page a friendly URL that matches the title of the site area that is attached to the page.<br />
Delivering web content 515
7. Optional: Choose a template page or select the No template option.<br />
Note: Do not use a web content page as a template when creating a new web content page. <strong>Web</strong><br />
content pages use a public render parameter to broadcast link information between pages. Because<br />
the public render parameter is potentially available to all instances of the JSR 286 web content<br />
viewer, all other web content pages containing a JSR 286 web content viewer would also render the<br />
same content item after a broadcast to another page. It is also possible that using a web content page<br />
as a template page could result in selecting the template page as the page to display a content item.<br />
8. In the <strong>Web</strong> <strong>Content</strong> Options sections, select a folder to associate with the page.<br />
9. Optional: Enable page-based access control for this page by selecting View access to this page shall<br />
imply view access on all resources contained in web_content_library/folder.<br />
Note: If the user creating the page does not have sufficient permissions to enable page-based access<br />
control, the check box is disabled.<br />
10. Add a JSR 286 web content viewer to the new web content page.<br />
Note: This step is only required if you did not use a template to create the new page, or if you did<br />
use a template but the template does not contain at least one JSR 286 web content viewer.<br />
a. Click the Edit Page Layout icon (small pencil) for the new web content page.<br />
b. Click Add portlets and select <strong>Web</strong> <strong>Content</strong> Viewer (JSR 286) from the list of portlets.<br />
c. Click OK and Done.<br />
11. Click OK.<br />
Related tasks:<br />
“Using page-based access control with web content pages”<br />
Use page-based access control to delegate access control of content items to the web content page used to<br />
display the content. When page-based access control is enabled for a site area associated with a web<br />
content page, a user who is authorized to view the page is also automatically assumed to have view<br />
access for all content under the site area associated with the page.<br />
Using page-based access control with web content pages<br />
Use page-based access control to delegate access control of content items to the web content page used to<br />
display the content. When page-based access control is enabled for a site area associated with a web<br />
content page, a user who is authorized to view the page is also automatically assumed to have view<br />
access for all content under the site area associated with the page.<br />
Because <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> is not required to perform additional access control checks when<br />
page-based access control is enabled, rendering performance is improved and security administration is<br />
simplified.<br />
Context processor plug-in note: Context processor plug-ins used with the JSR 286 web content viewer<br />
run in the access control context of the initial page request. Changes made to the rendering context by<br />
context processor plug-ins that might affect whether page-based access control is enabled are evaluated<br />
after all other context processor plug-ins have completed their configuration.<br />
1. To enable page-based access control, ensure that the web content page is associated with a site area or<br />
folder in the web content system. You can do this when creating the page with the New Page from<br />
button in Manage Pages, or you can edit the page properties and select a folder in the <strong>Web</strong> <strong>Content</strong><br />
field under Advanced options.<br />
2. Select View access to this page shall imply view access on all resources contained in<br />
web_content_library/folder.<br />
Note: If the user creating the page does not have sufficient permissions to enable page-based access<br />
control, the check box is disabled. The following access rights are required:<br />
516 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Administrator @ wcm_library, where wcm_library represents the library containing the content that is<br />
mapped to the web content page.<br />
v Administrator @ CONTENT_MAPPINGS<br />
v Editor @ wcm_page, where wcm_page represents the web content page for which you want to enable<br />
page-based access.<br />
Related tasks:<br />
“Creating a web content page” on page 515<br />
Create a new web content page and associate it with a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> site area.<br />
Creating a web content page with the XML configuration interface<br />
As with other portal pages, you can create a web content page with the XML configuration interface<br />
(xmlaccess command). Page definition is similar to a standard portal page, with the addition of a page<br />
parameter that specifies the site area that is associated with the web content page.<br />
1. When creating your xmlaccess command, specify your page parameters as you would for a standard<br />
portal page.<br />
Here is an example:<br />
<br />
<br />
<br />
<br />
<br />
<br />
Note: The value of the content-id attribute can be either the ID or the path to the web content item.<br />
If you're using the content path, the value must begin with the forward slash character (/) followed<br />
by the library name. When creating a web content page using the content path, you cannot build the<br />
path from the Display title fields of the items in the path. Instead you must use the Name fields of<br />
the items when specifying the path.<br />
2. When creating your xmlaccess command, include the additional parameter param.sharing.scope. The<br />
value of the parameter can be arbitrary, but it must be unique between pages.<br />
Here is an example parameter definition for web content pages when using the XML configuration<br />
interface:<br />
<br />
<br />
3. When creating your xmlaccess command, add at least one JSR 286 web content viewer that is<br />
configured to listen to other portlets and make dynamic broadcasts. This ensures that content selected<br />
for this page is rendered correctly and that links between pages work properly.<br />
Here is an example of how to add the JSR 286 web content viewer using the XML configuration<br />
interface:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Delivering web content 517
<br />
<br />
<br />
<br />
<br />
Migration note: After Version 6.1.5, the format used by the XML configuration interface to represent<br />
content mappings for a web content page has changed. Typically the migration process automatically<br />
converts all existing web content pages to the updated format. However, if you deploy additional web<br />
content pages on the Version 6.1.5 portal after migration and then import the pages to the Version 7.0<br />
portal, you must manually run the action-migrate-content-mappings configuration task on the<br />
Version 7.0 portal to convert the new web content pages to the Version 7.0 format. To perform the<br />
conversion, run the following task from the wp_profile_root/ConfigEngine directory:<br />
v Windows: ConfigEngine.bat action-migrate-content-mappings -DWasPassword=password<br />
-DPortalAdminPwd=password<br />
v UNIX: ./ConfigEngine.sh action-migrate-content-mappings -DWasPassword=password<br />
-DPortalAdminPwd=password<br />
v i: ConfigEngine.sh action-migrate-content-mappings -DWasPassword=password<br />
-DPortalAdminPwd=password<br />
v z/OS: ./ConfigEngine.sh action-migrate-content-mappings -DWasPassword=password<br />
-DPortalAdminPwd=password<br />
Related concepts:<br />
The XML configuration interface<br />
Previewing content on <strong>Web</strong> content pages<br />
If you have enabled support for <strong>Web</strong> content pages, you can preview content items in the authoring<br />
portlet as they will appear on <strong>Web</strong> content pages.<br />
Before the introduction of <strong>Web</strong> content pages, a content item could only be previewed as a standalone<br />
<strong>Web</strong> page, which was as a predefined local or remote portal page that contained the traditional <strong>Web</strong><br />
content viewer. With the introduction of <strong>Web</strong> content pages, you can now preview a content item as part<br />
of a <strong>Web</strong> content portal page, showing the content item in a more accurate context. The content item is<br />
previewed on the <strong>Web</strong> content portal page that is associated with the content items site or site area.<br />
Important: It is essential that there be a <strong>Web</strong> content viewer on the associated <strong>Web</strong> content page and that<br />
the portlet is configured to receive links from other portlets.<br />
Previewing content items on <strong>Web</strong> content pages is only available with the JSR 286 <strong>Web</strong> content viewer<br />
and does not work with the traditional <strong>Web</strong> content viewer.<br />
1. Enable the preview function in the authoring portlet. This step only needs to be done once.<br />
a. Select either Edit Shared Settings or Configure from the drop-down menu located in the title bar<br />
of the authoring portlet.<br />
b. In the Previewing Options section, select Allow authors to preview content dynamically in a<br />
<strong>Web</strong> <strong>Content</strong> portal page.<br />
c. Click OK.<br />
2. Preview content as a <strong>Web</strong> content page.<br />
a. Select a content item in the authoring portlet.<br />
b. Click Preview, and then select Preview as a <strong>Web</strong> <strong>Content</strong> portal page. A new browser window<br />
opens displaying the content item on its associated <strong>Web</strong> content page.<br />
518 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Dynamic web content page selection<br />
The web content viewer provides a link broadcasting feature that leverages the content mappings on a<br />
web content page to dynamically look up the best matching web content page to render the linked<br />
content item.<br />
When the web content viewer is configured to use the Dynamically select a web content page link<br />
broadcasting option and a user selects a link to a content item, several tests are performed to determine<br />
which web content page should be used to render the selected item. The same mechanism is used when<br />
previewing web content on web content pages or when selecting search results produced from the search<br />
seedlist 1.0 feature.<br />
1. An ordered list with all parent site areas of the selected content item is created. If the selected item<br />
itself is a site area, it is part of that list. The order in the list matches the order in the <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> content hierarchy with the topmost parent being the last item in the list and the direct<br />
parent of the selected item (or the item itself) being the first item.<br />
2. Based on this ordered list, a lookup is performed to find the web content page that the current user<br />
has view access to and that is mapped to the first site areas for which a page content mapping exists.<br />
If the content mappings indicate that multiple pages map equally well, the web content viewer selects<br />
a single page using the following rules:<br />
v If the current page is among the pages found, the current page takes precedence over the other<br />
results.<br />
v If one of the pages indicated by the content mappings is the default content mapping for the page,<br />
that page takes precedence over the other results.<br />
v If the previous rules do not identify a page, a page is selected arbitrarily from the set of found<br />
pages.<br />
3. If a web content page can be determined in the previous test, the selected content item is rendered on<br />
this page.<br />
4. If no page can be identified by the content mappings, the web content fallback page is used to render<br />
the content item.<br />
5. If no fallback page is configured or if the user does not have view rights on the fallback page, the<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> servlet is used to render the item.<br />
Important: To render a content item, the dynamically selected target page needs to contain at least one<br />
web content viewer that has been configured to receive links from other portlets.<br />
Note: You can develop custom solutions to extend or change the web content page selection process with<br />
the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> Java API.<br />
Setting up a <strong>Web</strong> content fallback page<br />
Set up a <strong>Web</strong> content fallback page to be used when the JSR 286 <strong>Web</strong> content viewer cannot dynamically<br />
determine which page to use when displaying a content item or when the user does not have sufficient<br />
privileges to view the page originally associated with the content item.<br />
1. Create the portal page to be used as the <strong>Web</strong> content fallback page.<br />
v Specify a unique name for the page so you can reference the page later.<br />
v Assign any access rights required for users. For example, if the fallback page is available in the<br />
public part of the portal, ensure that anonymous users have view access to the page.<br />
2. Add a JSR 286 <strong>Web</strong> content viewer to the fallback page.<br />
a. Click the Edit Page Layout icon (small pencil) for the new page.<br />
b. Click Add portlets and select <strong>Web</strong> <strong>Content</strong> Viewer (JSR 286) from the list of portlets.<br />
c. Click OK and Done.<br />
3. Update the <strong>Web</strong>Sphere Portal configuration service to enable the fallback page.<br />
a. Log in to the <strong>Web</strong>Sphere Application Server administrative console.<br />
Delivering web content 519
. Click Resources > Resource Environment > Resource Environment Providers.<br />
c. Click WP ConfigService.<br />
d. Under Additional Properties, click Custom Properties.<br />
e. Click New, and enter the property name wcm.fallback.page, and set the string value to the unique<br />
name or object ID of the portal page you created as the fallback page.<br />
f. Click OK, and save the changes to the master configuration.<br />
4. Restart the portal.<br />
The <strong>Web</strong> content fallback page is now displayed when a JSR 286 <strong>Web</strong> content viewer is configured with a<br />
link broadcast setting of Dynamically select a web content page and one of the following conditions<br />
occurs:<br />
v The <strong>Web</strong> content viewer cannot determine which page should be used to display the linked content<br />
item.<br />
v The <strong>Web</strong> content viewer identifies the page associated with the content item, but the user does not<br />
have sufficient privileges to view that page.<br />
<strong>Content</strong> mappings<br />
<strong>Content</strong> mappings are used to associate <strong>Web</strong> content pages with the <strong>Web</strong> content site structure in your<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system. When you select a folder to associate with a <strong>Web</strong> content page, a content<br />
mapping is created and maintained within the portal. Typically, the management of content mappings is<br />
automatically handled by the portal, but for those situations where you need to work more directly with<br />
content mappings, several mechanisms are available: the XML configuration interface, the Portal Scripting<br />
Interface, and the REST API for content mappings.<br />
XML configuration interface and content mappings<br />
With the XML configuration interface (xmlaccess command), you can perform batch updates of content<br />
mappings or export content mappings to import into another portal. <strong>Content</strong> mapping information is<br />
represented in the XML configuration schema by content-mapping-info elements.<br />
Exporting content mappings<br />
The content mappings for a <strong>Web</strong> content page are represented in an XML export file as nested<br />
content-mapping-info elements.<br />
The following example represents a <strong>Web</strong> content page with two content mappings:<br />
<br />
<br />
<br />
<br />
<br />
<br />
Note: If no content-mapping-info elements are present in an XML export document, there are currently<br />
no content mappings defined for the <strong>Web</strong> content page.<br />
Importing content mappings<br />
When importing content mappings with an XML import file, all content mappings for a particular <strong>Web</strong><br />
content page are represented in the content-mapping-info element for the <strong>Web</strong> content page. Any content<br />
mappings that are already defined for the <strong>Web</strong> content page are removed when you perform the import<br />
and replaced with the new content mappings.<br />
The following example updates a <strong>Web</strong> content page to have two specific content mappings:<br />
520 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<br />
<br />
<br />
<br />
<br />
Note: If no content-mapping-info element is present in an XML import document, no changes are made<br />
to the content mappings currently defined for the <strong>Web</strong> content page.<br />
Deleting content mappings<br />
You can delete content mappings by specifying an empty content-mapping-info element in the XML<br />
import file.<br />
The following example updates a <strong>Web</strong> content page to delete any defined content mappings:<br />
<br />
<br />
<br />
Related concepts:<br />
The XML configuration interface<br />
Portal Scripting Interface and content mappings<br />
With the Portal Scripting Interface, you can create scripts that you can use to automate the management<br />
of content mappings between <strong>Web</strong> content pages and folders in your <strong>Web</strong> content system. Using the<br />
<strong>Content</strong>Mapping bean with the Portal Scripting Interface, you can add, modify, and remove content<br />
mappings.<br />
Note: Before a script can work with content mappings through the <strong>Content</strong>Mapping bean, you must<br />
establish a user session with the portal using the login command of the Portal bean. The user identity<br />
must have sufficient permissions to administer the <strong>Web</strong> content pages and <strong>Web</strong> content library folders<br />
referenced by the script.<br />
Retrieving content mappings<br />
To retrieve content mapping information, use the select method to specify the object ID of the <strong>Web</strong><br />
content page. You can often derive the object ID for a resource from another bean and use that as input<br />
for the select method. For example, to retrieve the content mappings for a <strong>Web</strong> content page with the<br />
unique name my.test.page, you can use the find method of the <strong>Content</strong> bean to determine the object ID<br />
of the <strong>Web</strong> content page.<br />
Jacl example:<br />
$set the_page [$<strong>Content</strong> find page uniquename "my.test.page"]<br />
$<strong>Content</strong>Mapping select $the_page<br />
Jython example:<br />
the_page = <strong>Content</strong>.find(’page’,’uniquename’,’my.test.page’)<br />
<strong>Content</strong>Mapping.select(the_page)<br />
After you have the object ID of the <strong>Web</strong> content page, you can use the list and get methods to access<br />
the content mappings. The list method returns a list of content mapping IDs, which can be either the<br />
resource ID of a folder or the content path of the folder, depending on how the <strong>Web</strong> content page is<br />
mapped. You can use the content mapping IDs returned by the list method as arguments for the get<br />
method.<br />
Delivering web content 521
Jacl example:<br />
$set the_page [$<strong>Content</strong> find page uniquename "my.test.page"]<br />
$<strong>Content</strong>Mapping select $the_page<br />
foreach mid [$<strong>Content</strong>Mapping list mappings] {<br />
puts " Mapping $mid info:"<br />
puts " content id: [$<strong>Content</strong>Mapping get $mid content-id]"<br />
puts " default [$<strong>Content</strong>Mapping get $mid isdefault]"<br />
puts " scope: [$<strong>Content</strong>Mapping get $mid scope]"<br />
}<br />
Jython example:<br />
var the_page = <strong>Content</strong>.find(’page’,’uniquename’,’my.test.page’)<br />
<strong>Content</strong>Mapping.select(the_page)<br />
for mid in <strong>Content</strong>Mapping.list(’mappings’).split():<br />
print " Mapping "+mid+" info:"<br />
print " content id: "+<strong>Content</strong>Mapping get(mid,’content-id’)<br />
print " default "+<strong>Content</strong>Mapping get(mid,’isdefault’)<br />
print " scope: "+<strong>Content</strong>Mapping get(mid,’scope’)<br />
In addition the get method can return the default mapping for the selected <strong>Web</strong> content page, and the<br />
list method can retrieve a list of scopes that are defined for the mappings of the <strong>Web</strong> content page.<br />
Jacl example:<br />
$set the_page [$<strong>Content</strong> find page uniquename "my.test.page"]<br />
$<strong>Content</strong>Mapping select $the_page<br />
puts "available scopes: [$<strong>Content</strong>Mapping list scopes]"<br />
puts "default mapping: [$<strong>Content</strong>Mapping get defaultmapping]"<br />
puts "portal resource OID: [$<strong>Content</strong>Mapping get oid]"<br />
Jython example:<br />
var the_page = <strong>Content</strong>.find(’page’,’uniquename’,’my.test.page’)<br />
<strong>Content</strong>Mapping.select(the_page)<br />
print "available scopes: "+<strong>Content</strong>Mapping.list(’scopes’)<br />
print "default mapping: "+<strong>Content</strong>Mapping.get(’defaultmapping’)<br />
print "portal resource OID: "+<strong>Content</strong>Mapping.get(’oid’)<br />
Adding content mappings<br />
Use the add method to add new content mappings to a <strong>Web</strong> content page. You can assign a content<br />
mapping by specifying the content path of the folder or the ID of folder. If you identify the folder by<br />
content path, the mapping will be internally transformed to actually point to the ID of the folder. As a<br />
result, if you rename the folder later on, the mapping will still point to the same folder.<br />
Jacl example:<br />
$<strong>Content</strong>Mapping select [$<strong>Content</strong>Node find page uniquename "my.sample.page"]<br />
$<strong>Content</strong>Mapping add content-path "/test1/mapping"<br />
set the_content_id .... ## obtain ID of content to be mapped<br />
$<strong>Content</strong>Mapping add id $the_content_id<br />
Jython example:<br />
<strong>Content</strong>Mapping.select(<strong>Content</strong>.find(’all’,’un’,’my.sample.page’))<br />
<strong>Content</strong>Mapping.add(’content-path’,’/test1/mapping’)<br />
var the_content_id = ... ## obtain ID of content to be mapped<br />
<strong>Content</strong>Mapping.add(’id’,the_content_id)<br />
Removing content mappings<br />
The <strong>Content</strong>Mapping bean provides two methods you can use to remove content mappings from a <strong>Web</strong><br />
content page:<br />
522 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v remove: Removes an individual content mapping, as specified either by the resource ID of the folder or<br />
the content path of the folder.<br />
v delete: Removes all content mappings for the <strong>Web</strong> content page.<br />
The following examples demonstrate how to remove the content mappings for two <strong>Web</strong> content pages.<br />
The content mappings of the first page are removed individually with the remove method, and the<br />
content mappings of the second page are removed with the delete method.<br />
Jacl Example:<br />
$set the_first_page [$<strong>Content</strong> find page uniquename "my.test.page"]<br />
$<strong>Content</strong>Mapping select $the_first_page<br />
foreach mid [$<strong>Content</strong>Mapping list mappings] {<br />
$<strong>Content</strong>Mapping remove $mid<br />
}<br />
$set another_page [$<strong>Content</strong> find page uniquename "my.second.test.page"]<br />
$<strong>Content</strong>Mapping select $another_page<br />
$<strong>Content</strong>Mapping delete<br />
Jython Example:<br />
var the_page = <strong>Content</strong>.find(’page’,’uniquename’,’my.test.page’)<br />
<strong>Content</strong>Mapping.select(the_first_page)<br />
for mid in <strong>Content</strong>Mapping.list(’mappings’).split():<br />
<strong>Content</strong>Mapping.remove(mid)<br />
var another_page = <strong>Content</strong>.find(’page’,’uniquename’,’my.second.test.page’)<br />
<strong>Content</strong>Mapping.select(another_page)<br />
<strong>Content</strong>Mapping.delete()<br />
Modifying content mappings<br />
To modify content mappings, use the set method of the <strong>Content</strong>Mapping bean. You can change the<br />
following attributes:<br />
v Default flag<br />
v Delegation mode<br />
v Mapping scope<br />
When calling the set method, pass in the ID of the content mapping that you want to update.<br />
The following example updates two content mappings for the <strong>Web</strong> content page identified by the unique<br />
name my.test.page. For the first content mapping, the default flag is set to make this the default content<br />
mapping for the <strong>Web</strong> content page, the mapping scope is specified as _scp_, and page-based access<br />
control is turned off by setting the delegation mode to false. For the second content mapping, the<br />
mapping scope is removed by specifying an empty string.<br />
Jacl Example:<br />
$<strong>Content</strong>Mapping select [$<strong>Content</strong>Node find page uniquename "my.sample.page"]<br />
set first_m_id [lindex [$<strong>Content</strong>Mapping list mappings] 0]<br />
$<strong>Content</strong>Mapping set scope $first_m_id "_scp_"<br />
$<strong>Content</strong>Mapping set default $first_m_id true<br />
$<strong>Content</strong>Mapping set delegation $first_m_id false<br />
set second_m_id [lindex [$<strong>Content</strong>Mapping list mappings] 1]<br />
$<strong>Content</strong>Mapping set scope $second_m_id ""<br />
Jython Example:<br />
<strong>Content</strong>Mapping.select(<strong>Content</strong>.find(’all’,’un’,’my.sample.page’))<br />
var first_m_id = <strong>Content</strong>Mapping.list(’mappings’).split()[0]<br />
<strong>Content</strong>Mapping.set(’scope’,first_m_id,’_scp_’)<br />
Delivering web content 523
<strong>Content</strong>Mapping.set(’default’,first_m_id,’true’)<br />
<strong>Content</strong>Mapping.set(’delegation’,first_m_id,’false’)<br />
var second_m_id = <strong>Content</strong>Mapping.list(’mappings’).split()[1]<br />
<strong>Content</strong>Mapping.set(’scope’,second_m_id,’’)<br />
Related reference:<br />
Portal Scripting Interface<br />
REST API and content mappings<br />
If you are creating or extending an application and want to manage content mappings with that<br />
application, you can use portal remote APIs to retrieve a list of content mappings and then create,<br />
update, or delete mappings. Based on the Representational State Transfer (REST) architecture, these<br />
remote APIs represent information about content mappings as ATOM feeds, with actions being performed<br />
by sending HTTP requests to specific URLs.<br />
Retrieving all content mappings<br />
This request returns a feed containing all content mappings available in the system.<br />
URL<br />
http://hostname:port/context_root/mypocuri=contentmapping:objecttype:CONTENT_NODE<br />
&mode=download<br />
HTTP method<br />
GET<br />
Links<br />
Link information is provided for each entry in the ATOM feed, as identified by the rel attribute.<br />
Table 100. Link information in the ATOM feed for retrieving content mappings<br />
Link<br />
rel="self"<br />
rel="edit"<br />
rel="related"<br />
rel="first"<br />
rel="last"<br />
rel="previous"<br />
rel="next"<br />
Description<br />
Link to this ATOM entry.<br />
Link to this item that can be used for POST, PUT, and<br />
DELETE operations.<br />
Link that can be used to view the <strong>Web</strong> content page with<br />
which the content mapping is associated.<br />
Link to the first feed fragment. This link is only served if<br />
a feed fragment was served.<br />
Link to the last feed fragment. This link is only served if<br />
a feed fragment was served.<br />
Link to the feed fragment preceding the current feed<br />
fragment. This link is only served if a feed fragment was<br />
served that does not start at the beginning of the feed.<br />
Link to the next feed fragment. This link is only served if<br />
a feed fragment was served that does not contain the last<br />
entry of the feed.<br />
Supported URL parameters<br />
Table 101. Supported parameters for requests to retrieve content mappings<br />
Parameter<br />
start-index<br />
max-results<br />
Description<br />
Identifies the start index of the feed fragment to be<br />
served. The default value is 0.<br />
Identifies the maximum number of entries to served by<br />
this request, as determined by the server's configuration.<br />
524 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Retrieving content mappings for a specific <strong>Web</strong> content page<br />
This request returns a feed containing the content mappings defined for a specific <strong>Web</strong> content page.<br />
URL The <strong>Web</strong> content page is identified either by its object ID or by its unique name.<br />
http://hostname:port/context_root/mypocuri=contentmapping:oid:serialized_object_id<br />
http://hostname:port/context_root/mypocuri=contentmapping:oid:unique_name<br />
HTTP method<br />
GET<br />
Links Link information is provided for each entry in the ATOM feed, as identified by the rel attribute.<br />
Table 102. Link information in the ATOM feed for retrieving content mappings for a specific <strong>Web</strong> content page<br />
Link<br />
Description<br />
rel="self"<br />
Link to this ATOM entry.<br />
rel="edit"<br />
Link to this item that can be used for POST, PUT, and<br />
DELETE operations.<br />
rel="related"<br />
Link that can be used to view the <strong>Web</strong> content page with<br />
which the content mapping is associated.<br />
Modifying content mappings<br />
This request updates the content mappings defined for a specific <strong>Web</strong> content page.<br />
URL The <strong>Web</strong> content page is identified either by its object ID or by its unique name.<br />
http://hostname:port/context_root/mypocuri=contentmapping:oid:serialized_object_id<br />
http://hostname:port/context_root/mypocuri=contentmapping:oid:unique_name<br />
HTTP method<br />
PUT<br />
Links Link information is provided for each entry in the ATOM feed, as identified by the rel attribute.<br />
Table 103. Link information in the ATOM feed for modifying content mappings<br />
Link<br />
Description<br />
rel="self"<br />
Link to this ATOM entry.<br />
rel="edit"<br />
Link to this item that can be used for POST, PUT, and<br />
DELETE operations.<br />
rel="related"<br />
Link that can be used to view the <strong>Web</strong> content page with<br />
which the content mapping is associated.<br />
Supported URL parameters<br />
Delivering web content 525
Table 104. Supported parameters for requests for modifying content mappings<br />
Parameters<br />
Description<br />
update<br />
The following values are supported for the update<br />
parameter:<br />
merge<br />
This mode merges the content mappings in the<br />
request with the content mappings on the<br />
server. The request updates existing content<br />
mappings and adds new content mappings, but<br />
the request does not delete other content<br />
mappings already on the server.<br />
replace This mode replace all current content mappings<br />
on the server with the content mappings<br />
specified in the request. The request updates<br />
existing content mappings, adds new content<br />
mappings, and deletes other content mappings<br />
on the server that are not represented in the<br />
request.<br />
delete<br />
This mode deletes the content mapping<br />
specified in the request from the <strong>Web</strong> content<br />
page.<br />
Deleting content mappings<br />
This request deletes either all content mappings for a specific <strong>Web</strong> content page or an individual content<br />
mapping to specific content item.<br />
URL The <strong>Web</strong> content page is identified either by its object ID or by its unique name.<br />
http://hostname:port/context_root/mypocuri=contentmapping:oid:serialized_object_id<br />
http://hostname:port/context_root/mypocuri=contentmapping:oid:unique_name<br />
HTTP method<br />
DELETE<br />
Supported URL parameters<br />
Table 105. Supported parameters for requests for deleting content mappings for a <strong>Web</strong> content page<br />
Parameters<br />
Description<br />
content<br />
Indicates the content mappings to be deleted. If the<br />
content parameter is not specified, all content mappings<br />
for the <strong>Web</strong> content page are deleted.<br />
If the content ID for a content item is specified as the<br />
value of the content parameter, the only content<br />
mapping deleted is the one that maps the <strong>Web</strong> content<br />
page to the specified content item. Any other content<br />
mappings are unaffected.<br />
Example ATOM feed document<br />
<br />
<br />
<strong>Content</strong> Mappings Feed<br />
526 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<strong>Web</strong>Sphere Portal<br />
<br />
<br />
contentmapping:objecttype%3aCONTENT_NODE<br />
2009-08-25T12:10:51.641Z<br />
<br />
contentmapping:oid6_2QC68B1A0GVJE0IOA0R0Q02040<br />
6_2QC68B1A0GVJE0IOA0R0Q02040<br />
<br />
<br />
<br />
2009-08-25T12:10:51.805Z<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
contentmapping:oid6_2QC68B1A00VBC0IOSHU0A220O6<br />
cnCTFPortlet<br />
<br />
<br />
<br />
2009-08-25T12:10:51.810Z<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Pre-rendered delivery<br />
You can pre-render a complete <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> site into HTML and save it to disk. The<br />
pre-rendered site can then be used as your live site and displayed to end users using either <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> or a web server. You deploy a pre-rendered site when you are not using any <strong>Web</strong>Sphere Portal<br />
features and your content is static and is only updated periodically.<br />
Restrictions<br />
v Site areas and content item names cannot contain characters that are considered invalid in file<br />
names by the operating system on which you are pre-rendering. For example, on a machine<br />
running Windows, these characters are invalid: /\:*"|.<br />
v The path to the content item, including the directory path to which you are pre-rendering (for<br />
example, site area/content) cannot exceed the operating system's maximum path length:<br />
– 255 characters in Windows<br />
– 1024 characters in Linux<br />
v The Search component cannot be used in pre-rendered sites.<br />
v The Page navigation component cannot be used in pre-rendered sites.<br />
Delivering web content 527
v Personalization elements can only be pre-rendered if the personalization rule is configured for<br />
anonymous access.<br />
Site security<br />
Item security for read access for different users set in a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> environment is not<br />
transferred to pre-rendered sites. The security for the entire pre-rendered site is based on the<br />
connect.moduleconfig.cacher.rendereruser property as specified in the WCM WCMConfigService<br />
service using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console.<br />
Related concepts:<br />
“Configuring pre-rendering” on page 70<br />
You can enable pre-rendering so that content can be viewed either through a <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
application or as a standalone site that is accessed through a web server.<br />
Pre-rendering a website<br />
Pre-rendering can be configured to run automatically, or you can manually pre-render a website using a<br />
URL.<br />
Administrator access: In order to pre-render a website, you must have administrator access to the library<br />
that contains the site area.<br />
Automatically pre-rendering a website<br />
Pre-rendering can be run according to the cacher settings specified for the WCM WCMConfigService service<br />
as part of the pre-rendering configuration.<br />
Manually pre-rendering a website<br />
Pre-rendering can be also be initiated through the URL interface. For example:<br />
http://host_name:port_number/wps/wcm/connectMOD=Cacher&SRV=cacheSite&sitearea=sitearea_name<br />
&library=library_name<br />
Table 106. CacherModule options<br />
Service Required Parameters Optional Parameters<br />
SRV=cacheSite<br />
Initializes prerendering for the given<br />
site area with a delay as given (in<br />
seconds).<br />
SRV=flushSiteCache<br />
Clears (flushes) the given site cache.<br />
Deletes all pre-rendered data.<br />
SRV=flushPageCache<br />
Flushes the page from the site cache.<br />
The site area and page are<br />
determined from the request URL.<br />
No SRV specified<br />
The CacherModule attempts to<br />
retrieve the given page from the<br />
cache.<br />
sitearea=<br />
sitearea=<br />
DELAY=<br />
LIBRARY=<br />
Note: If no library is specified, the<br />
default library is used, as specified<br />
by the defaultLibrary property in<br />
the WCM WCMConfigService service.<br />
LIBRARY=<br />
Note: If no library is specified, the<br />
default library is used, as specified<br />
by the defaultLibrary property in<br />
the WCM WCMConfigService service.<br />
528 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
You can also pre-render individual pages using the following URL:<br />
http://host_name:port_number/wps/wcm/connect/library_name/site_area_name/contentMOD=Cacher<br />
Note:<br />
v To pre-render individual content items the site area specified in the URL must either be a site area set<br />
in the WCM WCMConfigService service, or you must have previously manually pre-rendered the site area<br />
using "SRV=cacheSite".<br />
Related concepts:<br />
“Configuring pre-rendering” on page 70<br />
You can enable pre-rendering so that content can be viewed either through a <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
application or as a standalone site that is accessed through a web server.<br />
Accessing the pre-rendered site<br />
Pre-rendered sites are accessed either through <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>, or through a web server.<br />
Accessing the pre-rendered site through a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application<br />
To enable users to access the pre-rendered site through a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application, specify the<br />
connect.businesslogic.module.default.class property in the WCM WCMConfigService service using the<br />
<strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console.<br />
v Property name: connect.businesslogic.module.default.class<br />
v Value: com.aptrix.cacher.CacherModule<br />
Users can access the site through the following URL:<br />
http://host_name:port_number/wps/wcm/connect/library_name/sitearea_name<br />
The library_name parameter is optional. If no library is specified, the default library is used, as specified<br />
by the defaultLibrary property in the WCM WCMConfigService service.<br />
Connect tags:<br />
Connect tags are not processed by the CacherModule and are rendered intact. When the<br />
pre-rendered page is accessed by a user, only then will the connect tags be processed.<br />
Pre-rendering JSP components:<br />
The pre-rendering feature cannot be used to pre-render JSP components.<br />
Links to content not yet pre-rendered:<br />
A component, such as a menu, that contains links to content not yet pre-rendered is retrieved by<br />
the CacherModule and added to the pre-rendered site. This only applies to content belonging to<br />
sites configured to be pre-rendered.<br />
Custom expiring:<br />
Custom caching parameters cannot be used in connect tags and URL requests in pre-rendered<br />
sites. "EXPIRES=" and "CONNECTORCACHEEXPIRY=" can be used to override your server's<br />
default basic and data cache settings.<br />
Authoring portlet:<br />
The authoring portlet can still be accessed when the default class is changed from RendererModule<br />
to CacherModule as long as it has not been added to the lists of sites to be pre-rendered.<br />
CacherModule as default:<br />
If using the URL interface when the CacherModule is the default, you do not need to specify<br />
mod=cacher. Instead, enter the request as follows:<br />
Delivering web content 529
http://host_name:port_number/wps/wcm/connectSRV=cacheSite&library=library_name<br />
&sitearea=sitearea_name<br />
Accessing the pre-rendered site through a web server<br />
If your web server is not used for <strong>Web</strong>Sphere Portal Server, you can configure your web server to map to<br />
the following alias and <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> directories:<br />
Table 107. Alias and directory details<br />
Alias<br />
/wps/wcm/connect<br />
Directory<br />
[ILWWCM_HOME]/ilwwcm/cacher<br />
When using a web server to view a pre-rendered site, the above directories require execute access.<br />
Users access the site via the following URL:<br />
http://host_name:port_number/wps/wcm/connect/library_name/sitearea_name<br />
Use the following configuration properties in the WCM WCMConfigService to change the context of the<br />
URLs generated with pre-rendering:<br />
v connect.moduleconfig.cacher.task.cacherurl<br />
v connect.moduleconfig.cacher.task.servletpath<br />
For example, to set a context of /sales, use the following properties:<br />
Cacher URL<br />
v Property name: connect.moduleconfig.cacher.task.cacherurl<br />
v Value: http://${WCM_HOST}:${WCM_PORT}/sales<br />
Servlet path<br />
v Property name: connect.moduleconfig.cacher.task.servletpath<br />
v Value: /connect<br />
If your web server is used for both a <strong>Web</strong>Sphere Portal server and accessing the pre-rendered site, you<br />
must change the context of the URLs . Any context that starts with the <strong>Web</strong>Sphere Portal server context,<br />
/wps for example, will be redirected to <strong>Web</strong>Sphere Portal server.<br />
Connect tags cannot be used:<br />
Connect tags are not processed by the CacherModule and are rendered intact. When the page is<br />
viewed through a web server, connect tags cannot be processed. Therefore, connect tags cannot be<br />
used in sites that are to be viewed through a web server.<br />
Pre-rendering JSP components:<br />
The pre-rendering feature cannot be used to pre-render JSP components.<br />
Dynamic elements:<br />
When viewing a pre-rendered site through a web server, any dynamic elements such as menus<br />
and navigators are displayed as rendered by the configured CacherModule user, not by the user<br />
accessing the site. This means personalization cannot be used.<br />
530 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Administering<br />
Learn how to administer web content libraries, feeds and syndication relationships.<br />
<strong>Web</strong> content administration functions<br />
A web content administrator will need to maintain web content libraries, user roles, syndication<br />
relationships and external feed configurations.<br />
<strong>Web</strong> content libraries<br />
Your web content system can contain multiple libraries. The number of libraries required is determined<br />
by the type of website you are creating, and the types of users who require access to each library.<br />
In most systems you will need a minimum of two libraries:<br />
1. A design library where you store all the items required for the web content system itself<br />
2. A content library used to store the content developed by your content creators<br />
Separating your site into these libraries enables you to better control the access to each library, and also<br />
allows you to setup different syndication strategies for each library.<br />
Example:<br />
Human resource and marketing content are stored in separate libraries.<br />
A third library is used to store brand-related content (images, presentation templates, brand related text<br />
and HTML components).<br />
<strong>Content</strong> from the branding library can be accessed and used by the human resource and marketing but it<br />
is read-only. Only users with edit access or above to the branding library can edit branding.<br />
531
Related tasks:<br />
“Creating web content libraries” on page 209<br />
You create web content libraries in the <strong>Web</strong>Sphere Portal administration portlet.<br />
Users, Groups and Roles<br />
Your content management system will require different types of users. You will need to create a different<br />
group for each type of user and then assign those groups different roles within your system.<br />
Developing an access control strategy<br />
You can restrict access to selected users and groups to the views within an authoring portlet, the items<br />
managed by the authoring portlet, and to elements and pages displayed within a website.<br />
How access and security levels are set<br />
There are three levels of access controls for web content<br />
Library:<br />
Library level access controls determine access to the library as a whole. If granted, it provides an<br />
entry point to the library. A user needs at least contributor access to a library in order to have<br />
access to it on the Authoring Portlet.<br />
Item type per library:<br />
Item Type access controls define the item type views and tasks a user can access within the<br />
authoring portlet for particular library. The permissions set for item types in a library do not<br />
automatically give you access to individual items. They only give you access to specific tasks and<br />
views within the authoring portlet.<br />
Item level:<br />
Item level access controls define the actions that a user can perform on an individual item. For<br />
example, a <strong>Manager</strong> to the Components type has access to the Purge and Unlock actions but, if<br />
that user does not also have <strong>Manager</strong> access to an individual component then the Purge and<br />
Unlock actions will not be enabled when that component is selected.<br />
Related tasks:<br />
“Assigning blog access to users” on page 679<br />
The Portal administrator can assign Editor access to you if you need to create and manage blogs within<br />
the site. If you are given Editor access to a blog, you can create or modify posts in that blog. If you are<br />
given Editor rights to a blog library, you can create and modify blogs and you can create and modify<br />
posts in that blog library. If you have <strong>Manager</strong> rights to a blog, you can create, modify, and delete posts<br />
and delete comments in that blog. If you are given <strong>Manager</strong> rights to a blog library, you can create,<br />
modify, and delete blogs and you can create, modify, and delete posts and delete comments within the<br />
blogs.<br />
“Assigning wiki access to users” on page 683<br />
If you are the administrator, you have <strong>Manager</strong> access and can assign Editor access to other users who<br />
need to create and manage wikis within the site. If you are the owner of a wiki site, you have <strong>Manager</strong><br />
access. As wiki site <strong>Manager</strong>, you can also delete any wiki page or wiki. If you have Editor access, you<br />
can create and edit any wiki site and wiki pages. All wiki editors can modify all pages of a wiki site.<br />
“Defining roles within a library” on page 211<br />
You can define the access of a user or group for a library to determine who has access to a library, and to<br />
define access to the different views within the authoring portlet.<br />
<strong>Web</strong> content management roles<br />
You define the access of a user or group for a library to determine who has access to a library, and to<br />
define access to the different views within the authoring portlet.<br />
532 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 108. Roles<br />
Roles<br />
v User<br />
Rendering and authoring portlet access rights<br />
Users and groups assigned to this role can:<br />
v view items in a website or rendering portlet that they have been assigned at least<br />
user access to.<br />
Tip: The simplest way to assign users to this role is to select any of the default user<br />
groups such as "All Authenticated Portal Users" or "Anonymous Portal User". Users<br />
will still require "user" access to an item before it will be rendered in a website or<br />
rendering portlet.<br />
v Contributor Users and groups assigned to this role can:<br />
v view items in a rendering portlet or servlet-rendered website that they have been<br />
assigned at least user access to.<br />
v<br />
v<br />
v<br />
view libraries the they have been assigned contributor access to in an authoring<br />
portlet.<br />
access the "My Items" and "All Items" views in an authoring portlet for libraries<br />
that they have been assigned contributor access to.<br />
access the item type view within the authoring portlet for item types that they<br />
been assigned at least user access to.<br />
v Editor v view items in a rendering portlet or servlet-rendered website that they have been<br />
assigned at least user access to.<br />
v<br />
v<br />
v<br />
view libraries the they have been assigned contributor access to in an authoring<br />
portlet.<br />
access the "My Items" and "All Items" views in an authoring portlet for libraries<br />
that they have been assigned at least contributor access to.<br />
for library item types that user and groups have been assigned at least editor<br />
access to, editors can access the following actions in the authoring portlet:<br />
– access the item type view<br />
– create a new item<br />
– add/remove links<br />
– apply authoring template<br />
– copy<br />
– delete<br />
– edit<br />
– link to<br />
– move<br />
– restore a version<br />
– edit version labels<br />
Administering 533
Table 108. Roles (continued)<br />
Roles<br />
Rendering and authoring portlet access rights<br />
v <strong>Manager</strong> Users and groups assigned to these roles can:<br />
v view items in a rendering portlet or servlet-rendered website that they have been<br />
assigned at least user access to.<br />
v view libraries the they have been assigned contributor access to in an authoring<br />
portlet.<br />
v access the "My Items" and "All Items" views in an authoring portlet for libraries<br />
that they have been assigned at least contributor access to.<br />
v for library item types that they have been assigned manager access to, managers<br />
can access the all of the actions available to editors and also the following actions<br />
in the authoring portlet:<br />
– edit access settings<br />
– next stage<br />
– purge<br />
– unlock<br />
– edit user profile<br />
v Administrator Users and groups assigned to these roles can:<br />
v view items in a rendering portlet or servlet-rendered website that they have been<br />
assigned at least user access to.<br />
v view libraries the they have been assigned contributor access to in an authoring<br />
portlet.<br />
v access the "My Items" and "All Items" views in an authoring portlet for libraries<br />
that they have been assigned at least contributor access to.<br />
v all actions in the authoring portlet for library item types that they have been<br />
assigned administrator access to.<br />
v<br />
v<br />
v<br />
Security Administrator<br />
Delegator<br />
Privileged User<br />
These roles have no access to <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items.<br />
<strong>Web</strong>Sphere Portal Administrators:<br />
<strong>Web</strong>Sphere Portal Administrators automatically have Administrator access to all item-types.<br />
Additive and subtractive methodology:<br />
You can assign roles to both a whole library, and the item types within a library using either an additive<br />
or subtractive methodology.<br />
For example, with an additive methodology, you apply the "All Authenticated Portal Users" to the<br />
"Contributor" role to the entire library. This will give "All Authenticated Portal Users" access to the library<br />
and any authoring portlets configured to use the library. You then apply Editor, <strong>Manager</strong> or<br />
Administrator roles to specific resource types to grant additional access to specified users or groups.<br />
With a subtractive methodology, you apply the <strong>Manager</strong> or Administrator role to a user or group to the<br />
entire library. You then apply Editor, Contributor or User roles to specific item types and deselect the<br />
inheritance check box. This reduces the access to different item types for specified users or groups.<br />
We recommend that propagation from the web content library is enabled because this will simplify<br />
administrating library access and because disabling propagation will result in access related errors.<br />
All Items view:<br />
534 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
A user who is assigned access to an item can always view that item in the All Items view regardless of<br />
whether they have access to the related item-type view. For example, if a user does not have access to the<br />
presentation template view, but is granted edit access to a presentation template, they can still view, but<br />
not edit, the presentation template from the All items view.<br />
Assigning roles to anonymous or authenticated users<br />
When accessing a website, users login as either anonymous users, or authenticated portal users.<br />
The following pre-defined groups can be assigned roles in a library.<br />
Table 109. pre-defined groups<br />
Group<br />
Anonymous portal user<br />
All Authenticated Portal<br />
Users<br />
Users and User Groups<br />
All Portal User Groups<br />
Details<br />
Select this user to assign a role to anonymous users.<br />
Select this group to assign a role to users that have logged on to your server.<br />
Select this group to assign a role to all users and groups.<br />
Select this group to assign a role to all groups.<br />
Related tasks:<br />
“Defining roles within a library” on page 211<br />
You can define the access of a user or group for a library to determine who has access to a library, and to<br />
define access to the different views within the authoring portlet.<br />
User roles and access<br />
Different users will have a different access to items and functions in your system depending on the role<br />
they have been assigned. Roles can be assigned at the library level, and also assigned on individual<br />
items.<br />
Assigning access to items<br />
There are two methods used to assign roles to access controls on items:<br />
v Selecting users or groups directly in the access section of an item.<br />
v Allowing assigned roles to be inherited from parent items up to and including the library. Access roles<br />
are inherited in the following hierarchies:<br />
– Library/site area/content item<br />
– Library/taxonomy/category<br />
– Library/folder/component<br />
– Library/folder/authoring template<br />
– Library/folder/presentation template<br />
– Library/workflow<br />
– Library/workflow stage<br />
– Library/workflow action<br />
You can stop inheritance at any point in an inheritance hierarchy. For example, you could allow<br />
inheritance down to a site area, but assign access roles manually for each content item under that site<br />
area.<br />
Inheritance from a library is based on the role assigned to the overall library, not on the role assigned<br />
to specific item types. For example, you may not have access to the presentation template view on a<br />
library, but if you inherit the role of editor to a presentation template, you will be able to view and edit<br />
that presentation template from the All Items view.<br />
Inheritance does not apply to draft items.<br />
Administering 535
Note: By default, inheritance is enabled for all roles and items.<br />
Viewing an item's security settings<br />
The following sections are displayed on the security section of each item.<br />
Table 110. Security settings<br />
Section<br />
User Defined<br />
Workflow<br />
Administrator Defined<br />
Inheritance<br />
Details<br />
If the item is not participating in a workflow, the user can edit access under<br />
user-defined.<br />
If an item is participating in a workflow, then the user-defined option does not<br />
appear and the workflow settings are displayed. This cannot be edited.<br />
Workflow-defined access is set in workflow stages.<br />
Published items and workflow defined item security:<br />
v<br />
v<br />
v<br />
If you grant a user editor access to an item in a workflow stage that uses a publish<br />
action, then those users are able to edit the published item directly. No draft is<br />
created. The same is true for administrator defined security when applied to<br />
published items.<br />
If you grant a user manager access to an item in a workflow stage that uses a<br />
publish action, then those users are able to edit and delete the published item<br />
directly. No draft is created. The same is true for administrator defined security<br />
when applied to published items.<br />
If you grant a user approve access to an item in a workflow stage that uses a<br />
publish action, then those users are able to create drafts of the published item.<br />
Administrators can edit user access to an item at any time by changing the<br />
administrator defined settings.<br />
You can also choose to inherit access assigned in the current web content library, or<br />
from an item's parent. Inheritance for all user roles are enabled by default.<br />
How security is set<br />
When a new item is created, the creator is automatically given delete access to the item. Additional user<br />
and group security can be added in the user-defined and system defined settings.<br />
If an item is participating in a workflow, the creator is given delete access to the item only in the first<br />
workflow stage. As the item progresses through a workflow, the item security is determined by the<br />
combined workflow and system defined security.<br />
Table 111. Security matrix<br />
Security level No workflow 1st workflow stage<br />
Additional workflow<br />
stages<br />
User v User defined<br />
v Administrator defined<br />
v Inherited<br />
v<br />
v<br />
Administrator defined<br />
Workflow defined<br />
v<br />
v<br />
Administrator defined<br />
Workflow defined<br />
Contributor v User defined<br />
v Administrator defined<br />
v Inherited<br />
v<br />
v<br />
Administrator defined<br />
Workflow defined or<br />
inherited<br />
v<br />
v<br />
Administrator defined<br />
Workflow defined or<br />
inherited<br />
Editor v User defined<br />
v Administrator defined<br />
v Inherited<br />
v<br />
v<br />
Administrator defined<br />
Workflow defined or<br />
inherited<br />
v<br />
v<br />
Administrator defined<br />
Workflow defined or<br />
inherited<br />
536 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 111. Security matrix (continued)<br />
Security level No workflow 1st workflow stage<br />
Additional workflow<br />
stages<br />
<strong>Manager</strong> v User defined<br />
v<br />
Administrator defined<br />
v<br />
Administrator defined<br />
v<br />
v<br />
Administrator defined<br />
Inherited<br />
v<br />
Workflow defined or<br />
inherited<br />
v<br />
Workflow defined or<br />
inherited<br />
Approve Not applicable. v Workflow defined or<br />
inherited<br />
Administrator<br />
v<br />
Workflow defined or<br />
inherited<br />
If you have been assigned the administrator role to a library, you automatically inherit<br />
all administration access down to the item-level. It cannot be turned off.<br />
Deleting items:<br />
When a new item is created, the creator can also delete the item. If an item is participating in a workflow,<br />
the creator can only delete the item in the first workflow stage.<br />
Assigning access to different types of users or groups<br />
When accessing a website or rendering portlet, users login as either anonymous users, or authenticated<br />
portal users.<br />
The following user and groups can be used to grant access to items.<br />
Table 112. Users and groups<br />
User or group<br />
anonymous portal user<br />
[all users]<br />
[all authenticated portal<br />
users]<br />
[all portal user groups]<br />
[creator]<br />
[authors]<br />
[owners]<br />
Details<br />
Select this user to grant access to anonymous users<br />
Select this group to grant access to all users, anonymous and authenticated.<br />
Select this group to grant access to all authenticated users.<br />
Select this group to grant access to all user groups.<br />
Select this to grant access to the creator of the item.<br />
Select this to grant access to users who have been selected as an "author" of the item.<br />
Select this to grant access to users who have been selected as an "owner" of the item.<br />
The access required to view a rendered item<br />
To view an item on a rendered page, you need the following:<br />
1. You need at least user access to the presentation template used to display the current content item.<br />
2. You need at least user access to every item in the path to the current content item:<br />
v library/site area/content item<br />
3. You need at least user access to every item in the path to any elements or components referenced in<br />
the presentation template:<br />
v library/folder/component<br />
v library/element<br />
v library/site area/element<br />
v library/site area/content item/element<br />
These paths do not need to be the same as the path to the current content item.<br />
Administering 537
4. There must be a valid template map.<br />
The "wcm.path.traversal.security" setting:<br />
Rendered item behavior will vary depending on how you specify the wcm.path.traversal.security<br />
property in the WCM WCMConfigService service. If the property is not specified, the default value is false.<br />
If set to false:<br />
v Menus will display content regardless of whether a user has access to all site areas in the content path.<br />
v Navigators will not display site areas a user does not have access to, but can show content under these<br />
site areas in specific circumstances such as within breadcrumb navigators.<br />
v URLs are only checked for content access, not site area access.<br />
If set to true:<br />
v Menus and navigators will not display content under secure site areas if the user does not have access<br />
to all site areas in the content path.<br />
v Directly accessing content under secure site areas using a URL will fail if the user does not have access<br />
to all site areas in the content path.<br />
Rendering performance will be slower if set to true.<br />
Button access<br />
You assign item-level access by assigning users and groups different roles for each item. The role you<br />
assign determines what actions a user has access to for each item.<br />
Table 113. Item access controls<br />
Actions<br />
Add or move<br />
children<br />
Add or remove child<br />
links<br />
Add or remove<br />
workflows<br />
Apply authoring<br />
template<br />
Approve<br />
Batch-edit access<br />
controls<br />
Item Access<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
<strong>Manager</strong> access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Approver or<br />
administrator.<br />
Editor access or<br />
higher.<br />
Role access to library<br />
resources Library access Item status<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
When first created,<br />
you require manager<br />
access to the item<br />
type in any library.<br />
Once saved, you<br />
require manager<br />
access to both the<br />
item and item type in<br />
the library the item is<br />
stored in.<br />
Contributor access or<br />
higher to authoring<br />
templates.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
538 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 113. Item access controls (continued)<br />
Actions<br />
Cancel draft<br />
Copy<br />
Create draft<br />
Delete<br />
Edit<br />
Link to<br />
Manage elements<br />
Move<br />
Item Access<br />
<strong>Manager</strong> access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
<strong>Manager</strong> access or<br />
higher, or approver<br />
access.<br />
Editor access for<br />
items you have<br />
created, or manager<br />
access or higher.<br />
Editor access or<br />
higher.<br />
Contributor access or<br />
higher, or approver<br />
access.<br />
Editor access or<br />
higher.<br />
Editor access or<br />
higher.<br />
Role access to library<br />
resources Library access Item status<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Editor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Next Stage Approver access. Contributor access or<br />
higher to the item<br />
type.<br />
Preview item and<br />
view rendered item<br />
User access or higher,<br />
or approver access.<br />
Not required.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Process now Administrator access Not required. Contributor access or<br />
higher.<br />
Purge<br />
Read<br />
Reference<br />
Reject<br />
Restart workflow<br />
Restore<br />
<strong>Manager</strong> access or<br />
higher.<br />
User access or higher,<br />
or approver access.<br />
User access or higher,<br />
or approver access.<br />
Approver or<br />
administrator access.<br />
<strong>Manager</strong> access or<br />
higher, or approver<br />
access.<br />
Editor access or<br />
higher.<br />
Not required.<br />
Not required.<br />
Not required.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Editor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher to the item<br />
type.<br />
<strong>Manager</strong> access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Only published or<br />
expired items.<br />
Only published or<br />
expired items.<br />
Administering 539
Table 113. Item access controls (continued)<br />
Actions<br />
Save version<br />
Item Access<br />
Editor access or<br />
higher.<br />
Role access to library<br />
resources Library access Item status<br />
Contributor access or<br />
higher to the item<br />
type.<br />
Contributor access or<br />
higher.<br />
Show hidden fields Administrator access Not required. Contributor access or<br />
higher.<br />
System security Administrator access Not required. Contributor access or<br />
higher.<br />
Unlock<br />
View references<br />
View versions<br />
<strong>Manager</strong> access or<br />
higher.<br />
User access or higher,<br />
or approver access.<br />
User access or higher,<br />
or approver access.<br />
Not required.<br />
Not required.<br />
Not required.<br />
<strong>Manager</strong> access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Contributor access or<br />
higher.<br />
Creating new items:<br />
The ability to create new items is set at the library level, not item level. You must have at least<br />
contributor access to a library and editor access to an item-type to create a new item. If you have access<br />
to create any item type, you can also create folders and projects.<br />
Button access on content items:<br />
You can choose to hide selected buttons on content item forms when creating an authoring template. This<br />
means a user may not have access to all buttons on a content item form regardless of their role.<br />
Administrators can choose to display hidden buttons if required.<br />
Profiling versus security:<br />
Using profiling to personalize a site is different from using security to limit what items a user can access.<br />
In a profile based personalized site, although a user may not be able to access all the pages using<br />
personalized menus, they may still be able to access other pages by using navigators, or by searching for<br />
content. In a secured site, a user can only view items that they have been granted access to.<br />
Syndication concepts<br />
Syndication is used to synchronize web content data between a web content library on one server to a<br />
web content library on another server.<br />
Related concepts:<br />
“Configuring syndication” on page 79<br />
Syndication is used to synchronize web content between servers. You can configure when syndication is<br />
run, and how often it is run.<br />
“Working with syndicators and subscribers” on page 549<br />
Syndication is used to transport data from one instance of <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to another.<br />
Syndication overview<br />
Syndication is the method used by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to replicate data from a web content<br />
library on one server to a web content library on another server.<br />
To enable syndication, a syndicator and a subscriber must be defined:<br />
540 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v The syndicator defines a connection to the subscriber and indicates which libraries are to be replicated<br />
to the subscriber.<br />
v The subscriber defines a connection to the syndicator and receives the data replicated from the libraries<br />
specified by the syndicator.<br />
The relationship between a syndicator and a subscriber can be either a one-way or two-way relationship.<br />
Example: One-way syndication<br />
Example: Two-way syndication<br />
Note:<br />
v When enabling two-way syndication, you must first establish the syndication relationship from<br />
Application 1 to Application 2. Once the libraries have been replicated to Application 2, you can set up<br />
the syndication relationship between Application 2 and Application 1.<br />
v Although it is possible to set up more than one syndication relationship between the same two<br />
applications, there is no reason to do so. The additional syndication relationships are not required<br />
because once a syndication relationship has been established between two applications, no further<br />
relationships are established.<br />
Syndicators can syndicate libraries to multiple subscribers, and subscribers can subscribe to libraries from<br />
multiple syndicators.<br />
Administering 541
Example: Multiple syndication relationships<br />
Syndication methods<br />
There are three syndication methods available when configuring a syndication relationship:<br />
Live items:<br />
Live item syndication is mostly used when syndicating to a staging or delivery server. The<br />
following items are syndicated:<br />
v Published<br />
v Expired<br />
Draft items, projects and items in a project are not syndicated.<br />
Live and projects:<br />
The advantage of using "Live and projects" syndication is to gradually syndicate projects to a<br />
staging or delivery server rather that waiting to syndicate all the items in a project after they all<br />
achieve a published state. The following items are syndicated:<br />
v Published<br />
v Expired<br />
v Projects<br />
v Draft items in a project<br />
Draft items outside of projects are not syndicated.<br />
All items:<br />
All item syndication is mostly used when syndicating between servers within an authoring<br />
environment. The following items are syndicated:<br />
v Published<br />
v Expired<br />
v Projects<br />
v Draft items in a project<br />
v Other draft items<br />
v Versions<br />
v Deleted items<br />
542 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Switching from "all item" syndication to "live item" syndication: When you switch from "all item"<br />
syndication to "live and projects" syndication or "live item" syndication, any drafts previously syndicated<br />
to the subscriber are not removed.<br />
Moving draft items between libraries: If you move a draft item from a library using "all item"<br />
syndication to a library using "live item" syndication, the draft item will also be moved on the subscriber<br />
because the action occurred on the library using "all item" syndication. This behavior allows for some<br />
draft items to be included in a subscriber library even though "live item" syndication is being used.<br />
Version consistency<br />
All servers participating in syndication must be of the same version for syndication to work as expected<br />
and to be in a supported state. Syndication is not supported between versions.<br />
For example:<br />
v Server A with version 7.0.0.0 can be syndicated to Server B with version 7.0.0.1 installed.<br />
v Server A with version 7.0.0.0 can be syndicated to Server B with version 7.0.1 installed.<br />
v Server A with version 7.0.1 can be syndicated to Server B with version 7.0.0.0 installed.<br />
v Syndicating Server A with version 6.1.5 to Server B with version 7.0.0.0 installed is not supported.<br />
v Syndicating Server A with version 7.0.0.0 to Server B with version 6.1.5 installed is not supported.<br />
It is also recommended to keep your environments consistent across all servers in your system. For<br />
example, the same version of <strong>Web</strong>Sphere Application Server must be used on all servers in your system<br />
to ensure successful syndication.<br />
<strong>Web</strong> content libraries and syndication relationships<br />
All the items you work with as part of your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> authoring environment (templates,<br />
components, content items, and so on) are stored in web content libraries. When you syndicate data<br />
between applications, you do so on a library by library basis. As part of the definition of a syndicator or<br />
subscriber, you specify which web content libraries are to be included during syndication.<br />
Because syndication is performed by library, it is important to consider how to organize your content<br />
between libraries to support your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> environment. For example, suppose you are<br />
using a single authoring server to develop content for two delivery servers, an intranet site providing<br />
Human Resources information intended for internal employees of a company and an external Internet<br />
site providing marketing material intended for customers and others outside the company. A basic<br />
approach to support this environment would be to use two web content libraries, one for content specific<br />
to each site. You would then set up two syndication relationships with each going from the authoring<br />
server to the appropriate delivery server.<br />
For easier management, you might divide your content further into three libraries, where one library<br />
contains data common to both the intranet and Internet sites and the other two libraries contain<br />
site-specific content. The following example demonstrates this configuration, with the addition of two<br />
other authoring portlets so that the content of each library is maintained by a different authoring portlet.<br />
Administering 543
In this case you might set up several syndication relationships between the authoring server and the<br />
delivery servers:<br />
v The Common Library syndicates to the intranet site (Human Resources Portal).<br />
v The Common Library syndicates to the Internet site (Marketing Portal).<br />
v The HR Library syndicates to the intranet site (Human Resources Portal).<br />
v The Marketing Library syndicates to the Internet site (Marketing Portal).<br />
Note: <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> provides flexibility in how you set up your syndication relationships. If you<br />
need to syndicate multiple libraries from one server to another, you can choose to use one syndication<br />
relationship that includes all the libraries, or you can choose to use separate syndication relationships for<br />
each library, or even a combination of both approaches, depending on how many libraries you are<br />
syndicating. The best approach for your situation depends not only on how many libraries are involved<br />
but also on how the libraries are related to one another. For example, you use a single syndication<br />
relationship for libraries that reference each other, as when one library contains design items like<br />
templates that are used by content in the other library. However, if the libraries are independent of one<br />
another and you think you might want to suspend syndication of one library but not the other, separate<br />
syndication relationships for each library can provide that.<br />
Important:<br />
v First-time syndication to an existing library is not supported. If you attempt to syndicate a library to a<br />
subscriber that already has a library with the same name, an error results.<br />
v Information about a Library is only syndicated the first time syndication occurs and not on subsequent<br />
updates and rebuilds. If a library is renamed or library user access is changed, this information is not<br />
syndicated to the Subscriber. If you change the name of a library or change user access to a library, you<br />
must manually make the same changes to any subscriber libraries if you want the same settings on all<br />
your syndicated libraries.<br />
544 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v If content from one library (Library A) uses an item from another library (Library B), you must include<br />
both libraries in the syndicator to ensure that all items are syndicated successfully. If you only include<br />
Library A in the syndicator, any items in Library A that reference items in Library B are not syndicated,<br />
and syndication errors are generated.<br />
v If you add a new library to a syndicator after the initial syndication, you click Update to force the new<br />
library to be syndicated immediately.<br />
Access control when syndicating<br />
Although syndication can be used to keep data current between libraries on different servers, access<br />
control settings for the libraries are not included as part of syndication. Depending on how your<br />
environment is set up and what policies you have in place for library access, there are additional<br />
considerations for access control when using syndication.<br />
User consistency<br />
For user level access to remain consistent between the syndicator and subscriber, both servers<br />
must be configured to use the same user repository. If different user repositories are used,<br />
syndication will occur but with there will be errors in the subscriber log indicating missing users.<br />
If access controls are determined by only using virtual users and groups, such as "All<br />
authenticated" and "Anonymous Users", then there is no need to user the same user repository on<br />
the syndicator and subscriber.<br />
First time syndication on a new library<br />
Because library access control settings are not syndicated, you must manually set access<br />
permissions on the subscriber's library when syndicating for the first time. If the library does not<br />
exist on the subscriber, it will be created during syndication. By default, no access control settings<br />
are specified on the new library, so you must set them manually before users can access content<br />
in the new library. The settings on the subscriber library do not have to match those on the<br />
syndicator library. This allows you to specify different levels of access for users and groups on<br />
the subscriber.<br />
Related concepts:<br />
“Syndication tuning”<br />
While syndication is a vital part of keeping your web content current, the same syndication strategy is<br />
not appropriate for every environment. Depending on how you have deployed <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>, you can use different syndication strategies to balance the currency of your content with the<br />
performance your environment requires.<br />
“Working with syndicators and subscribers” on page 549<br />
Syndication is used to transport data from one instance of <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to another.<br />
Syndication tuning<br />
While syndication is a vital part of keeping your web content current, the same syndication strategy is<br />
not appropriate for every environment. Depending on how you have deployed <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>, you can use different syndication strategies to balance the currency of your content with the<br />
performance your environment requires.<br />
There are several different means to manage how and when content is replicated to other servers. It is<br />
important to note that, as with any process, syndication entails a performance cost, and this should be<br />
taken into account when specifying not only the frequency of syndication but also the number of<br />
syndication relationships for any given server.<br />
Syndication interval<br />
The syndication interval controls the frequency of syndication while automatic syndication is enabled and<br />
can be used by administrators to put a cap on how often syndication occurs. Because up-to-date<br />
information is important to any web content environment, automatic syndication is enabled by default<br />
Administering 545
when <strong>IBM</strong> <strong>Web</strong>Sphere Portal is installed. While the default setting for the syndication interval ensures<br />
maximum currency, you can choose to adjust the value accordingly if the currency demands of your<br />
environment do not call for the shortest interval.<br />
Here are some general guidelines for setting the syndication interval.<br />
Table 114. Syndication interval<br />
Interval setting<br />
Recommended environments<br />
10 minutes – 2 hours Staging servers to delivery servers.<br />
30 seconds – 10 minutes Any environment that requires frequent replication, such<br />
as an authoring server to a staging server, a test server,<br />
or distributed authoring server.<br />
When increasing the syndication interval for<br />
environments where authoring servers are involved, be<br />
mindful that timely replication is often essential,<br />
particularly in collaborative authoring environments<br />
where multiple authors on different servers might be<br />
working on the same content.<br />
Syndication types<br />
Live items:<br />
Live item syndication is mostly used when syndicating to a staging or delivery server. The<br />
following items are syndicated:<br />
v Published<br />
v Expired<br />
Draft items, projects and items in a project are not syndicated.<br />
Live and projects:<br />
The advantage of using "Live and projects" syndication is to gradually syndicate projects to a<br />
staging or delivery server rather that waiting to syndicate all the items in a project after they all<br />
achieve a published state. The following items are syndicated:<br />
v Published<br />
v Expired<br />
v Projects<br />
v Draft items in a project<br />
Draft items outside of projects are not syndicated.<br />
All items:<br />
All item syndication is mostly used when syndicating between servers within an authoring<br />
environment. The following items are syndicated:<br />
v Published<br />
v Expired<br />
v Projects<br />
v Draft items in a project<br />
v Other draft items<br />
v Versions<br />
v Deleted items<br />
546 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Manual syndication<br />
It is not necessary to wait for the syndication interval to elapse in order to perform syndication. Manual<br />
syndication can be used at any time to cause syndication to occur immediately. There are different ways<br />
to take advantage of manual syndication:<br />
v You can use manual syndication in conjunction with the syndication interval to provide flexibility. For<br />
example, if you are using an increased syndication interval to optimize performance between servers,<br />
you can still perform manual syndication when you need to update content without waiting for the<br />
next syndication.<br />
v If you require complete control of when syndication occurs, you can use manual syndication as the<br />
only means of performing syndication. For this approach, you must disable automatic syndication so<br />
that the syndication interval setting is ignored.<br />
Publish and expire dates<br />
Because the syndication interval is not based on a scheduled time of the day, it is not suitable for setting<br />
up syndication to run during off-peak times. The publish date and expire date are the preferred methods<br />
for doing this.<br />
The publish date for each content item specifies the date and time when the content should be published<br />
to a website. After a content item is approved and the publish date is reached, the content item is queued<br />
for syndication according to the next syndication interval. By using the publish date, you can delay the<br />
publishing of content, effectively delaying its syndication. For example, if you are using a short<br />
syndication interval to ensure timely replication of most content, you can delay the syndication of less<br />
urgent content through the publish date for that content.<br />
The expire date specifies the date and time when the content item should be removed from a website. As<br />
with the publish date, you can use the expire date to cause the syndication activity associated with<br />
removing the content to occur at a time when other syndication activity is less intensive.<br />
For more information on the publish and expire dates in the workflow process, refer to “Item status” on<br />
page 475.<br />
Related concepts:<br />
“Syndication overview” on page 540<br />
Syndication is the method used by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to replicate data from a web content<br />
library on one server to a web content library on another server.<br />
Syndication troubleshooting<br />
If you encounter issues when syndicating, there are some common methods available to troubleshoot<br />
these issues.<br />
Common issues<br />
Table 115. Common issues<br />
Issue<br />
Unable to reach host<br />
Syndicator becomes<br />
unresponsive during<br />
syndication<br />
Solution<br />
This is a common reason why syndication does not work. The URL for the syndicator<br />
or the subscriber may not be valid. You may need to use the IP address rather than<br />
the domain name.<br />
Syndication can require a large amount of resources to run successfully. Consequently,<br />
if your server is performing other tasks at the same time as syndication, the process<br />
of syndication may slow or stop altogether. You should schedule your syndication to<br />
occur at times when the server load is at its lowest.<br />
Administering 547
Table 115. Common issues (continued)<br />
Issue<br />
Solution<br />
Syndicator status hangs on<br />
"Pending", or "Pending,<br />
Active"<br />
If you are attempting to update or rebuild a syndicated library containing large<br />
number of items, the syndicator status might hang on "Pending", or "Pending,<br />
Active". This can occur because the syndicator keeps retrying to syndicate when some<br />
items fail to syndicate to the subscriber, or when a system timeout occurs on the<br />
subscriber when saving data.<br />
Improving the performance of your database can help avoid these situations. For<br />
example, two of the database attributes that DB2 relies upon to perform optimally are<br />
the database catalog statistics and the physical organization of the data in the tables.<br />
Catalog statistics should be recomputed periodically during the life of the database,<br />
particularly after periods of heavy data modifications (inserts, updates, and deletes)<br />
such as a population phase. In order to fix this, you should run "Runstats" on the JCR<br />
database before and after syndication. The DB2 runstats command is used to count<br />
and record the statistical details about tables, indexes and columns. See Database<br />
performance for information on using the "Runstats" task.<br />
Time-outs during<br />
syndication<br />
Due to the heavy load of computing these statistics, it is recommend that this<br />
maintenance occurs during off hours, periods of low demand, or when the portal is<br />
off-line.<br />
Time-outs during syndication are often caused by the failure of large items to be<br />
saved. Increasing the total transaction lifetime timeout setting of your <strong>IBM</strong><br />
<strong>Web</strong>Sphere Portal server can address this issue. The total transaction lifetime<br />
timeout setting of your subscriber should be at least the same as the syndicator.<br />
The total transaction lifetime timeout setting is changed using the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server administrative console.<br />
Go to Servers > Server Types > <strong>Web</strong>Sphere application servers ><br />
portal_server->Container Services > Transaction Service.<br />
Subscriber becomes<br />
unresponsive during<br />
syndication<br />
See the <strong>Web</strong>Sphere Application Server information center for more information.<br />
If you are attempting to syndicate a library containing more than 10000 items, the<br />
subscriber machine might become unresponsive during the syndication operation.<br />
This can occur due to an insufficient Java heap size setting on the subscriber.<br />
To update the maximum Java heap size used by the portal application server on the<br />
subscriber machine, complete the following steps:<br />
1. In the administrative console for <strong>Web</strong>Sphere Application Server, click System<br />
administration > Deployment manager > Java and Process Management ><br />
Process Definition > Java Virtual Machine.<br />
2. Update the value in the Maximum Heap Size field. A value of at least 1024 MB is<br />
recommended.<br />
3. Click OK, and then save your changes.<br />
In addition, ensure that you have at least as much swap space allocated on the<br />
subscriber machine as you have physical memory.<br />
Other solutions<br />
Table 116. Other solutions<br />
Option<br />
Resetting the web content<br />
event log.<br />
Details<br />
To assist in the troubleshooting process you can reset the web content event log. See<br />
“Resetting the web content event log” on page 77 for further information.<br />
548 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 116. Other solutions (continued)<br />
Option<br />
Enabling the<br />
"deployment.enableReport"<br />
setting on the subscriber.<br />
Details<br />
You can update the WCM WCMConfigService service and specify the<br />
deployment.enableReport property with a value of true. This enables high level<br />
reporting of syndication to the SystemOut log on the subscriber server. It provides a<br />
summary of items that were processed, and which items failed syndication to help<br />
you troubleshoot syndication issues.<br />
Working with syndicators and subscribers<br />
Syndication is used to transport data from one instance of <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to another.<br />
Related concepts:<br />
“Configuring syndication” on page 79<br />
Syndication is used to synchronize web content between servers. You can configure when syndication is<br />
run, and how often it is run.<br />
“Syndication concepts” on page 540<br />
Syndication is used to synchronize web content data between a web content library on one server to a<br />
web content library on another server.<br />
“Syndication overview” on page 540<br />
Syndication is the method used by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to replicate data from a web content<br />
library on one server to a web content library on another server.<br />
Creating a syndication relationship<br />
To set up syndication between libraries on two <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> applications, establish a<br />
relationship between a syndicator on the server containing the data to be replicated and a subscriber on<br />
the server that receives the replicated data.<br />
Important: If you intend to syndicate a library that contains more than 10000 items, update the<br />
maximum Java heap size used by the portal application server on the subscriber machine:<br />
1. In the administrative console for <strong>IBM</strong> <strong>Web</strong>Sphere Application Server, navigate to the Java Virtual<br />
Machine settings.<br />
Standalone server:<br />
Servers > Server Types > <strong>Web</strong>Sphere application servers > <strong>Web</strong>Sphere_Portal > Java and<br />
Process Management > Process definition > Java Virtual Machine<br />
Clustered server:<br />
System administration > Deployment manager > Java and Process Management > Process<br />
Definition > Java Virtual Machine<br />
2. Update the value in the Maximum Heap Size field. A value of at least 1024 MB is recommended.<br />
3. Click OK, and then save your changes.<br />
In addition, ensure that you have at least as much swap space allocated on the subscriber machine as you<br />
have physical memory.<br />
To set up a syndication relationship, complete the following steps:<br />
1. Ensure both the subscriber and syndicator are running and that they can access each other over a<br />
network.<br />
2. On your subscriber machine, log in to <strong>IBM</strong> <strong>Web</strong>Sphere Portal.<br />
3. Go to Administration > Access > Credential Vault and create a credential vault slot to allow you to<br />
access the syndicator<br />
4. Go to Administration > Portal <strong>Content</strong> > Subscribers.<br />
Administering 549
5. Click Subscribe Now.<br />
6. Enter the syndicator URL in the form of http://HostName:HostPort/WcmContextRoot. For example:<br />
http://authoring:10039/wps/wcm<br />
7. Enter a name for the syndicator item. This name is used as the name of the syndicator item created<br />
on the syndicator server, so enter a name that helps identify the syndication relationship you are<br />
creating.<br />
8. Enter a name for the subscriber item. This name is used as the name of the subscriber item created<br />
on the subscriber server, so enter a name that helps identify the syndication relationship you are<br />
creating.<br />
9. Select the credential vault slot you created previously.<br />
10. Click Next<br />
11. Select the libraries you want to subscribe to.<br />
a. Click Add Libraries to select a library to syndicate and the syndication type:<br />
Live items:<br />
Live item syndication is mostly used when syndicating to a staging or delivery server.<br />
The following items are syndicated:<br />
v Published<br />
v Expired<br />
Draft items, projects and items in a project are not syndicated.<br />
Live and projects:<br />
The advantage of using "Live and projects" syndication is to gradually syndicate projects<br />
to a staging or delivery server rather that waiting to syndicate all the items in a project<br />
after they all achieve a published state. The following items are syndicated:<br />
v Published<br />
v Expired<br />
v Projects<br />
v Draft items in a project<br />
Draft items outside of projects are not syndicated.<br />
All items:<br />
All item syndication is mostly used when syndicating between servers within an<br />
authoring environment. The following items are syndicated:<br />
v Published<br />
v Expired<br />
v Projects<br />
v Draft items in a project<br />
v Other draft items<br />
v Versions<br />
v Deleted items<br />
b. Select libraries from the current list and click Remove Libraries to remove a library from the list<br />
of syndicated libraries.<br />
12. Click Finish.<br />
13. To begin syndication, click either Update Subscriber or Rebuild Subscriber button.<br />
Important:<br />
v You can only syndicate between servers running the same version. You cannot syndicate between<br />
versions. For example:<br />
– you can syndicate between versions 7.0.0.0 and 7.0.0.1<br />
550 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
– you cannot syndicate between versions 6.1.5 and 7.0.0.0<br />
v First-time syndication to an existing library is not supported. If you attempt to syndicate a library to a<br />
subscriber that already has a library with the same name, an error results.<br />
v Information about a Library is only syndicated the first time syndication occurs and not on subsequent<br />
updates and rebuilds. If a library is renamed or library user access is changed, this information is not<br />
syndicated to the Subscriber.<br />
v If you change the name of a library or change user access to a library, you must manually make the<br />
same changes to any subscriber libraries if you want the same settings on all your syndicated libraries.<br />
v If content from one library (Library A) uses an item from another library (Library B), you must include<br />
both libraries in the syndicator to ensure that all items are syndicated successfully.<br />
v If you only include Library A in the syndicator, any items in Library A that reference items in Library<br />
B are not syndicated, and syndication errors are generated.<br />
v If you add a new library to a syndicator after the initial syndication you must click Update to force the<br />
new library to be syndicated immediately.<br />
v If you are creating a two-way syndication relationship, you must use a consistent syndication strategy.<br />
For example, if syndicating "All items", then both syndication relationships must be syndicating "All<br />
items".<br />
Editing a Syndicator<br />
The syndicator view is used to enter details of the server subscribing to the syndicator, and display<br />
subscription and syndication information.<br />
To edit a syndicator go to Administration > Portal <strong>Content</strong> > Syndicators and click the edit icon of the<br />
syndicator you want to edit.<br />
Table 117. Syndicator fields<br />
Field<br />
Syndicator Name and<br />
Description<br />
Subscriber Name, ID and<br />
URL<br />
Details<br />
These fields identify the syndicator.<br />
These fields identify the subscriber.<br />
Administering 551
Table 117. Syndicator fields (continued)<br />
Field<br />
Details<br />
Libraries<br />
This section displays a list of libraries that are included in this syndication<br />
relationship.<br />
v Click Add Libraries to select a library to syndicate and the syndication type:<br />
Enabled<br />
v<br />
Live items:<br />
Live item syndication is mostly used when syndicating to a staging or<br />
delivery server. The following items are syndicated:<br />
– Published<br />
– Expired<br />
Draft items, projects and items in a project are not syndicated.<br />
Live and projects:<br />
The advantage of using "Live and projects" syndication is to gradually<br />
syndicate projects to a staging or delivery server rather that waiting to<br />
syndicate all the items in a project after they all achieve a published state.<br />
The following items are syndicated:<br />
– Published<br />
– Expired<br />
– Projects<br />
– Draft items in a project<br />
Draft items outside of projects are not syndicated.<br />
All items:<br />
All item syndication is mostly used when syndicating between servers<br />
within an authoring environment. The following items are syndicated:<br />
– Published<br />
– Expired<br />
– Projects<br />
– Draft items in a project<br />
– Other draft items<br />
– Versions<br />
– Deleted items<br />
Select libraries from the current list and click Remove Libraries to remove a library<br />
from the list of syndicated libraries.<br />
This indicates whether syndication is currently enabled or not.<br />
Editing a subscriber<br />
This subscriber view is used to enter details of the syndicator that is being subscribed to, and display<br />
subscription and syndication information.<br />
To edit a subscriber go to Administration > Portal <strong>Content</strong> > Subscribers and click the edit icon of the<br />
subscriber you want to edit.<br />
Table 118. Subscriber fields<br />
Field<br />
Subscriber Name and<br />
Description<br />
Syndicator Name, ID and<br />
URL<br />
Details<br />
These fields identify the subscriber.<br />
These fields identify the syndicator.<br />
552 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 118. Subscriber fields (continued)<br />
Field<br />
Details<br />
Current State<br />
The current state of the subscriber is displayed here. If syndication is working, both<br />
the syndicator and subscriber should have the same New State.<br />
Note: The apparent difference between a syndicator's and subscriber's current state<br />
does not indicate a degree of success or failure. They are either different or the same.<br />
Enabled<br />
This indicates whether syndication is currently enabled or not.<br />
Manually syndicating items<br />
Although syndication is configured to run automatically by default, from time to time you may need to<br />
manually update syndication.<br />
There are two methods you can use to manually update a syndication relationship:<br />
Update<br />
If you update a syndication relationship, only items that have been updated since the last<br />
syndication is syndicated.<br />
Rebuild<br />
If you rebuild a syndication relationship, all items are processed during syndication. This can take<br />
a long time if you are syndication many items.<br />
1. To update a syndication relationship:<br />
a. Go to Administration > Portal <strong>Content</strong>.<br />
b. Go to either the syndicator or subscriber views.<br />
c. Select either a syndicator or subscriber.<br />
d. Click .<br />
2. To rebuild a syndication relationship:<br />
a. Go to Administration > Portal <strong>Content</strong>.<br />
b. Go to either the syndicator or subscriber views.<br />
c. Select either a syndicator or subscriber.<br />
d. Click .<br />
Working with pending items<br />
After you set up a syndication relationship, you can monitor pending items on a syndicator. Pending<br />
items are items that have been updated on the syndicator since the last syndication occurred.<br />
1. Logon to your syndicator as an administrator.<br />
2. Go to Administration>Portal <strong>Content</strong>>Syndicators.<br />
3. To review a list of pending items for a syndicator, click .<br />
Working with failed items<br />
From time to time items will fail to syndicate. You use the failed items view to review a list of failed<br />
items and then run syndication again once you have fixed the issue.<br />
1. Logon to your syndicator as an administrator.<br />
2. Go to Administration>Portal <strong>Content</strong>>Syndicators.<br />
3. The number of failed items for a syndicator are displayed in the Failed Items column. Click on the<br />
number of failed items to open the Failed Items view.<br />
Administering 553
4. Each failed item for the selected syndicator is displayed in the Failed Items view. The reason for the<br />
failure is displayed against each failed item along with a message catalog code. Look up the code in<br />
the message catalog and take the appropriate action to fix the issue. You can then try to syndicate the<br />
failed item again.<br />
Monitoring syndication<br />
After you set up a syndication relationship, you can monitor the progress of the data replication between<br />
syndicators and subscribers for details such as whether syndication was successful, when it occurred, and<br />
how many changes were included.<br />
Syndicator status<br />
The Syndicator Status View can be accessed by clicking the Latest Update details in the syndicators list.<br />
The Syndicator Status View displays details of the syndicator, and display subscription and syndication<br />
information.<br />
Table 119. Syndicator fields<br />
Field<br />
Syndicator details<br />
Subscriber details<br />
Enabled<br />
Type<br />
Started and Finished<br />
Result<br />
Detail<br />
Old State and New State<br />
Updates Summary<br />
Updates Details<br />
Details<br />
The syndicator ID, name, description and URL are displayed in the syndicator status<br />
view.<br />
The subscriber ID, name, and URL are displayed in the syndicator status view.<br />
This indicates whether syndication is currently enabled or not.<br />
This displays the current update type:<br />
Part:<br />
Full:<br />
Only items requiring updates are syndicated.<br />
All items are syndicated.<br />
The time that syndication was started and finished are displayed here.<br />
The result of syndication, either success or fail, is displayed here. If syndication has<br />
failed, a description of why it failed is displayed. Further information is displayed in<br />
the detail field. If successful, there may also be item errors.<br />
Displays a detailed description of the syndication result.<br />
The old and new syndicator states are displayed here. If syndication is working, both<br />
the syndicator and subscriber should have the same New State.<br />
Note: The apparent difference between a syndicator's and subscriber's current state<br />
does not indicate a degree of success or failure. They are either different or the same.<br />
This indicates the number of items that have been updated. This can either mean that<br />
a new item has been added, or an existing item has been updated.<br />
This section provides a more detailed summary of the changes made after syndication<br />
has completed.<br />
Subscriber status<br />
The Subscriber Status View can be accessed by clicking the Latest Update details in the subscribers list.<br />
The Subscriber Status View displays details of the server subscribing to the syndicator, and display<br />
subscription and syndication information.<br />
Table 120. Subscriber fields<br />
Field<br />
Subscriber details<br />
Syndicator details<br />
Enabled<br />
Details<br />
The subscriber ID, name, description and URL are displayed in the syndicator status<br />
view.<br />
The syndicator ID, name, and URL are displayed in the syndicator status view.<br />
This indicates whether syndication is currently enabled or not.<br />
554 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 120. Subscriber fields (continued)<br />
Field<br />
Details<br />
Type<br />
This displays the current update type:<br />
Started and Finished<br />
Result<br />
Detail<br />
Old State and New State<br />
Updates Summary<br />
Updates Details<br />
Part:<br />
Full:<br />
Only items requiring updates are syndicated.<br />
All items are syndicated.<br />
The time that syndication was started and finished are displayed here.<br />
The result of syndication, either success or fail, is displayed here. If syndication has<br />
failed, a description of why it failed is displayed. Further information is displayed in<br />
the detail field. If successful, there may also be item errors.<br />
Displays a detailed description of the syndication result.<br />
The old and new subscriber states are displayed here. If syndication is working, both<br />
the syndicator and subscriber should have the same New State.<br />
Note: The apparent difference between a syndicator's and subscriber's current state<br />
does not indicate a degree of success or failure. They are either different or the same.<br />
This indicates the number of items that have been updated. This can either mean that<br />
a new item has been added, or an existing item has been updated.<br />
This section provides a more detailed summary of the changes made after syndication<br />
has completed.<br />
<strong>Web</strong> content feed management<br />
To access a feed you have created on your source server, you must create a feed configuration.<br />
Creating a feed configuration<br />
To manage your web content feeds you need to create a feed configuration.<br />
1. Go to Administration > Portal <strong>Content</strong> > Feed Configurations.<br />
2. Click New.<br />
3. Type a name for the feed configuration.<br />
4. Type the URL to the feed.<br />
Note: If the feed file name contains spaces, + should be used to replace the space in the URL. For<br />
example, if the feed file is "content feed.xml" then the URL is entered as: http://server:port/wps/<br />
wcm/wci_dev/content+feed.xml<br />
Note: If the URL contains non-ascii charactors, the non-ascii characters must be encoded. For<br />
example: http://server:port/wps/wcm/%E4%B8%AD%E6%96%87/%E7%BB%84%E4%BB%B6.xml<br />
5. Select an appropriate Credential Slot ID for the feed.<br />
6. Select the web content library where the content should be stored.<br />
7. Select an appropriate Credential Slot ID to use with the selected web content library.<br />
8. Select whether to pass the handshake data in the feed or HTTP headers:<br />
In the HTTP Headers:<br />
The handshake data is exchanged using standard HTTP protocol header fields. This is the<br />
default and preferred method.<br />
Requests from the Consumer contain:<br />
v If-Modified-Since : {last-modified_value}<br />
v If-None-Match: {etag_value}<br />
Responses from the producer contain:<br />
Administering 555
v ETag: {etag_value}<br />
v Last-Modified: {last-modified_value}<br />
In the Feed:<br />
The feed producer puts the information in the feed and the consumer returns the values via<br />
the query string.<br />
Each time the consumer makes a request for the feed URL, the following query string is<br />
appended:<br />
v etag={etag_value}&lastMod={last-modified_value}<br />
Feeds sent back from the producer contain the following channel-level elements:<br />
v {last-modified_value}<br />
v {etag_value}<br />
9. Select whether to check the publication date or not. If selected, web content items that have the same<br />
publish date as the feed source will not be processed.<br />
10. Select whether to use an XSLT style sheet or not.<br />
a. If selected, type the path to the XSL file relative to the /config/xslt directory in the feed Service<br />
application.<br />
11. Click either Save to save the configuration without consuming the feed, or Save and Consume to do<br />
both.<br />
Creating a feed job<br />
You use a feed job to manage a group of feed configurations and apply a schedule to them.<br />
1. Go to Administration > Portal <strong>Content</strong> > Feed Jobs.<br />
2. Click New.<br />
3. Type a name for the feed job.<br />
4. Define the job schedule by defining the period between running the feed job.<br />
a. To suspend a schedule click Suspend Schedule.<br />
b. To resume suspended schedule click Resume Schedule.<br />
5. Select the feed configurations you want to include in the feed job.<br />
6. Click Save to save the feed job.<br />
Working with feeds<br />
After setting up your feed configurations and feed jobs you can perform various tasks to manage your<br />
feeds.<br />
v To work with individual feed configurations, go to Administration > Portal <strong>Content</strong> > Feed<br />
Configurations:<br />
1. To create a new feed configuration, click New.<br />
2. To manually consume a feed, select a feed configuration and click Consume.<br />
3. To delete a feed configuration, select a feed configuration and click Delete.<br />
v To work with a feed job, go to Administration > Portal <strong>Content</strong> > Feed Jobs.<br />
1. To create a new feed job, click New.<br />
2. To stop feed jobs, select the feed jobs you want to stop and click Stop Job. This will also reset any<br />
feed jobs that may have stopped running correctly.<br />
3. To immediately start a job regardless of when the next scheduled job start is, select the feed jobs<br />
you want to start and click Start Job.<br />
4. To suspend job schedules, select the feed jobs you want to suspend and click Schedule > Suspend.<br />
5. To resume suspended job schedules, select the feed jobs you want to resume and click Schedule ><br />
Resume.<br />
556 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
6. To delete feed jobs, select the feed jobs you want to delete and click Delete.<br />
Administering 557
558 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Maintaining web content<br />
You use these tools and features to ensure the efficient operation of your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system.<br />
Using the web content member fixer task<br />
Use the member fixer task to check whether any users or groups referenced in <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> items have been renamed or deleted and fix these references.<br />
Member fixer is used to:<br />
v fix references to users in library and item level access settings that refer to users and groups from a<br />
given user repository where the structure of the user repository has been altered. For example, an<br />
LDAP transfer may have been executed, or the LDAP schema may have changed, or users and groups<br />
may have been moved in the LDAP.<br />
v fix references to users in item level access settings that refer to users and groups who have been<br />
deleted from the user repository.<br />
The member fixer task's function is to check all of the items in a specified library for references to users<br />
and groups that no longer exist in the current user repository. In report mode, it will report all the<br />
references to members. In fix mode, these references can be fixed, either by replacing them with<br />
references to members that exist, or by removing the references. The fix parameter determines whether<br />
the member fixer task runs in report or fix mode.<br />
References to members in library items contain the distinguished name of the member as well as a<br />
unique ID for the member. This unique ID is an internal id that is unique over time, and is different to<br />
the distinguished name. This means if a member is deleted and another member is created with the same<br />
distinguished name, the two members will have different unique IDs. The mismatchedId parameter can be<br />
used to update or remove references from web content items to users with these unique IDs.<br />
When a member that has been given permissions on a library is deleted, the member permissions are<br />
entirely removed from the library, so that any inherited permissions for items in the library will also be<br />
removed. Therefore, the member fixer task can not be used to update these permissions to a different<br />
member. However, when an LDAP transfer is carried out, the member permissions on the library are<br />
maintained. So, the member fixer task can be run after an LDAP transfer to update or remove these<br />
permissions<br />
Enabling the member fixer tool<br />
You must first enable the member fixer by adding the following parameters to the WCM WCMConfigService<br />
service using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console:<br />
v connect.businesslogic.module.memberfixer.class=com.aptrix.pluto.security.MemberFixerModule<br />
v connect.businesslogic.module.memberfixer.remoteaccess=true<br />
v connect.businesslogic.module.memberfixer.autoload=false<br />
Custom Mapping<br />
To update a reference to a member that does not exist with a member that does exist, member mappings<br />
can be defined in a custom mapping file. Where the member fixer task does not find a mapping in this<br />
file for a member, it will search the user repository for members with the same ID as the member that no<br />
longer exists. If such a member is found, it will update the reference with this user or group, or remove<br />
559
the reference, as specified by the altDn parameter. If no such member is found, this member is classified<br />
as 'invalid' and will be updated or removed as specified by the invalidDn parameter.<br />
If custom mapping is required you must perform the following steps to map the user and group domain<br />
names before running the member fixer task:<br />
1. Update the following properties in the wp_profile_root/PortalServer/wcm/shared/app/config/<br />
wcmservices/MemberFixerModule.properties file:<br />
cn=contentAuthors,dc=lotus,o=ibm->cn=contentEditors,dc=rational,o=ibm<br />
This format is used to completely replace one distinguished name with another.<br />
cn=[ID],dc=websphere,o=ibm->cn=[ID],dc=tivoli,o=ibm<br />
This format is used to replace part of a distinguished name. This example will change all of<br />
the distinguished name except the common name.<br />
Further examples are listed in the MemberFixerModule.properties file.<br />
2. You then run the member fixer task using the -DaltDn option as details in the following section.<br />
Running the Member Fixer task:<br />
1. Open a command prompt.<br />
Library parameters in steps 2 and 3:<br />
v The library specified in the command is the library to be scanned by the member fixer task. If the<br />
query parameter "library" is omitted, the default library that has been configured with the<br />
defaultLibrary property in the WCM WCMConfigService service is used.<br />
2. To create a report of users or groups referenced in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items that need fixing, run<br />
the following command from the wp_profile_root/ConfigEngine directory:<br />
Windows<br />
ConfigEngine.bat run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password<br />
-Dlibrary="MyLibrary"<br />
UNIX<br />
i<br />
./ConfigEngine.sh run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password<br />
-Dlibrary="MyLibrary"<br />
ConfigEngine.sh run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password<br />
-Dlibrary="MyLibrary"<br />
Note: An administrator user name and password is not required if you have already specified the<br />
portal administrator username and password using the PortalAdminId and PortalAdminPwd settings<br />
in the wkplc.properties file.<br />
Before progressing to the next step and running the member fixer task in fix mode, ensure that the<br />
report mode indicates that the updates will happen as you require. A summary of the updates will be<br />
shown by the command. A detailed report containing the updates that will be made for each item will<br />
be shown in the SystemOut.log file located in wp_profile_root\logs\<strong>Web</strong>Sphere_Portal. If the report<br />
indicates that the update will not happen as required, change the member fixer task parameters and<br />
run the report mode again. Repeat this process until you are satisfied that the fixes will be applied<br />
correctly. This is important because the fixes made by the member fixer task when run in fix mode<br />
may not be easy to undo if incorrect fixes are applied.<br />
3. If there have been changes to users and groups, update the items that reference them by running the<br />
following command:<br />
560 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Windows<br />
ConfigEngine.bat run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password<br />
-Dlibrary="MyLibrary" -Dfix=true<br />
UNIX<br />
i<br />
./ConfigEngine.sh run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password<br />
-Dlibrary="MyLibrary" -Dfix=true<br />
ConfigEngine.sh run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password<br />
-Dlibrary="MyLibrary" -Dfix=true<br />
Note: An administrator user name and password is not required if you have already specified the<br />
portal administrator username and password using the PortalAdminId and PortalAdminPwd settings<br />
in the wkplc.properties file.<br />
If the member fixer task indicates that certain mismatched member conditions exist, append the<br />
specified parameters to the command:<br />
Table 121. Member fixer conditions<br />
Condition description<br />
Nonexistent users or groups have alternate distinguished<br />
names (DNs) available.<br />
If users or groups have invalid distinguished names<br />
(DNs) the report will list these as "invalid". This means<br />
the distinguished name doesn't exist and there is no<br />
alternate distinguished name available.<br />
Users or groups have been found with mismatched<br />
unique IDs.<br />
Command to correct condition<br />
v<br />
v<br />
v<br />
v<br />
v<br />
v<br />
To update the items that reference the nonexistent<br />
users or groups, append -DaltDn=update to the<br />
command.<br />
To remove the members that reference the users or<br />
groups append -DaltDn=remove to the command.<br />
To remove users and groups that have invalid<br />
distinguished names append -DinvalidDn=remove to<br />
the command.<br />
To update users and groups that have invalid<br />
distinguished names with the portal administrator<br />
user's distinguished names append<br />
-DinvalidDn=update to the command.<br />
To fix the mismatched unique IDs append<br />
-DmismatchedId=update to the command.<br />
To remove users and groups with mismatched unique<br />
IDs append -DmismatchedId=remove to the command.<br />
4. After the member fixer task has run, review the SystemOut.log to verify that the member fixer task<br />
ran correctly. The member fixer task may not be able to save items that fail validation, such as items<br />
that contain invalid fields. You must edit these items to make them valid and then run the member<br />
fixer task again.<br />
Running the Member Fixer in a federated security environment<br />
In a federated security environment with multiple realms, you can specify the realm to run the member<br />
fixer task on by adding -Drealm=realmName to the command. If this parameter is omitted the default<br />
realm will be used.<br />
The member fixer task will check whether there are any members and groups referenced in items that are<br />
under any of the base distinguished names defined for the specified realm and fix these references.<br />
References to members can only be updated with references to members in the specified realm.<br />
Additionally, the member fixer task can be used to check whether there are any members and groups<br />
referenced in items that are not under any of the base distinguished names defined for any of the realms<br />
Maintaining web content 561
in the environment and fix these references. To do this, follow the same steps described above for a single<br />
realm environment and add -DnoRealmDn=true to the command.<br />
In a federated security environment with multiple realms, the member fixer task should be run for each<br />
realm in turn to make sure that all of the references are fixed.<br />
Preserving dates<br />
You can preserve the last modified date of items updated by the member fixer task by adding<br />
-DpreserveDates=true to the command. Otherwise the last modified date will be updated when the<br />
member fixer task is run.<br />
Restricting which items types to fix<br />
You can restrict which objects types are processed by appending -DrestrictOn=ItemType to the command.<br />
For example:<br />
v content<br />
v folder<br />
v project<br />
v style for presentation templates<br />
v template for authoring templates<br />
v taxonomy<br />
v category<br />
v SiteArea<br />
v Workflow<br />
v WorkflowStage<br />
v WorkflowAction<br />
v Cmpnt for components<br />
You can restrict multiple object types by separating the types with a comma (,). For example, to restrict<br />
workflows and workflow stages, you can specify -DrestrictOn=Workflow,WorkflowStage.<br />
If not specified, all object types will be updated.<br />
Parameters to set for large repositories<br />
To prevent your session timing out before the task has finished, you can append the option<br />
-DsessionTimeOut=timeOut to the command. This sets the number of seconds in which the task must<br />
complete before its session will timeout. The default session timeout is 14,440 seconds, which is 4 hours.<br />
For large repositories you should increase this setting. For example: -DsessionTimeOut=36000, which is 10<br />
hours.<br />
Examples<br />
These options can be combined when the conditions occur at the same time. For example, if alternate<br />
DNs are available for nonexistent users and groups and there are mismatched unique IDs, you would use<br />
the following command:<br />
Windows<br />
ConfigEngine.bat run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password<br />
-Dlibrary="MyLibrary" -Dfix=true -DaltDn=update -DmismatchedId=update<br />
562 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
UNIX<br />
i<br />
./ConfigEngine.sh run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password-<br />
Dlibrary="MyLibrary" -Dfix=true -DaltDn=update -DmismatchedId=update<br />
ConfigEngine.sh run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password<br />
-Dlibrary="MyLibrary" -Dfix=true -DaltDn=update -DmismatchedId=update<br />
If there have been changes to users and groups that are within the specified realm or that are not within<br />
any realm, update the items that reference them by entering the following command:<br />
Windows<br />
ConfigEngine.bat run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password -Drealm=MyRealm<br />
-Dlibrary="MyLibrary" -Dfix=true -DnoRealmDn=true<br />
UNIX<br />
i<br />
./ConfigEngine.sh run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password -Drealm=MyRealm<br />
-Dlibrary="MyLibrary" -Dfix=true -DnoRealmDn=true<br />
ConfigEngine.sh run-wcm-admin-task-member-fixer -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasUserId=username -DWasPassword=password -Drealm=MyRealm<br />
-Dlibrary="MyLibrary" -Dfix=true -DnoRealmDn=true<br />
Using the Update Security task<br />
Use the Update Security task to apply inherited access permissions and remove existing item access<br />
permissions for all items or all items of a given type. This task is useful as a post-migration step, or if<br />
you are applying major changes to your inheritance settings.<br />
Running the Update Security task<br />
1. Open a command prompt.<br />
2. To apply inherited access permissions to all items in a library named "MyLibrary" for all roles, run the<br />
following command from the wp_profile_root/ConfigEngine directory:<br />
Windows<br />
ConfigEngine.bat run-wcm-admin-task-update-security -DWasPassword=password<br />
-DPortalAdminId=username -DPortalAdminPwd=password -DWasPassword=password<br />
-Dlibrary=MyLibrary -DinheritPerms=apply -DlibSecurity=true<br />
UNIX<br />
i<br />
./ConfigEngine.sh run-wcm-admin-task-update-security -DWasPassword=password<br />
-DPortalAdminId=username -DPortalAdminPwd=password -DWasPassword=password<br />
-Dlibrary=MyLibrary -DinheritPerms=apply -DlibSecurity=true<br />
ConfigEngine.sh run-wcm-admin-task-update-security -DWasPassword=password<br />
-DPortalAdminId=username -DPortalAdminPwd=password -DWasPassword=password<br />
-Dlibrary=MyLibrary -DinheritPerms=apply -DlibSecurity=true<br />
Note: An administrator user name and password is not required if you have already specified the<br />
portal administrator user name and password using the PortalAdminId and PortalAdminPwd settings<br />
in the wkplc.properties file.<br />
3. To remove inherited access permissions to all items in a library named "MyLibrary" for all roles, run<br />
the following command:<br />
Windows<br />
ConfigEngine.bat run-wcm-admin-task-update-security -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasPassword=password -Dlibrary=MyLibrary<br />
-DinheritPerms=remove<br />
Maintaining web content 563
UNIX<br />
i<br />
./ConfigEngine.sh run-wcm-admin-task-update-security -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasPassword=password -Dlibrary=MyLibrary<br />
-DinheritPerms=remove<br />
ConfigEngine.sh run-wcm-admin-task-update-security -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasPassword=password -Dlibrary=MyLibrary<br />
-DinheritPerms=remove<br />
Note: An administrator user name and password is not required if you have already specified the<br />
portal administrator user name and password using the PortalAdminId and PortalAdminPwd settings<br />
in the wkplc.properties file.<br />
4. To remove existing item access permissions for all items in a library named "MyLibrary" for all roles,<br />
run the following command:<br />
Windows<br />
ConfigEngine.bat run-wcm-admin-task-update-security -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasPassword=password -Dlibrary=MyLibrary<br />
-DremoveExistingPerms=true<br />
UNIX<br />
i<br />
./ConfigEngine.sh run-wcm-admin-task-update-security -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasPassword=password -Dlibrary=MyLibrary<br />
-DremoveExistingPerms=true<br />
ConfigEngine.sh run-wcm-admin-task-update-security -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DWasPassword=password -Dlibrary=MyLibrary<br />
-DremoveExistingPerms=true<br />
Note: An administrator user name and password is not required if you have already specified the<br />
portal administrator user name and password using the PortalAdminId and PortalAdminPwd settings<br />
in the wkplc.properties file.<br />
Running the Update Security task for all libraries<br />
You can run the Update Security task for all libraries by replacing the option -Dlibrary=libraryName with<br />
the option -DallLibraries=true in the command. If neither option is specified, the Update Security task<br />
will process the default library.<br />
Restricting the task to only update specified items types<br />
You can restrict which objects types are processed by appending -DrestrictOn=ItemType to the command.<br />
For example:<br />
v content<br />
v folder<br />
v project<br />
v style for presentation templates<br />
v template for authoring templates<br />
v taxonomy<br />
v category<br />
v SiteArea<br />
v Workflow<br />
v WorkflowStage<br />
v WorkflowAction<br />
v Cmpnt for components<br />
564 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
If not specified, the security of all object types will be updated.<br />
Preserving dates<br />
You can preserve the last modified date of items updated by the Update Security task by adding<br />
-DpreserveDates=true to the command. Otherwise the last modified date will be updated when the<br />
Update Security task is run.<br />
Defining the session timeout<br />
To prevent your session timing out before the task has finished, you can append the option<br />
-DsessionTimeOut=timeOut to the command. This sets the number of seconds in which the task must<br />
complete before its session will timeout. The default session timeout is 14,440 seconds, which is 4 hours.<br />
For large repositories you should increase this setting. For example: -DsessionTimeOut=36000, which is 10<br />
hours.<br />
Examples<br />
All of the options can be combined. For instance, to remove existing item access permissions and apply<br />
inherited access permissions to <strong>Content</strong> in the a library called 'MyLibrary', whilst preserving the last<br />
modified dates of the items, run the following command:<br />
Windows<br />
ConfigEngine.bat run-wcm-admin-task-update-security -DWasPassword=password<br />
-Dlibrary=MyLibrary -DremoveExistingPerms=true -DinheritPerms=apply -DrestrictOn=<strong>Content</strong><br />
-DpreserveDates=true<br />
UNIX<br />
i<br />
./ConfigEngine.sh run-wcm-admin-task-update-security -DWasPassword=password<br />
-Dlibrary=MyLibrary -DremoveExistingPerms=true -DinheritPerms=apply -DrestrictOn=<strong>Content</strong><br />
-DpreserveDates=true<br />
ConfigEngine.sh run-wcm-admin-task-update-security -DWasPassword=password<br />
-Dlibrary=MyLibrary -DremoveExistingPerms=true -DinheritPerms=apply -DrestrictOn=<strong>Content</strong><br />
-DpreserveDates=true<br />
Using the workflow update tool<br />
Use the workflow update tool to add a workflow to existing items that aren't already workflow enabled.<br />
You must first enable the workflow update tool by adding the following parameters to the WCM<br />
WCMConfigService service using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console:<br />
v<br />
connect.businesslogic.module.workflowenablement.class=com.aptrix.pluto.workflow.WorkflowEnablementModule<br />
v connect.businesslogic.module.workflowenablement.remoteaccess=true<br />
v connect.businesslogic.module.workflowenablement.autoload=false<br />
1. Log in to the portal as an administrator.<br />
2. Open the following URL in the browser and specify which workflow you want to apply and the<br />
library containing the items you want to apply the workflow to:<br />
http://[HOST]:[PORT]/wps/wcm/myconnect/MOD=workflowenablement&library=libraryname&workflow=workflowname&fix=true<br />
Note: If the "library" parameter is omitted, the default library that has been configured in the WCM<br />
WCMConfigService service is used.<br />
Note: If the "&fix=true" parameter is omitted, the tool is run in read-only mode and a report is<br />
generated.<br />
Maintaining web content 565
Specifying a workflow stage:<br />
You can specify the workflow stage to move the updated items to by adding<br />
&workflowstage=workflowstagename to the URL. If not specified, items will be placed in the first<br />
workflow stage of the selected workflow.<br />
Preserving dates:<br />
You can preserve the last modified date of items updated by the Workflow update tool by adding<br />
&preserve_dates=true to the URL used to run the Workflow update tool.<br />
Restricting which items types to fix:<br />
You can restrict which objects types are processed by adding &restrictOn=itemtype to the URL<br />
used to run the Workflow update tool. For example:<br />
v content<br />
v folder<br />
v project<br />
v style for presentation templates<br />
v template for authoring templates<br />
v taxonomy<br />
v category<br />
v SiteArea<br />
v Workflow<br />
v WorkflowStage<br />
v WorkflowAction<br />
v Cmpnt for components<br />
If not specified, all object types will be fixed.<br />
Unlocking items:<br />
To force locked items to be unlocked while running the tool, add &forceUnlock=true to the query.<br />
This setting defaults to true.<br />
Restricting which items types to fix:<br />
To prevent your server timing out before the workflow update tool has finished, you can specify<br />
&sessionTimeOut= to the URL. This is defined as the number of seconds before a session will<br />
timeout. For example: &sessionTimeOut=36000 . The default session timeout is 14440 seconds.<br />
Clearing item history<br />
You use the clear history tool to clear the history of an item.<br />
You must first enable the clear history tool by adding the following parameters to the WCM<br />
WCMConfigService service using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console:<br />
v connect.businesslogic.module.clearhistory.class=com.aptrix.history.ClearHistoryModule<br />
v connect.businesslogic.module.clearhistory.remoteaccess=true<br />
v connect.businesslogic.module.clearhistory.autoload=false<br />
1. Log in to the portal as an administrator.<br />
2. Open the following URL in the browser and specify details of what history details to clear:<br />
http://[HOST]:[PORT]/wps/wcm/myconnectMOD=ClearHistory&day=date&month=month&year=year&keep=number_of_entries&restrictOn<br />
day, month and year<br />
The history details will be cleared prior to the date specified in the day, month and year<br />
parameters. If no date is specified, then the date will default to one year before the current<br />
date.<br />
keep Specify the minimum number of history entries to keep. For example, if an item has not been<br />
566 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
updated for over a year, and you specify to clear all history entries more than a year old, but<br />
choose to keep the last five entries, all the history will be cleared except for the last five<br />
entries even though they are over a year old. If a number is not specified, then the minimum<br />
number of history entries to keep will default to 10.<br />
restrictOn<br />
Select the item types to run the clear history tool against. If no item types are specified, all<br />
item types will be processed. Use the following parameters for each item-type:<br />
v content<br />
v folder<br />
v project<br />
v style for presentation templates<br />
v template for authoring templates<br />
v taxonomy<br />
v category<br />
v SiteArea<br />
v Workflow<br />
v WorkflowStage<br />
v WorkflowAction<br />
v Cmpnt for components<br />
library<br />
fix<br />
Enter a library name. If the "library" parameter is omitted, the default library that has been<br />
configured in the WCM WCMConfigService service is used.<br />
If omitted or set to false, a report listing which history items will be cleared is displayed. If<br />
set to true, history items will be cleared as specified.<br />
Note: You cannot completely clear item history. One history item will always remain in an item no<br />
matter what parameters you select when clearing the item history.<br />
Clearing version history<br />
You use the clear versions tool to clear the version history of an item.<br />
You must first enable the clear versions tool by adding the following parameters to the WCM<br />
WCMConfigService service using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console:<br />
v connect.businesslogic.module.clearversions.class=com.aptrix.versioncontrol.ClearVersionsModule<br />
v connect.businesslogic.module.clearversions.remoteaccess=true<br />
v connect.businesslogic.module.clearversions.autoload=false<br />
1. Log in to the portal as an administrator.<br />
2. Open the following URL in the browser and specify details of what history details to clear:<br />
http://[HOST]:[PORT]/wps/wcm/myconnectMOD=ClearVersions&day=date&month=month&year=year&keep=number_of_entries&restri<br />
day, month and year<br />
The version history will be cleared prior to the date specified in the day, month and year<br />
parameters. If no date is specified, then the date will default to one year before the current<br />
date.<br />
keep<br />
Specify the minimum number of history versions to keep. For example, if a version has not<br />
been created for over a year, and you specify to clear all versions more than a year old, but<br />
choose to keep the last five versions, all versions will be cleared except for the last five<br />
versions even though they are over a year old. If a number is not specified, then the<br />
minimum number of versions to keep will default to 10.<br />
Maintaining web content 567
estrictOn<br />
Select the item types to run the clear versions tool against. If no item types are specified, all<br />
item types will be processed. Use the following parameters for each item-type:<br />
v content<br />
v style for presentation templates<br />
v template for authoring templates<br />
v taxonomy<br />
v category<br />
v SiteArea<br />
v Workflow<br />
v WorkflowStage<br />
v WorkflowAction<br />
v Cmpnt for components<br />
library<br />
fix<br />
Enter a library name. If the library parameter is omitted, the default library that has been<br />
configured in the WCM WCMConfigService service using the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server<br />
administration console.<br />
If omitted or set to false, a report listing which versions will be cleared is displayed. If set to<br />
true, versions will be cleared as specified.<br />
Note: You cannot completely clear all versions. One version of an item will always remain no matter<br />
what parameters you select when clearing the version history.<br />
Exporting and importing a web content library<br />
You can export the contents of a web content library to disk and import this data into another web<br />
content server. This feature enables you to make a backup copy of a web content library, and can also be<br />
used to move data between servers. This function cannot be used to send updates, deletes and moves. It<br />
is only suitable for populating new items.<br />
Before you begin, create an empty shared directory to hold the exported web content library. If moving<br />
data between servers, both systems must have write access to this directory. In addition, review the<br />
following considerations before exporting or importing <strong>Web</strong> content libraries:<br />
Importing libraries into different versions<br />
You can import libraries from a different version of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> so long as the version<br />
you are importing the library into is later than the version you exported the library from. For<br />
example:<br />
v you can import a library exported from version 6.1.0.1 into version 7.0<br />
v you cannot import a library exported from version 7.0 into version 6.1.0.1<br />
It is recommended that you upgrade to the latest version of each release before attempting to<br />
import libraries between versions. It is not possible to export libraries from releases before 6.0.<br />
Exporting and importing a web content library versus syndication.<br />
This feature does not replace the syndication feature. Although this feature can be used to<br />
transfer data between servers, it is a manual process and is not meant to be used for regular<br />
updates between servers. Syndication is instead used to automatically keep two or more servers<br />
synchronized. Also, whereas syndication can be used to send updates, deletes and moves, the<br />
import feature is only suitable for populating new items.<br />
Limitations of exporting and importing a web content library.<br />
v Saved versions of items are not exported. Only the current version of each item is exported.<br />
568 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Children are only exported and imported when the parent is successfully exported and<br />
imported.<br />
v If an item exists on the target server with the same path, name and ID, then the item is<br />
overwritten.<br />
v Library and item level access controls are left unchanged when a library is exported and<br />
imported. You need to run the member fixer tool on the imported library to fix references to<br />
missing users and groups.<br />
v You cannot import an item if an item on the target server has the same ID but a different<br />
parent than the item being imported.<br />
Disabling JCR text search.<br />
It is recommended you disable JCR text search indexing on your <strong>Web</strong>Sphere Portal server before<br />
exporting or importing large libraries to reduce the load on the database during export and<br />
import. Edit the wp_profile_root/PortalServer/jcr/lib/com/ibm/icm/icm.properties file and set<br />
the jcr.textsearch.enabled property to false. After the file is updated, restart your server for the<br />
changes to take effect. When you have completed exporting or importing your library you must<br />
then enable JCR text search again. It can take some time to rebuild the indexes when you<br />
re-enable JCR text search indexing.<br />
Exporting and importing large libraries<br />
v When importing web content libraries, a temporary directory is used to store the library files<br />
during the upload process. If the size of the uploaded files exceeds the available disk space for<br />
the temporary directory, the import operation fails. When uploading large libraries, ensure that<br />
there is sufficient disk space to accommodate the import. The location of the temporary<br />
directory is specified by the jcr.binaryValueFileDir property in the wp_profile_root/<br />
PortalServer/jcr/lib/com/ibm/icm/icm.properties file.<br />
v When exporting or importing large libraries, increase the total transaction lifetime timeout<br />
and the maximum transaction timeout of your server to 360 seconds through the <strong>Web</strong>Sphere<br />
Application Server administrative console. To change these settings, go to Servers > Server<br />
Types > <strong>Web</strong>Sphere application servers > portal_server > Container Services ><br />
Transaction Service<br />
Personalization components.<br />
Personalization rules created within a Personalization component are exported and imported<br />
along with your web content library.<br />
If you are using Personalization rules created directly in the Personalization portlet you need to<br />
export and import your rules to and from Personalization on the same servers as your web<br />
content by using the same process as moving <strong>Web</strong>Sphere Portal content from a staging system to<br />
a production system. Personalization export and import must be performed before exporting and<br />
importing web content.<br />
JSP components<br />
If you are using JSP components you must manually copy any related JSP files to and from the<br />
same servers that you are exporting and importing to.<br />
Follow these steps to export and import a web content library. The server that the data is being exported<br />
from is called the source server, and the server that the data is being imported into is called the target<br />
server:<br />
1. Exporting:<br />
a. Log in to the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console on the source server.<br />
b. Click Resources > Resource Environment > Resource Environment Providers > WCM<br />
WCMConfigService > Custom properties.<br />
Cluster note: If you are using this <strong>Web</strong> content server as part of a cluster, ensure that you use the<br />
administration console for the deployment manager when manipulating configuration properties.<br />
Maintaining web content 569
c. Create or update the export properties.<br />
export.directory<br />
This is the directory on the source server where the exported data is written. The export<br />
task creates a subdirectory with the name corresponding to library name within this<br />
directory for each exported library. The default value is ${USER_INSTALL_ROOT}/<br />
PortalServer/wcm/ilwwcm/system/export.<br />
export.libraryname<br />
The name of the web content library to transfer. If exporting multiple libraries enter each<br />
library name separated by a semi-colon. For example, export.library=Lib_1;Lib_2;Lib_3<br />
export.singledirectory<br />
If set to true, multiple libraries are written into a single directory specified by the<br />
export.directory property. If set to false, the export task created subdirectories with the<br />
name corresponding to each exported library names. For example, if export.directory is<br />
specified as C:\export and the library name is <strong>Web</strong> Library, the export task saves the<br />
exported library under C:\export\<strong>Web</strong> Library. Set this property to true when exporting<br />
multiple libraries that contain references between each library.<br />
Note: You must restart your server any time you change these settings.<br />
d. Export the web content library from the source server:<br />
v Open a command prompt on the source server.<br />
v Run the export-wcm-data task from the wp_profile_root/ConfigEngine directory.<br />
Windows<br />
ConfigEngine.bat export-wcm-data -DWasPassword=password<br />
-DPortalAdminPwd=password<br />
UNIX ./ConfigEngine.sh export-wcm-data -DWasPassword=password<br />
-DPortalAdminPwd=password<br />
i ConfigEngine.sh export-wcm-data -DWasPassword=password -DPortalAdminPwd=password<br />
Note:<br />
v You can override the export.directory property defined in the WCM WCMConfigService service<br />
by using the -Dexport.directory parameter. For example: export-wcm-data<br />
-Dexport.directory=c:\export<br />
v You can override the export.singledirectory property defined in the WCM WCMConfigService<br />
service by using the -Dexport.singledirectory parameter. For example: export-wcm-data<br />
-Dexport.singledirectory=false saves the exported libraries under different directories.<br />
v You can override the export.libraryname property defined in the WCM WCMConfigService service<br />
by using the -Dexport.libraryname parameter. For example: export-wcm-data<br />
-Dexport.libraryname=libraryname<br />
Note: To ensure that your exported libraries can be successfully imported, do not change the<br />
names of any of the folders or files within the exported data.<br />
e. Verify that this transfer step completed without errors. If any errors occurred, check the portal logs<br />
on the target server for extended diagnostic information.<br />
f. Verify that the export directories were populated correctly, including any subdirectories for each<br />
exported library.<br />
2. Importing:<br />
a. Log in to the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administration console on the target server.<br />
b. Click Resources > Resource Environment > Resource Environment Providers > WCM<br />
WCMConfigService > Custom properties.<br />
570 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Cluster note: If you are using this <strong>Web</strong> content server as part of a cluster, ensure that you use the<br />
administration console for the deployment manager when manipulating configuration properties.<br />
c. Create or update the import.directory property. This is the directory from where the exported<br />
data is read when importing the data to the target server. If exporting and importing across a<br />
network, this property can be the same directory as the one specified in export.directory<br />
property. Otherwise, you must copy the exported data from the location specified in the<br />
export.directory property to the location specified in the import.directory property before<br />
running the import task in step 2.<br />
v If you specified true for the export.singledirectory property when you exported your<br />
libraries, specify the parent directory where all the exported libraries are located.<br />
v If you specified false for the export.singledirectory property when you exported your<br />
libraries, or if you only want to import specific libraries, then you must list the directory of each<br />
library separated by semicolons. For example: c:\import\Lib1;c:\import\Lib2;c:\import\Lib3.<br />
If using Linux use /; to separate each library, such as /opt/importdata/Lib1/;/opt/importdata/<br />
Lib2/;/opt/importdata/Lib3.<br />
Note: You must restart your server any time you change this setting.<br />
d. Import the web content library to the target server.<br />
v Open a command prompt on the target server.<br />
v Run the import-wcm-data task from the wp_profile_root/ConfigEngine directory.<br />
Windows<br />
ConfigEngine.bat import-wcm-data -DWasPassword=password<br />
-DPortalAdminPwd=password<br />
UNIX ./ConfigEngine.sh import-wcm-data -DWasPassword=password<br />
-DPortalAdminPwd=password<br />
i ConfigEngine.sh import-wcm-data -DWasPassword=password -DPortalAdminPwd=password<br />
Note: You can override the import.directory property defined in the WCM WCMConfigService<br />
service by using the -Dimport.directory parameter. For example: import-wcm-data<br />
-Dimport.directory=c:\import\Lib1;c:\import\Lib2;c:\import\Lib3.<br />
e. Verify that the imported libraries have been imported by reviewing the list of libraries listed in the<br />
web content libraries section of the administration portlet on the target server. If any errors<br />
occurred, check the portal logs on the target server for extended diagnostic information.<br />
f. Reset the web content event log.<br />
g. Restart the server.<br />
Troubleshooting:<br />
v If items are exported and imported twice between the same servers, and items have been moved or<br />
deleted between the first and second export and import, then you must manually delete these items<br />
from the target server before transferring the items again. If this step is not performed, an error like<br />
this example is generated:<br />
javax.jcr.ItemExistsException: A node already exists with uuid:<br />
376dba00408608aea231b2c714d0bda6 at path: /contentRoot/icm:libraries[10]/F1/F3/test1.ort<br />
v If you receive 500 errors on ext2 and ext3 versions of Linux, you have exceeded the number of children<br />
that a parent folder can hold. You cannot store more than 32768 children under one folder on ext2 and<br />
ext3 versions of Linux. Move some content items out of the affected site area to another site area so<br />
that none of your site areas contain more than 32768 children under one folder and then try exporting<br />
again. You can move the content items back to the correct site areas once you have imported the<br />
library.<br />
Maintaining web content 571
Related tasks:<br />
“Resetting the web content event log” on page 77<br />
From time to time you may need to reset the web content event log. The event log can be reset only on a<br />
syndicator server. Any changes made by resetting the event log are then syndicated to its corresponding<br />
subscribers. In most cases you reset the event log on the server you have imported or migrated data onto,<br />
or on a syndicator to troubleshoot syndication problems in a syndication relationship.<br />
Cloning a web content repository<br />
Syndicating items from one server to another, either after migration or to roll out a new server, can take a<br />
long time. Your database backup and restore features can be used to clone data from one repository to<br />
another, making your system ready for syndication to be used from then on for incremental updates.<br />
There are two basic cloning scenarios:<br />
v Cloning all items from one server to another. For example, cloning data from one authoring server to<br />
another authoring server.<br />
v Cloning all items from one server to a another, but then removing unrequired data from the cloned<br />
server. For example, cloning data from an authoring server to a delivery server where you would want<br />
to remove version history and draft items from the delivery server repository.<br />
Note: These procedures only describe how to clone a web content repository. To clone a Portal<br />
environment, XMLaccess export and import should be used to transfer the Portal data to the target<br />
environment<br />
Cloning preparation<br />
You must prepare your source and target systems prior to cloning a web content repository.<br />
v The source and target environments must be on the same version and fix level<br />
v Ideally the source and target environments will use the same LDAP<br />
v If the target server already contains data:<br />
– If you need to use this data later, ensure you take a backup of the target environment before<br />
cloning.<br />
– Note down the syndicator and subscriber setups. The syndication setup on the target environment<br />
will be lost during the cloning process, and will need to be recreated.<br />
– Note down the library access control setup. Library access levels for target environment will be lost<br />
during the cloning process, and will need to be reapplied.<br />
Oracle Considerations<br />
When setting up an Oracle database for JCR you would ideally have a separate physical Oracle database<br />
for each JCR repository. This will make it very simple to copy a JCR repository from one system to<br />
another.<br />
If you do choose to store all of your JCR repositories in a single database then it is best to use the same<br />
schema name for each, even if it will be difficult to tell which JCR instance each schema belongs too.<br />
If you instead choose to name the schemas differently for each JCR repository instance, copying will be<br />
much more difficult. You would have to do a schema export and import first, then a second export of<br />
views and triggers into "sqlexport". Then modify the source schema name with the target schema name<br />
in the "sqlexport" and finally make another import of the "sqlexport" into the target schema. This is not<br />
the recommended approach.<br />
572 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Cloning data<br />
These procedures describe how to clone web content data from one system to another.<br />
1. On the source system:<br />
a. Disable all syndicators<br />
b. Stop the Portal server<br />
c. Backup the data of JCR database name specified by "jcr.DbName" parameter in the<br />
wkplc_comp.properties file:<br />
Table 122. wkplc_comp.properties<br />
System<br />
Windows<br />
UNIX<br />
i<br />
Location<br />
located in the wp_profile_root\ConfigEngine\properties<br />
directory<br />
located in the wp_profile_root/ConfigEngine/properties<br />
directory<br />
located in the wp_profile_root/ConfigEngine/properties<br />
directory<br />
Refer to the documentation for your database platform for specific backup instructions.<br />
d. Restart the Portal server.<br />
e. Re-enable any syndicators that do not syndicate to the target server.<br />
2. On the target system:<br />
a. Stop the Portal server.<br />
b. Remove the existing JCR database by dropping the database. Refer to the documentation for your<br />
database platform for specific instructions.<br />
c. Create a new database, and restore the source system database backup. Refer to the documentation<br />
for your database platform for specific instructions.<br />
d. Restart the Portal server.<br />
e. Delete all syndicators and subscribers as they will not be valid for the target system.<br />
f. If the target system is using a different LDAP run the member fixer tool to fix member information<br />
to match the new LDAP. First run the module in report mode to see what member information<br />
requires fixing and then run the tool in fix mode to fix various potential member information<br />
mismatches.<br />
g. If cloning from an authoring system to a delivery system, run the clear versions tool to remove<br />
any versions from the delivery system.<br />
h. Set up syndication:<br />
v Create subscribers and syndicators as appropriate for this system.<br />
v If the target system is a syndicator to the original source system, leave that syndicator disabled<br />
for now. All other Syndicators can be enabled<br />
3. On source system:<br />
a. If the target system is a subscriber to the source system, update the syndicator with the new target<br />
subscriber ID and enable syndication.<br />
b. If the target system is a syndicator to the source system, update the subscriber with the new target<br />
syndicator ID<br />
4. On target system:<br />
a. If the target system is a syndicator to the source system, enable syndication.<br />
Once you have finished cloning your web content data:<br />
v Validate that the web content data on the target environment is rendering correctly.<br />
Maintaining web content 573
v Validate access control settings for both rendering and authoring are set as expected, and working<br />
correctly for a selection of users.<br />
v Validate updates are being syndication into and from the target environment as expected.<br />
Related tasks:<br />
“Clearing version history” on page 567<br />
You use the clear versions tool to clear the version history of an item.<br />
574 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Personalizing your content<br />
Personalization allows a portal or website to choose which content should appear for a particular user.<br />
The <strong>Web</strong>Sphere PortalPersonalization component selects content for users, based on information in their<br />
profiles and on business rules. Using Portal Personalization, business experts can classify site visitors into<br />
segments and target relevant content to each segment. For example, a site using Personalization might<br />
show different news articles to managers than to regular employees or different information to valued<br />
customers. Personalization offers analytic capabilities to record site usage patterns and includes the<br />
LikeMinds recommendation engine, which provides collaborative filtering capabilities. Collaborative<br />
filtering uses statistical techniques to identify groups of users with similar interests or behaviors.<br />
Inferences can be made about what a particular user might be interested in, based on the interests of the<br />
other members of the group.<br />
You can define content through a number of applications, including <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Personalization automatically detects the content definition from these applications. Definitions of<br />
database or LDAP content types can also be made through a Personalization wizard included with <strong>IBM</strong><br />
Rational ® Application Developer.<br />
Once you define the content type, attributes of the content are exposed to the rule author. The rule author<br />
can use these attributes to make conditions which define if and when certain content is displayed, or<br />
even if certain actions like database updates and triggered emails may occur.<br />
Benefits of Personalization<br />
v The Personalization component selects content for users based on information in their profiles and on<br />
business logic. With Personalization facilities, subject matter experts can select content that is suited to<br />
the needs and interests of each site visitor. These web-based tools help companies quickly and easily<br />
use content that is created by business and subject matter experts.<br />
v Personalization classifies site visitors into segments and then targets relevant content to each segment.<br />
Business experts create the rules for classifying users and selecting content, using web-based tools.<br />
v Personalization has built in capabilities for the <strong>IBM</strong> Java <strong>Content</strong> Repository. This means that<br />
personalization rules can easily be used in your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> solutions.<br />
v Personalization also includes a recommendation engine that provides collaborative filtering capabilities.<br />
Collaborative filtering uses statistical techniques to identify groups of users with similar interests or<br />
behaviors. Inferences can be made about what a particular user might be interested in, based on the<br />
interests of the other members of the group.<br />
v Campaign management tools are also included with Personalization. Campaigns are sets of business<br />
rules that work together to accomplish a business objective. For example, a Human Resources manager<br />
might want to run a campaign to encourage employees to enroll in a stock purchase plan or sign up<br />
for some other new benefit which has just become available to employees. The Human Resources<br />
manager would define a set of rules that are shown to accomplish this business objective. Campaigns<br />
have start and stop dates and times and can be email and web-page based. Several campaigns can run<br />
simultaneously and can be prioritized.<br />
Personalization Overview<br />
Portal Personalization provides automatic customization of website content for individual users and user<br />
groups.<br />
Personalization can recognize a specific user based on a profile or can determine characteristics of a user<br />
based on previous purchases, products or pages viewed, and so forth. Personalization then selects content<br />
that is appropriate for that profile. If a person has a high salary range, Personalization can be configured<br />
575
to retrieve information about a commercial website premium product. If an individual belongs to a<br />
particular geographic region, content specific to that region may be targeted to the individual. The page<br />
is assembled with the proper personalized information, and the user sees her personalized page.<br />
Personalization is composed of<br />
v Personalization browser - The Personalization user interface:<br />
– registers resource collections<br />
– authors rules, campaigns, and content spots<br />
– maps rules into content spots for a particular campaign<br />
Since objects are authored through the Personalization server, the Personalization browser can display<br />
rules in production as well as view rules in a staging environment.<br />
v Rules engine - The rules engine executes rules created in the Personalization browser. A programming<br />
interface exists for Personalization to invoke rules, Personalization rules may be invoked through the<br />
Personalized List portlet, or rules may be invoked through <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> Personalization<br />
components. Rules associated with pages or portlets through Portal Administration are also<br />
automatically triggered.<br />
v LikeMinds Recommendation engine - The recommendation engine evaluates recommendation rules<br />
created in the Personalization browser.<br />
v Resource engine - The resource engine resolves the queries produced by rules into content pieces to be<br />
returned. <strong>Content</strong> for Personalization is created and approved using whatever content management<br />
tool you choose, or may come from an LDAP or any other database. <strong>Content</strong> is accessed via a set of<br />
Resource Collection classes.<br />
v A logging framework - The logging framework is used to record information about website usage to<br />
the feedback database and the recommendation engine. It is entirely up to the site developers to decide<br />
what information is logged.<br />
The engines are sometimes collectively referred to as the Personalization run time server.<br />
The engine identifies the particular user. Personalization retrieves that person's profile. For example, a<br />
person may have a salary range included in her profile. Personalization then selects content that is<br />
appropriate for that profile. If a person has a high salary range, region code, or other information,<br />
Personalization can be configured to retrieve information about a commercial website premium product.<br />
The page is assembled with the proper personalized information. The user sees her personalized page.<br />
Types of Personalization<br />
There are three types of Personalization:<br />
Simple filtering<br />
A site displays content based on predefined groups of site visitors. For example, if a site visitor is<br />
in the Human Resources department, the site provides access to URLs containing Human<br />
Resources policy manuals.<br />
Rules engines<br />
In a rules based system, the site owner defines a set of business rules which determine what<br />
category of content is shown when a certain profile type visits the site. An example would be:<br />
Display all four wheel drive SUVs to visitors in the northeast in the 21 to 35 age group.<br />
This approach has the advantage of driving the site's behavior with the business objectives of the<br />
site owner. The site owner is usually the owner of a marketing campaign or some other business<br />
manager.<br />
Collaborative filtering<br />
A site visitor rates a selection of products, explicitly or implicitly. Those ratings are compared<br />
with the ratings offered by other visitors. Software algorithms detect similarities. For example, a<br />
visitor receives book recommendations based on the similar purchases of others.<br />
576 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Rules versus collaborative filtering<br />
When complex filtering is required, a rule-based system may work better than collaborative filtering, and<br />
vice versa. The following table details examples where one type of personalization is better than the<br />
other.<br />
Table 123. When to use rules filtering versus collaborative filtering.<br />
Scenario Which filtering type to use Reason<br />
If the number of items offered and<br />
users who purchase them are rather<br />
low.<br />
If price points are high or purchasing<br />
frequency is low.<br />
If there is a pre-existing dependency<br />
between items. Example: Disability<br />
policy required for homeowner<br />
If number of items offered and users<br />
who purchase them are rather high.<br />
If price points are low, all quite<br />
dissimilar, or the products offered<br />
have a wide range of user appeal.<br />
When not much information is<br />
gathered about the user, but the user<br />
can be identified, possibly by a login<br />
or cookie.<br />
Rules<br />
Rules<br />
Rules<br />
Collaborative<br />
Collaborative<br />
Collaborative<br />
Very little room to compute user<br />
similarity necessary for collaborative<br />
filtering.<br />
Finite, limited arenas - collaborative<br />
filtering fails because of the inherent<br />
lack of diversity.<br />
Recommending a disability policy<br />
just because collaborative filtering<br />
says many others "like this user" also<br />
bought a policy is incorrect--one<br />
must have the homeowner policy<br />
first.<br />
Cannot write rules covering all items.<br />
The wide variance fits the<br />
collaborative filtering approach.<br />
Collaborative filtering also lowers the<br />
risk of making "bad"<br />
recommendations.<br />
In this case, user attributes on which<br />
to base rules may be lacking.<br />
Collaborative filtering can compare<br />
the user's experiences on the site to<br />
other users.<br />
How a site is personalized<br />
Use this topic to understand how to define a personalized list of new articles for a website, such as, a<br />
place at the top of an intranet site for targeted employee bulletins or where the content of the site should<br />
be tailored to the particular user.<br />
Developing a personalized portlet or website<br />
1. A web developer defines an area of a site that needs Personalization. This area may be a personalized<br />
list of new articles appearing in a website, a place at the top of an intranet site for targeted employee<br />
bulletins such as changes to benefit plans, a product list on a commerce website, or any other place<br />
where the content of the site should be tailored to the particular user.<br />
2. A set of Resource Collections and Application Objects are defined. Together, these objects make up the<br />
business vocabulary that represents the terms and objects upon which Personalization decisions are<br />
based. These objects may be defined in the web page by pointing to an <strong>IBM</strong> Java <strong>Content</strong> Repository<br />
item type. These objects may be generated through a set of Personalization wizards provided with<br />
<strong>IBM</strong> Rational Application Developer; or they may be developed according to a set of public<br />
programming interfaces.<br />
3. The Resource Collections and Application Objects are registered to the Personalization server through<br />
the Personalization browser by importing .hrf files. These files define Resource Collections. The<br />
developer can also manually create the Resource Collection and Application Object references in the<br />
Personalization Browser.<br />
Personalizing your content 577
Note: The classes used for the Resource Collections and Application Objects must be on the classpath<br />
for both the application being personalized and for the Personalization browser web application. One<br />
way to achieve this task is to use a shared library placed either on the application server, or on the<br />
individual web applications. If you are using stock resource collections provided with <strong>IBM</strong> <strong>Web</strong>Sphere<br />
Portal, such as the Portal User Resource Collection or the Java <strong>Content</strong> Repository Resource<br />
Collection, these classpaths are already registered properly.<br />
4. Programmers now use the objects and terms defined through the Resource Collections and<br />
Application Objects to write rules and map those rules to content spots using campaigns.<br />
5. Portlet and website developers may either configure a Personalization Rule Display portlet to show<br />
the rule or content spot or may call into the Personalization programming interfaces to execute the<br />
appropriate rules or content spots which the programmers have defined.<br />
Note: The <strong>Content</strong> Spot provides a way for the site developers to develop personalized pages before the<br />
rules are authored as well as a way to more loosely tie a particular rule to a page. It is then up to a<br />
programmer to "map" the <strong>Content</strong> Spot to a Rule using a Rule Mapping within a Campaign in a<br />
Personalization browser.<br />
Using Personalization Rules<br />
1. A user navigates to the page containing Personalization rules or content spots.<br />
2. The application invokes Personalization to find content or make decisions.<br />
3. Personalization identifies the correct rules to execute. If a <strong>Content</strong> Spot with the name given to<br />
execute is not found, a rule is looked for directly with this name.<br />
4. The Personalization server searches for all Rule Mappings for the <strong>Content</strong> Spot. The server looks for<br />
Rule Mappings which have started, but not yet ended.<br />
5. The Rule Mappings are ordered based on the priority and split values. The rules associated with each<br />
mapping are executed in turn until a rule returns content.<br />
Note: It is possible to configure Personalization so that only the first rule (higher priority) will get<br />
executed.<br />
6. For each rule executed, Personalization retrieves the user's profile and evaluates the rule to select the<br />
content which meets the conditions of the rule. The rules engine will invoke the resource engine as<br />
necessary to retrieve content pieces.<br />
7. The content is returned to the web page, and displays for the user.<br />
Personalization terms<br />
The concepts and principles for working with Portal Personalization require an understanding of<br />
terminology.<br />
Resources, resource instances, and resource collections<br />
Before you can personalize <strong>IBM</strong> <strong>Web</strong>Sphere Portal resources, you need to understanding the terms for<br />
portal objects stored in the content repository.<br />
A resource is a Java class that defines the properties of a user or content object. In database terms, it is<br />
analogous to the database schema that defines the column names and types for a database table.<br />
Resource classes must implement the com.ibm.websphere.personalization.resources.Resource interface<br />
A resource instance is an instance of the resource class. Again, using a database analogy, the resource<br />
instance is similar to a row of a database table because it contains actual values for each property defined<br />
by the resource.<br />
A resource collection is a Java class that represents and allows access to a collection of resource instances. It<br />
is similar to a database table with a fixed schema and a number of rows. Resource collection classes must<br />
578 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
implement the com.ibm.websphere.personalization.resources.ResourceDomain3 interface. Rational<br />
Application Developer provides a wizard that can create resource collections that store data in SQL<br />
databases or LDAP repositories. The classes that can make up the resource collection are as follows:<br />
Resource Class<br />
An instance of com.ibm.websphere.personalization.resources.<br />
Resource <strong>Manager</strong> Class<br />
An instance of com.ibm.websphere.personalization.resources.Resource<strong>Manager</strong>3.<br />
Domain Class<br />
An instance of com.ibm.websphere.personalization.resources.ResourceDomain3.<br />
Translator Class<br />
An instance of com.ibm.websphere.personalization.resources.AuthIDTranslator.<br />
For more details, refer to the Javadoc API documentation for Personalization APIs You can provide your<br />
own implementation of these classes or use the RAD Personalization Wizard to generate classes that<br />
query against SQL or LDAP repositories.<br />
While resources, resource instances, and resource collections are easily mapped to familiar database<br />
concepts, it is important to note that the actual content store they refer to does not have to be a database<br />
table. It can be a file system, an LDAP repository, an XML store, or virtually any content store accessible<br />
by Java.<br />
User resources<br />
Your <strong>Web</strong> site visitors want to quickly access the <strong>Web</strong> content that meets their needs and interests. The<br />
needs and interests of the site visitors are stored as properties in the user profile data store.<br />
Many sites obtain the user needs and preferences by using an HTML input form. The input form includes<br />
information that seldom changes (such as the user name and address) and information that must be<br />
updated over time (such as gift wish lists). In addition to explicit information provided by the site visitor<br />
in the HTML input form, a business might also programmatically update the user profile data store with<br />
information obtained from other sources. These sources could include an analysis of a user's actions on<br />
the <strong>Web</strong> site and data from a user's non-<strong>Web</strong> interactions with the business.<br />
Although users are unique, personalizing <strong>Web</strong> content does not often require creating totally unique<br />
content for each user. Users can be profiled or grouped into categories that facilitate personalization. For<br />
example, on an internal <strong>Web</strong> site, certain information might be appropriate for managers, while other<br />
content may be suitable for salespersons.<br />
Note: The Portal User Collection resource collection included with Personalization cannot currently be<br />
used to select lists of users in select content rules. The resource collection may be used to profile the user<br />
in a profiler rule. This applies to both the user resource collection which is installed with Personalization<br />
as well as any custom resource collections created with the manager class<br />
com.ibm.websphere.personalization.resources.wps.User<strong>Manager</strong>.<br />
<strong>Content</strong> resources<br />
<strong>Web</strong> content resources consist of data that is formatted and displayed on <strong>Web</strong> pages. Examples include<br />
news articles, products, statistics and educational materials.<br />
The content is displayed when a user requests a JSP or servlet that dynamically generates and formats a<br />
<strong>Web</strong> page in the appropriate format, such as HTML or XML. When personalizing your <strong>Web</strong> site, you only<br />
have to customize the content you want to selectively display (or suppress) based on the user. For<br />
example, a given page might consist of 40% static content and 60% variable content based on particular<br />
user characteristics or business conditions, while other pages might be 100% static content.<br />
Personalizing your content 579
<strong>Content</strong> resources can be file content or structured content.<br />
Attribute Based Administration<br />
Attribute based administration provides a facility to customize the layout of a page for individual<br />
authenticated users by using rules to show or hide pages or portlets. This implementation tells the portal<br />
to show or hide pages and portlets based on dynamic characteristics that are determined at runtime.<br />
Attribute Based Administration is only available for authenticated users. For anonymous users, all pages<br />
are shown.<br />
Portal Personalization rules can be used to control whether a page is displayed in the site navigation; this<br />
is managed by choosing a rule appropriate for the user attribute you want to enable to see the page. If<br />
the rule returns true, the page or portlet will be shown, otherwise, it will be hidden. If Personalization is<br />
not installed or is not enabled in the properties settings, you will not see this option.<br />
Access Control and Visibility Rules<br />
Access Control and Visibility Rules both impact what appears on a portal page or portlet. Access Control<br />
determines what a user is allowed to see on a page or in a portlet. In order to see pages and portlets, a<br />
user must be explicitly defined as a member of the group that has access. The groups are arranged in a<br />
hierarchy and each group is assigned roles such as administrators or editors.<br />
Visibility rules determine what a user will see, or what has been targeted towards a user, and Access<br />
Control is based on group membership, visibility rules use any type of information, including LDAP<br />
attributes, or time of day. For example if you want to hide a portlet for an individual in a certain<br />
geography, store the location as an attribute in LDAP, and assign a visibility rule hiding the portlet. For<br />
example, a user may have access to the revenue figures for all divisions all year round, but these figures<br />
should not be displayed prominently except when they are first released. For a week after the figures are<br />
first released, the figures for the employee's division should show prominently on their home page. The<br />
visibility rule hides figures for divisions the employee is not in and only shows the employee's figures<br />
the week after they are released.<br />
Access Control takes precedent over visibility rules. You must have access to a page or portlet before<br />
visibility rules can be applied. Access Control also determines if a page or portlet will be returned in a<br />
search; if a user does not have access, he will not be able to see the portlet or page in search results. If a<br />
user has access to a portlet or page, but has the visibility rule set to hide the page or portlet, it will show<br />
up in search results.<br />
Assigning attribute based administration rules to pages and portlets<br />
Attribute based administration rules can be assigned manually in the portal in the Edit Properties and<br />
Edit Layout portlets, or through the XML configuration interface. The rule must be present on the system<br />
in order to assign it to a page or portlet. You can usually use Personalization Publish to accomplish this.<br />
v In order to map rules, non-administrator users must be given at least user access to the rule that is<br />
being mapped and edit access to the page or portlet where the rule is being mapped.<br />
v Pages or portlets on derived pages show an inherited visibility rule if no rule is defined for them. You<br />
cannot clear the inherited visibility rules on derived pages.<br />
Using the XML configuration interface, you can assign a rule to a page or portlet. Set the parameter<br />
com.ibm.portal.navigation.rule to indicate the rule to assign to the page or portlet. The value of the<br />
parameter should be the unique id or UUID of the rule. The UUID can be found by exporting the rule in<br />
the Personalization user interface and inspecting the exported XML for the jcr:uuid parameter.<br />
For example, to assign a rule with the UUID 7ce9d5004ee31f41b0d3b944c9f7965c to a page or portlet, add<br />
the following parameter to the content-node in the XML access script:<br />
580 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Changing the error condition behavior<br />
If an error occurs when locating or using a rule assigned to a page or portlet, by default that page or<br />
portlet will be hidden. If a user or expected application does not exist, the system will continue. This<br />
behavior may be appropriate, but in a development environment, you may need to change this behavior<br />
for testing purposes. Update the PersonalizationService.properties file to override this behavior globally.<br />
The property rulesEngine.visibilityDefault specifies whether a page or portlet renders if there is a<br />
problem with the assigned rule. Changing the property value to show means the page or portlet will<br />
display even if the assigned rule cannot be found or if there is a problem with the rule.<br />
The property rulesEngine.throwObjectNotFoundException specifies what happens if an object such as a<br />
user is not found when needed during rule execution. This may occur when Personalization cannot find<br />
the current user or when an expected application object does not exist on the session or request at the<br />
expected key. When set to false, a null user or object is not treated as an error but is instead only printed<br />
to the logs as a warning. Personalization will continue as if the requested attribute of the null object is<br />
itself null.<br />
For example, if no user object is found and rulesEngine.throwObjectNotFoundException is set to false, a<br />
rule such as Show page or portlet when user.name is null would return show. A null user is treated as<br />
if the user name is null. However, if no user object was found and<br />
rulesEngine.throwObjectNotFoundException is set to true, this same rule would throw an exception. If<br />
this rule was used to determine the visibility of a page or portlet, the ultimate result would depend upon<br />
the value of the rulesEngine.visibilityDefault property, which would decide what occurs if an exception is<br />
thrown during processing of a rule in attribute based administration.<br />
1. Open the PersonalizationService.properties file. This file is located in the following<br />
directory:wp_profile_root/PortalServer/config/config/services/PersonalizationService.properties.<br />
2. Find the rulesEngine.visibilityDefault property.<br />
3. Set the value of this property to show to enable portlets or pages to render if an error occurs.<br />
4. Fine the rulesEngine.throwObjectNotFoundException property.<br />
5. Set the value of this property to true to throw an exception if the object is not found.<br />
Rules<br />
Rules are used to define how your <strong>Web</strong> site interacts with individual and groups of <strong>Web</strong> site visitors.<br />
Rules are composed of easy-to-read logic statements that, in their final form, specify how to evaluate<br />
various conditions and what actions to take based on those conditions.<br />
Actions<br />
Actions use simple evaluation statements to select content to use or display, or to set information. Basic<br />
arithmetic calculations (addition, subtraction, multiplication, division) that follow order of operations can<br />
be used on either side of the evaluation; parentheses are not supported. Actions can be combined with<br />
profilers into bindings.<br />
The following action items are supported:<br />
Select actions<br />
Select data or content. Select actions retrieve data from a data store, typically for display on a<br />
web page. Select actions also can be used within bindings to exclude certain content, that is,<br />
filtering a subset of returned content from a superset.<br />
Update actions<br />
Update content or objects on the request. Update actions cannot select content. Update actions are<br />
used to store content or data in the user profile, an application object, or other data stores.<br />
Personalizing your content 581
Email actions<br />
Send email messages using a web page as the body. Email actions cannot select content. An email<br />
action sends an email message to a recipient or list of recipients. An email action assigned to a<br />
content spot sends an email message when the content spot is triggered. For example, at the time<br />
a website visitor views a page with the content spot.<br />
The email action editor allows the fields that identify the recipients (primary, copied and blind<br />
copied), the subject line, and the sender to be identified by either explicit text or by resources<br />
attributes. The email body is a separate file, such as a text file, an HTML file, or a JSP, that must<br />
be accessible from the email server via a URI. An emailed JSP can contain content spots for<br />
personalizing the email message for the user who triggers the content spot.<br />
Although email actions differ somewhat from email promotions, both have prerequisites that<br />
must be in place and working before email can be sent.<br />
Example: Simple select content action:<br />
View an example for a simple select content action.<br />
The select content action shown here, Get Bank News By Role, queries all records within a content<br />
resource entitled News and returns those marked as being for the current user's role.<br />
The content resource YourCoNews represents news articles in the data store. Each record has several<br />
different fields (for example, Title, Abstract, Author, Body), including a field entitled Role. In the data<br />
store, this field is marked to indicate the role of the visitor to whom it applies.<br />
Table 124. Simple select content action example<br />
Select NewsArticle<br />
whose Role is current User.Role<br />
order as is<br />
Example: Simple update action:<br />
View an example of an update action that is part of a <strong>Web</strong> site that allows visitors to manage certain<br />
information and preferences about themselves.<br />
When executed, the following update action will write to the fields (Income Group, Role) in the data store<br />
for the record associated with the current user (the current <strong>Web</strong> site visitor), using data contained in the<br />
current user's session variables, such as incomeGroup and role.<br />
Table 125. Example of an update action<br />
Update<br />
current Portal Users.Income Group set to current Session.incomeGroup<br />
current Portal Users.Role set to current Session.role<br />
current Portal Users.Last Name set to current Session.lastName<br />
current Portal Users.Title set to current Session.title<br />
Example: Simple email action:<br />
This email action rule example is typical of one that might be used after a website visitor submits a form<br />
indicating interest in an item or service.<br />
The email action rule shown below can be attached to a content spot that, when triggered by the visitor<br />
viewing the page with the spot, sends the email indicated by the bodyURI field to that visitor. This email<br />
is also blind copied to someone within the sample company.<br />
582 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 126. Email action rule example<br />
To: current Portal Users.Email Address<br />
From: Rates@YourCo.com<br />
bcc: Mortgage_Broker@YourCo.com<br />
Subject: Today's Mortgage Rates<br />
Body URI /email/mortgage-rates.jsp<br />
Related information:<br />
“Email administration” on page 597<br />
View the steps you need to complete before your run time server can send personalized email.<br />
Profilers<br />
Profilers are typically used to categorize an individual (usually the current site visitor) according to his or<br />
her user properties.<br />
Besides a user's properties, profilers can be used to define other conditions based on such factors such as<br />
the current date and time, the type of browser the visitor uses, or other implicit and explicit application<br />
object properties. Profilers can also make decisions based on the current user's session attributes and<br />
request attributes and parameters, along with category and action counts.<br />
Profilers can be constructed to define the conditions of arbitrarily named profiles, or can be defined in<br />
terms of other profilers. For example, you can create a profiler that will evaluate as true if a profile is in<br />
any, all, or none of a group of other profiles.<br />
Example: Simple profiler:<br />
View an example of a simple profiler that determines whether confidential company news articles will be<br />
shown to the current <strong>Web</strong> site visitor.<br />
The profiler User Clearance is based on a user resource called Personnel. When the profiler was created,<br />
the name User Clearance and the settings, Confidential and Regular, were arbitrarily defined for later<br />
reference within bindings. The left side of the comparison line (current Personnel.Role) refers to a user<br />
resource named Personnel created from a Personnel table in a database. Role is a mapped value, defined<br />
when the resource was created, that points to the Personnel.Role column in the Personnel table. The<br />
values in the Role column in the database are either Employee, Executive, or <strong>Manager</strong>.<br />
This completed profiler is used within a binding as a means of determining whether confidential<br />
company news articles will be shown to the current <strong>Web</strong> site visitor.<br />
Table 127. Simple profiler example<br />
User Clearance is<br />
Confidential when<br />
current Personnel.Role is Executive or<br />
current Personnel.Role is <strong>Manager</strong><br />
Otherwise Regular<br />
Example: Nested profiler:<br />
View an example of a nested profiler.<br />
A nested profiler is true if any, all, or none of the profilers within the profiler are true. You can categorize<br />
a condition as a combination of other conditions. For example, a <strong>Web</strong> site visitor can be profiled as a<br />
young male if a pre-existing gender profiler classifies the visitor as male, and a pre-existing age profiler<br />
classifies as the visitor as being in his teens or twenties.<br />
Personalizing your content 583
Table 128. Nested profiler example<br />
AgeGenderProfiler is<br />
YoungMale when<br />
GenderProfiler is Male and<br />
AgeProfiler is any of Teenager or Twenties<br />
Otherwise NotInTargetAudience<br />
Example: Category Count (implicit profiling):<br />
Get an overview of implementing category counts from a profiler that will contain profile definitions for<br />
movies, cooking, and sports; this overview sets the profile for the category with the highest count.<br />
For the Category Count example, assume a repository of articles on sports, movies, and cooking is<br />
available for the user to view. Each time the user views an article, a record is logged to show his or her<br />
preference for that topic. For this to occur, each article must be a JSP that implements category beans. For<br />
example, the following code would appear on a sports article:<br />
<br />
<br />
<br />
These values were typed into the Attribute text field during the creation of this profiler after selecting<br />
current Category Count.<br />
Note: A complete version of this profiler will contain profile definitions for movies and cooking for the<br />
cases where those category counts are greater than sports and each other.<br />
Table 129. Category count example<br />
ArticlePreference is<br />
Sports when<br />
current Category Count.Articles.Sports is greater than current Category<br />
Count.Articles.Cooking and<br />
current Category Count.Articles.Sports is greater than current Category<br />
Count.Articles.Movies<br />
Example: Browser capability:<br />
The browser capability stock object allows you to profile the browser the current <strong>Web</strong> visitor is using to<br />
view your site. View an example profiler that checks the browser version to determine whether it is<br />
supported.<br />
When using the browser capability stock object, there is a finite list of attributes available, but you must<br />
type the values for the right side of the evaluation. The browser capability script files and the<br />
SinglePixel.gif image must be properly configured in the <strong>Web</strong> application.<br />
Table 130. Example: The following example profiler checks the browser version to determine whether it is supported.<br />
Other possible checks include available plug-ins, whether Java is enabled, and whether cookies are enabled<br />
Check Browser is<br />
supported when<br />
(<br />
(<br />
current Browser Capability.BrowserType is Netscape and<br />
current Browser Capability.FullVersion is greater than or equal<br />
to 6.2<br />
)or<br />
584 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 130. Example: The following example profiler checks the browser version to determine whether it is supported.<br />
Other possible checks include available plug-ins, whether Java is enabled, and whether cookies are<br />
enabled (continued)<br />
(<br />
current Browser Capability.BrowserType is Internet Explorer<br />
and<br />
current Browser Capability.FullVersion is greater than or equal<br />
to 6.0<br />
)<br />
)<br />
Otherwise unsupported<br />
Example: "Count of" (quantifiable condition):<br />
View an example demonstrating the use of "Count of".<br />
A quantifiable condition profiler is similar to implicit profiling because a profile is defined according to<br />
numbers of items. Quantifiable condition profilers do not require the use of logging beans, but require<br />
attributes of resources that will be quantified to be organized uniformly.<br />
In the profiler below, counts are made for items in the session object shoppingCart used by the user<br />
resource Shopper. Here, shoppingCart is analogous to a table in a database and color would be a column<br />
of data. Each item within the table would be a row. For example:<br />
Table 131. Counts made for items in the session object shoppingCart used by the user resource Shopper<br />
Item quantity size color price<br />
Gadget 1 L red $1.99<br />
Gizmo 3 S green $0.95<br />
Table 132. Quantifiable condition profiler for the session object shoppingCart<br />
ColorPreference is<br />
Red when number of items matching (Shopper.shoppingCart.color is red) is greater than 5<br />
Green when number of items matching (Shopper.shoppingCart.color is green) is greater than 5<br />
Example: Request attributes and session attributes:<br />
Request values passed to the JSP or stored in the HTTP session can be referred to from rules. To refer to<br />
them in a rule, you must know the variables and their possible values.<br />
The following example profiles news articles as read or unread by the current user, based on the page<br />
request generated by a form on a JSP.<br />
Table 133. Request attributes and session attributes example<br />
User News is<br />
ReadNews when<br />
current Request.ProcessNews is Read<br />
UnreadNews when<br />
current Request.ProcessNews is Unread<br />
UnreadAllNews when<br />
current Request.ProcessNews is UnreadAll<br />
Example: Arithmetic operation:<br />
Personalizing your content 585
View an example of a profiler that uses arithmetic operations.<br />
To build an operation, select a combination of Resource.Attribute and other operands. You can do this on<br />
either side of the evaluation.<br />
Table 134. Example of where an order of operations is in effect but parentheses cannot be used<br />
AgeProfiler is<br />
Youth when<br />
current Date.Year - current User.BirthDate.Year is less than or equal to<br />
25<br />
Adult when<br />
current Date.Year - current User.BirthDate.Year is between 25 and 65<br />
Senior when<br />
current Date.Year - current User.BirthDate.Year is greater than or equal<br />
to 65<br />
Bindings<br />
Bindings combine actions and profilers to specify actions to perform when defined conditions are<br />
encountered. Returned content can be sorted or filtered prior to display or use. Actions can be set to be<br />
performed by always, exclude, and otherwise blocks. In addition, the total number of items used can be<br />
limited.<br />
The always and exclude blocks will always be performed no matter what the outcome of the profiler<br />
execution, but the otherwise block will only be run if none of the profilers match. An otherwise block<br />
works the same as an always blocks in that it adds items to the results, but for an exclude block, you<br />
actually choose an action that defines items that you don't want to include in the results. For example, on<br />
a shopping site, you may want to exclude items that have already been purchased.<br />
Example: Simple binding:<br />
Because bindings couple the conditional processing of a profiler with the functional power of an action,<br />
the simplest form of a binding works like a conditional “if-then” clause.<br />
Consider a simple binding example. If the current user is not a previous customer, then show a limited<br />
number of current offers. If the current user is a known customer, then show offers appropriate to their<br />
status level.<br />
In the example below, the profiler Customer Type is used to check whether the current user is a known<br />
customer. If the customer is not a known customer, the action Get Limited Number of Offers is executed.<br />
If the profiler indicates the user is a known customer with a status of Gold or Platinum, then a different<br />
action is executed and different offers are retrieved for display.<br />
Table 135. Simple binding example<br />
When Customer Type is<br />
Not A Customer<br />
do Get Limited Number of Offers<br />
Gold or<br />
Platinum<br />
do Get Offers For User<br />
order as is<br />
Example: Multiple profilers and optional actions:<br />
View an example that demonstrates the use of a conditional "if-then" with an additional clause.<br />
586 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Consider an example: If the current user does not have Confidential status, then the action<br />
GetNonConfidentialNews is executed. The same results could be achieved in this example by placing the<br />
GetNonConfidentialNews action under Otherwise because these are the only two profiles possible within<br />
this profiler.<br />
The action field under Otherwise is left as is. Since the UserClearance profiler places every user into one<br />
of two categories (Regular or Confidential), any action placed here would never be executed.<br />
The GetSiteNews rule will always be executed. Any content the rule retrieves from the data store is added<br />
to the total return set.<br />
The GetNewsAlreadyRead action works like any other action because it retrieves content from the data<br />
store. However, when the action is placed under Exclude, any content retrieved by this action is removed<br />
from the total return set.<br />
Note: It must be possible to indicate an article has been read by a given user. When you click the Select<br />
Action menu, you will only see rules that are assigned a Select Action type. Binding rules are also Select<br />
Action type rules. Once a resourceCollectiontype is set for the binding, all of the action rules will be<br />
locked and will use the same collection type.<br />
The order of the total return set is randomized and the number truncated to no more than 10 items. This<br />
effect takes place each time the rule is executed, so the news articles displayed on the <strong>Web</strong> page will<br />
change from page view to page view.<br />
Table 136. Example of the conditional "if-then" with an additional clause<br />
When UserClearance is<br />
Confidential<br />
do GetConfidentialNews<br />
Regular<br />
do GetNonConfidentialNews<br />
Always<br />
GetSiteNews<br />
Exclude<br />
GetNewsAlreadyRead<br />
order randomly<br />
show 10 items<br />
Example: Nested bindings (simple):<br />
When creating a binding, it is possible to use a binding in any of the do action areas. This is known as a<br />
nested binding.<br />
In the example below, the Always action (Get Top Products) inGet Products By Location is actually<br />
another binding, which is also shown below. When the nested binding is placed under Always, it has the<br />
effect of the boolean operator “or”.<br />
For example: The total rule returns content that meets the conditions in the earlier part of the binding or<br />
that meets the conditions in the later part.<br />
Note: It is possible for a nested binding to contain nested bindings.<br />
Get Products By Location:<br />
Table 137. Nested binding example<br />
When User Location is<br />
Lab<br />
Personalizing your content 587
Table 137. Nested binding example (continued)<br />
do Get Test Products<br />
Factory<br />
do Get Available Products<br />
Field<br />
do Get All Products<br />
Otherwise<br />
do Get Future Products<br />
Always<br />
Get Top Products<br />
order as is<br />
Get Top Products:<br />
When User Role is<br />
<strong>Manager</strong><br />
do Get Top Selling Products<br />
Exec<br />
do Get Top Selling Products<br />
Employee<br />
do Get Top Overstocked Products<br />
order as is<br />
Example: Nested bindings (advanced):<br />
View an example that demonstrates advanced nested bindings.<br />
This example is similar to the Nested bindings (simple) example, with the exception of the addition of<br />
the binding Get Top Products to the actions performed when the User Location profiler is Lab. Multiple<br />
actions can be grouped by selecting multiple actions or bindings simultaneously within the rule editor.<br />
Selecting multiple actions or bindings here has the effect of the boolean operator “and”, which returns the<br />
intersection of the data sets.<br />
For example: the current user location must be in the lab and an executive. Therefore, in addition to test<br />
products, executives and managers located in the lab will receive information about the top selling<br />
products, and employees at the lab will get the top overstocked items. Factory or field workers will not<br />
see either top selling or top overstocked products.<br />
Modified Get Products By Location:<br />
Table 138. Advanced nested bindings example<br />
When User Location is<br />
Lab<br />
do Get Top Products and<br />
do Get Test Products<br />
Factory<br />
do Get Available Products<br />
Field<br />
do Get All Products<br />
Otherwise<br />
do Get Future Products<br />
order as is<br />
588 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Recommend <strong>Content</strong><br />
You use Recommend <strong>Content</strong> rules (also referred to as recommendation rules) to recommend content to<br />
your <strong>Web</strong> site visitors. Recommendation rules, powered by LikeMinds, recommend content based on<br />
users' past interactions with your <strong>Web</strong> site.<br />
When creating a Recommend <strong>Content</strong> rule, you specify one of three recommendation methods. The<br />
recommendation methods are:<br />
how the current user navigated the site<br />
This method is associated with the LikeMinds Clickstream Engine.<br />
preferences explicitly expressed by the user<br />
Use this recommendation method to generate recommendations based on users' ratings of items.<br />
This method is associated with the LikeMinds Preference engine.<br />
Items map to a piece of content and are represented by resources and resource collections. Your<br />
<strong>Web</strong> site captures ratings using the Rating bean. The Rating bean collects the rating, the item<br />
resource, and resource collection, and then logs the data for LikeMinds to use later.<br />
association with content returned from a rule<br />
Use this recommendation method to generate recommendations based on market-basket analysis.<br />
This method associates items that a current <strong>Web</strong> site user has interest in (such as an item in their<br />
shopping cart) with items that others users have had interest in or have purchased. This method<br />
is associated with the LikeMinds Item Affinity engine.<br />
Item affinity rules make use of the LikeMinds transaction data being collected. They offer a<br />
method for generating recommendations from a known set of resources (actually the results of<br />
another rule returning the same resource type).<br />
Note: Before using Recommend <strong>Content</strong> rules, check with your system administrator to see which<br />
LikeMinds engines are configured and running on the production run-time server.<br />
Previewing a Recommend <strong>Content</strong> rule:<br />
To preview results, the production LikeMinds database must contain data, including items, users, and<br />
transactions (ratings or actions). The problem of initial data priming is commonly called coldstart.<br />
Visibility Rules<br />
Visibility rules determine what a user will see, or what has been targeted towards a user. Visibility rules<br />
can be assigned to pages and portlets and will be triggered automatically by the portal as needed.<br />
Visibility rules use any type of information, including LDAP attributes, time of day, or session<br />
information. For example, if you want to hide a portlet for an individual in a certain geography, store the<br />
location as an attribute in LDAP, and assign a visibility rule hiding the portlet. A user may have access to<br />
the revenue figures for all divisions all year round, but these figures should not be displayed prominently<br />
except when they are first released. For a week after the figures are first released, the figures for the<br />
employee's division should show prominently on their home page. The visibility rule hides figures for<br />
divisions the employee is not in and only shows the employee's figures the week after they are released.<br />
Visibility rules can be assigned to pages and portlets and will be triggered automatically by the portal as<br />
needed. Through the APIs, visibility rules behave like profiler rules where the only two possible profiles<br />
are show and hide. This allows visibility rules to be invoked programmatically and used in any custom<br />
application just as you would call a profiler rule.<br />
Personalizing your content 589
Related concepts:<br />
“Attribute Based Administration” on page 580<br />
Attribute based administration provides a facility to customize the layout of a page for individual<br />
authenticated users by using rules to show or hide pages or portlets. This implementation tells the portal<br />
to show or hide pages and portlets based on dynamic characteristics that are determined at runtime.<br />
Attribute Based Administration is only available for authenticated users. For anonymous users, all pages<br />
are shown.<br />
Example: Show page or portlet:<br />
View an example of a visibility rule, Show Page that shows the specified page or portlet only during the<br />
specified time period, and only to users in the Midwest. For all other dates and users, the page or portlet<br />
is hidden.<br />
Table 139. Example of a visibility rule<br />
Show page or portlet when<br />
current Date.Date is between December 12, 2006 and December 19, 2006<br />
current LdapUsers.Geography is Midwest Region<br />
Otherwise hide<br />
Rule elements<br />
Learn about the options in the rule editor for the different types of rules.<br />
Arithmetic expressions:<br />
Arithmetic expressions allow you to perform mathematical operations on resource attributes as part of<br />
your rule. When you choose this option, you can select multiple resource attributes, values, and operators<br />
(addition, subtraction, multiplication, or division) to use between them.<br />
An example use of an arithmetic expression is a profiler that profiles <strong>Web</strong> site visitors according to age.<br />
In the data you record for each visitor, it is more practical to store date of birth (which does not change),<br />
than to store age. In the evaluation in the profiler, you can use an arithmetic expression to calculate the<br />
visitor's age by subtracting the current user's year of birth from the current year (current Date.year).<br />
Arithmetic expressions are calculated according to traditional order of operations (multiplication and<br />
division are calculated before addition and subtraction. For example, 3+2*2–1/2 evaluates to 6.5). It is not<br />
possible to group expressions using parentheses.<br />
Count of (quantifiable conditions):<br />
Create an evaluation based on a count or tally of attributes that meet your criteria.<br />
In the Specify a Resource Attribute drop down, you have the option to select Use Number of Items in<br />
List. Selecting this option allows you to create an evaluation based on a count or tally of attributes that<br />
meet your criteria. When you select this option, you must select a resource and the attribute of that<br />
resource that are to be tallied when the rule executes.<br />
Note: This option can only be used in profiler and visibility rules.<br />
Because the tally is made at the time the rule is triggered, it could produce different results at different<br />
times during the session if used on an application object or a current resource. For example, you might<br />
profile a visitor's color preference as red by creating an evaluation that checks to see if the number of red<br />
items in the user's shopping cart is greater than 5. The rule syntax for this evaluation could be:<br />
Count of (shoppingCart.item.color is red) is greater than 5<br />
590 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Although you can make counts of any data type, the tally must be compared against a value or resource<br />
attribute that has a data type of number, decimal number, or integer.<br />
Current Action Count or Action Name:<br />
Current action count, like current category count, is a way to base a profiler or rule on the number of<br />
times a <strong>Web</strong> site visitor has performed certain actions. These actions must be logged using the action<br />
logging beans in order to be accessible by the rule. Current action name inspects the names of the actions<br />
logged.<br />
Current Browser Capability:<br />
Browser Capability is an application object that allows you to profile a <strong>Web</strong> site visitor based on the<br />
attributes or capabilities of the browser being used. When applicable, it appears in the rule editor as an<br />
option when you select Resource.Attribute.<br />
Purpose<br />
Browser Capability currently supports these attributes:<br />
AcceptLanguage<br />
Returns the value of the header 'accept-language' from the request object.<br />
AcceptMimeTypes<br />
Returns the value of the header 'accept' from the request object.<br />
Agent Returns the value of the header 'user-agent' from the request object. This is a lowercase string<br />
that contains information about the client software, usually the browser name or version.<br />
BrowserType<br />
Returns the browser type. Choices are available for supported browsers.<br />
FullVersion<br />
Returns the version of the browser to one point of precision. For instance, 6.1 and 6.1.1 are both<br />
returned as 6.1.<br />
MajorVersion<br />
Returns the first digit of the browser version. For instance, 6.0, 6.1 and 6.1.1 are all returned as 6.<br />
Current Date:<br />
The current Date resource contains several attributes you can use for comparison (date, day, month, time,<br />
timestamp, weekday, and year). To set values, you may enter a specific value or reference the value of a<br />
specific attribute of the same type.<br />
Current Request Attributes:<br />
Use current Request Attributes to inspect request attributes which can be set on the current JSP. You<br />
must know the name of the request attribute to use it in a rule. This request is the request passed into the<br />
content spot executing the rule. For example, you would use the portlet request to set the current Request<br />
attribute for portlets. The portlet request is not shared among portlets. For jsps directly within a <strong>Web</strong><br />
application, the current Request Attribute is the HTTP request of the <strong>Web</strong> application.<br />
Consider the following code that can be inserted into a JSP to set a request attribute:<br />
<br />
where userObject is of any Object type<br />
An example rule condition constructed to evaluate the above example might be:<br />
Personalizing your content 591
when current Request Attributes.user is equal to rob<br />
All data types are supported.<br />
Current Request Parameters:<br />
Use current Request Parameters to inspect data contained within the query string (the variables and<br />
values that appear after a question mark on a URL).<br />
To understand current Request parameters, consider the example URL http://hostname/<br />
page.jspvar1=rob&var2=expert. In this example, the request parameters are var1 and var2. Typically<br />
these are passed by GET and POST methods associated with forms. You must know the name of the<br />
request parameter that is passed by the page to use it in a rule.<br />
Given the following command:<br />
<br />
<br />
<br />
an example rule condition constructed to evaluate this example might be:<br />
when current Request.user is rob<br />
Only data types Text and List are supported.<br />
Current Session Attributes:<br />
Use current Session Attributes to inspect parameters stored within the current session object for the <strong>Web</strong><br />
site visitor. You must know the name of the parameter to use it in a rule. All data types are supported.<br />
The current session object is the session associated with the request passed into the content spot<br />
executing the rule. For example, the current session object is the portlet session, which is unique to the<br />
portlet. For jsps within a WAR, the current session object is the the http session.<br />
do Action:<br />
Within a binding, you can couple actions with profilers so certain tasks are performed when certain<br />
conditions are met. You can also indicate actions to be done under other conditions. Use the Do action,<br />
Otherwise do action, Always do action, and Exclude do action elements.<br />
Do action allows you to choose one or more actions in your project. You can also select another profiler<br />
and profile to define a combination of conditions to evaluate. These actions run when the condition in the<br />
preceding profile (or set of profiles) are met.<br />
Note: If there are multiple actions in a binding, they must all work with resources of the same type.<br />
Otherwise do action allows you to choose one or more actions that run when none of the preceding<br />
conditions in the profile (or set of profiles) are met. Within the otherwise clause, you can also select<br />
another profiler and profile to define a combination of conditions to evaluate.<br />
Always do action allows you to choose one or more actions in your project that will execute whether or<br />
not any of the preceding conditions are met.<br />
Exclude do action allows you to identify one or more actions in your project that will execute, and whose<br />
results returned will be removed from the result set generated by the other actions in the binding.<br />
Note: Exclude takes precedence over Always.<br />
592 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Include Only:<br />
Include Only is a choice within the Select Action and Recommendation Rule structures. You can select<br />
action or binding rule to be used as the include only cause. When the content is selected for the main<br />
select action or recommended rule, it is only returned if it would be selected by the Include Only clause's<br />
action rule.<br />
is:<br />
Select is to evaluate the relationship between two sides of a conditional statement.<br />
When using is, either side of the conditional statement can typically be the content returned by a<br />
resource attribute, value, or arithmetic expression. If the resource attribute is of the data type List (array,<br />
vector, or enumeration), the available evaluations become includes and includes any of. Otherwise, the<br />
choices are:<br />
v includes<br />
v includes any of<br />
v is between<br />
v is between but not equal to<br />
v is empty<br />
v is<br />
v is greater than<br />
v is greater than or equal to<br />
v is included in<br />
v is less than or equal to<br />
v is less than<br />
v is not empty<br />
v is not<br />
Is Empty/Is Not Empty<br />
The evaluations is empty and is not empty allow a rule to check for the existence of a null value or an<br />
empty list. When using either of these evaluations, the right side of the evaluation is unnecessary and is<br />
removed.<br />
Table 140. Examples of Is Empty or Is not Empty evaluations<br />
Left side of Evaluation Evaluation Result<br />
Resource Attribute (non-list type) is empty true if attribute is null, otherwise false<br />
Resource Attribute (non-list type) is not empty false if attribute is null, otherwise true<br />
Resource Attribute (list type) is empty true if list is empty, otherwise false<br />
Resource Attribute (list type) is not empty false if list is empty, otherwise true<br />
Request Attributes or Session<br />
Attributes (non-list type)<br />
Request Attributes or Session<br />
Attributes (non-list type)<br />
is empty<br />
is not empty<br />
false if attribute/parameter exists and<br />
value is not null; true if<br />
attribute/parameter does not exist or<br />
value is null<br />
true if attribute/parameter exists and<br />
value is not null; false if<br />
attribute/parameter does not exist or<br />
value is null<br />
Personalizing your content 593
Table 140. Examples of Is Empty or Is not Empty evaluations (continued)<br />
Request Attributes or Session<br />
Attributes (list type)<br />
Request Attributes or Session<br />
Attributes (list type)<br />
is empty<br />
is not empty<br />
true if attribute/parameter does not<br />
exist or list is empty; false if<br />
attribute/parameter exists and list has<br />
data<br />
false if attribute/parameter does not<br />
exist or list is empty; true if<br />
attribute/parameter exists and list has<br />
data<br />
Profiler evaluations<br />
If you choose to evaluate a profiler instead of a resource attribute in the Specify a Resource Attribute<br />
window, the available evaluations are:<br />
v is<br />
v is all of<br />
v is any of<br />
v is not<br />
v is not any of<br />
On the right side of the evaluation, the possible choices are the profiles that are defined within that<br />
profiler. You may select one or more profiles for the right side of the evaluation.<br />
order as is:<br />
Order as is is used to specify the order you want selected content to be returned and used. The default,<br />
order as is, will return data in the order it is stored in the repository. By clicking the order as is link, you<br />
can also choose order randomly or order by.<br />
Order by allows you to sort content by any of its attributes, sort by more than one attribute (and specify<br />
the order the attributes are used to sort), and specify whether you want each attribute in ascending or<br />
descending order. Order randomly returns data in a different order each time the rule executes.<br />
Profile:<br />
Profile is an arbitrary name (of your choice) that provides information about the <strong>Web</strong> site visitor, the date<br />
and time the visit occurs, or other circumstances or conditions.<br />
To better understand profiles, consider an example. Suppose you want to differentiate your <strong>Web</strong> visitors<br />
according to whether they are able to view confidential information. You might use two profiles in this<br />
scenario: Confidential and Regular.<br />
When you create a profile within a profiler, type an arbitrary, but descriptive name. Be as accurate as<br />
possible to avoid duplication or confusion with other profiles. When selecting a profile (for example,<br />
within a binding), you choose from a list of available profile names that match the profiler rule.<br />
Profiler:<br />
Profiler is a choice within the binding rule structure, and within the Specify a Resource Attribute<br />
window when constructing a profiler. Within a binding, you identify specific actions to perform that are<br />
based on the one profile within a profiler that evaluates as true.<br />
You may also select quick profiler and specify a simple evaluation in-line instead of using a separate<br />
profiler.<br />
594 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Selecting Profiler within a profile allows you to identify other profilers (in effect, nesting profilers within<br />
one another) in order to create a profiler that can evaluate as true when multiple profilers or other<br />
evaluations are true.<br />
Quick Profiler:<br />
Quick profilers are created within bindings to perform simple evaluations. By using a quick profiler, you<br />
can avoid creating simple profilers as separate rules.<br />
When you select the profile link within a binding and choose the quick profiler option, the structure for<br />
the line will change to an evaluation. The subsequent line of the binding will be the action to perform if<br />
the quick profiler evaluates as true.<br />
sender:<br />
sender must be a valid email address, list of email addresses (comma separated), or a resource attribute<br />
containing valid email addresses to whom the email will be sent.<br />
set to:<br />
Learn about the set to action and alternatives to set to.<br />
Set to is the default action within an update action rule. Set to will modify the attribute of a resource,<br />
request object, or session object according to the value you specify in the expression.<br />
Alternatives to set to include:<br />
v append<br />
v decrement by<br />
v divide by<br />
v increment by<br />
v multiply by<br />
v prepend<br />
v remove<br />
v remove all<br />
value:<br />
Value is the placeholder for the right side of an evaluation. This value can be one you enter, the value of<br />
another resource attribute, or an arithmetic expression.<br />
The value must be compatible with the data type of the other side of the expression or evaluation. For<br />
example, if you are evaluating an attribute that has the type Number, you can only compare it to<br />
resource attributes of the type Number or Decimal Number. The rule editor prevents you from choosing<br />
other resource attributes with incompatible types.<br />
Note: Making comparisons against resources in a database respects the column type and size. Therefore,<br />
to compare a value to a column typed as CHAR(10), you must include all 10 characters. For example,<br />
assume you have a table with a column named DAY that is typed as CHAR(10). A row in the table has<br />
the value of 'Monday ' rather than 'Monday' in the DAY column because DAY is compared against a<br />
profiler condition, and must have all 10 characters defined. However, if the column is typed as<br />
VARCHAR, the value in the profiler condition can be 'Monday' (without the four additional blanks).<br />
Personalizing your content 595
Mapped values<br />
Resources may be created using mapped values instead of actual values specified in the data store. This<br />
facilitates the creation of rules that are easier to understand. For example, if a column in the database<br />
held the integer values of 1, 2, or 3 indicating Yes, No, or Maybe, the resource can be configured to map<br />
integer values to words. If mapped values have been created for a resource, the mapped values will be<br />
used in the rule editor instead of the actual values. For more information on creating value mappings,<br />
refer to the documentation in Rational Application Developer for creating resources using the<br />
Personalization resource wizard.<br />
Dynamic properties<br />
In addition to predefined resource properties, you can enter properties of a resource that are not in the<br />
list. If you know the resource to handle dynamically, specify the name of the property. If the resource<br />
manages properties dynamically, the values are retrieved when the rule is evaluated.<br />
Email<br />
View the prerequisites for creating an email action or promotion within the Personalization workspace.<br />
An email promotion is an email message automatically sent to a defined list of recipients by an executing<br />
rule. email promotions can be sent once or repeatedly on regular intervals. The body of the email<br />
message is derived from a file on the server, such as a text file, an HTML file, or even a JSP containing<br />
content spots for rules. This file can be chosen from the authoring repository. The list of recipients can be<br />
derived dynamically from a rule. email promotions are implemented by using a rule event to trigger an<br />
email rule on a schedule.<br />
Before you can create an email action or promotion within the Personalization workspace, you need the<br />
following:<br />
v<br />
A user resource. This resource contains information about potential email recipients, and can be<br />
created with the Personalization resource wizard in Rational Application Developer. The resource must<br />
include a string representing the email address of the recipients (in the form “username@domain”) and<br />
must be published to the workspace server and to the run time environment.<br />
v<br />
An email body. The body of the email is a flat text, HTML or JSP file that must exist on a server<br />
accessible from the run time environment. Typically, this file is created in Rational Application<br />
Developer. The location of the file in the run time environment must be specified as a URI when<br />
creating the email rule. The email body HTML or JSP page must be on the server which is sending the<br />
email.<br />
v An email rule. The email rule specifies to whom the email should be sent, who is sending it, and<br />
identifies the email body as a URI.<br />
v<br />
A rule to determine recipients (for emails triggered on a schedule or periodically, optional for email<br />
actions). This rule can be a select content action or a binding, but must return a collection of recipients<br />
from the user resource mentioned above. The action or rule you create becomes an option of the To<br />
list. If your actions or rules are not properly defined, the To list displays “No Matching Rules”.<br />
It is possible to create email actions or promotions that are sent to a predefined address or list of<br />
addresses, simply by typing them into the To field when creating the email action or promotion.<br />
v A rule event (for emails triggered on a schedule or periodically). The rule event binds the email rule<br />
to the rule which determines the recipients. The rule event says that at a given time or times in the<br />
future, a specific rule should be executed once for each user in a list. That list is determined by the rule<br />
to determine recipients.<br />
For more information about configuring email activities, refer to Configuring email activity accounts.<br />
596 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Email administration<br />
View the steps you need to complete before your run time server can send personalized email.<br />
Before your run time server can send personalized email:<br />
v Verify that the pznscheduler.ear is as an Enterprise Application.<br />
v Have a properly configured and operating SMTP email server.<br />
JavaMail provides the SMTP required to send email. You can manage email responses from customers<br />
and outgoing error conditions (such as an unknown email address) using a standard email client.<br />
v Configure a Mail Provider using the <strong>Web</strong>Sphere Application Server administrative console.<br />
1. Click Resources > Mail > Mail Providers.<br />
2. Create a mail session to use with Personalization. By default, Personalization looks for a mail<br />
session in mail/personalizationMailSession/jndi. The JNDI name used is configurable in the<br />
PersonalizationService.properties file if you want to use Personalization with an existing mail<br />
session you have configured. If you are creating a new mail session, you must specify a Mail<br />
Transport Host. This is the mail server Personalization uses to send email. If your mail server is<br />
secured, you must specify a Mail Transport User ID and Mail Transport Password.<br />
3. Restart the server on which the email rules execute for the changes to take effect.<br />
v Additional configuration is available through the PersonalizationService.properties file. Using this<br />
file, you configure how often Personalization checks for rule events that run scheduled or repeating<br />
emails. You can also configure the mail session being used.<br />
<strong>Content</strong> spots<br />
A content spot is a placeholder or slot for a rule on a <strong>Web</strong> page. When the page is viewed, the content<br />
spot uses its rule mapping to determine which rule to execute. When the rule is executed, any actions<br />
defined within the rule take place. Each content spot has a unique name. A content spot's content type<br />
must be defined when it is created and should not be changed.<br />
<strong>Content</strong> spots are created by developers using the <strong>Content</strong> Spot wizard in Rational Application Developer<br />
and also in the Personalization workspace by selecting New > <strong>Content</strong> Spot. After creating the spot, the<br />
developer can place it on a JSP, or invoke it programmatically from any Java class.<br />
To make the spot available to the Personalization engine, it should be on the classpath of any application<br />
which invokes it. If you are using a portlet or <strong>Web</strong> project in Rational Application Developer, the<br />
classpath information updates automatically when you deploy the application.<br />
To make the content spot available to the Personalization authoring portlets, the content spot must be<br />
created in the workspace by selecting New > <strong>Content</strong> Spot. The name given to the content spot in the<br />
authoring portlet should match the display name given to it in the Rational Application Developer<br />
wizard or the name by which it is invoked using the com.ibm.websphere.personalization.<strong>Content</strong>Spot<br />
programming interface. <strong>Content</strong> spots may be placed into folders by either using a display name which<br />
fully qualifies this folder, or by setting the execution scope to match the folder at runtime. So, if you want<br />
your content spot to be called MyDataSpot in a folder called ProductData, then the content spot's display<br />
name should be specified in the wizard as ProductData/MyDataSpot.<br />
Users of the Personalization workspace specify which rule to place in a content spot. This is also known<br />
as mapping the rule to the content spot, or creating a rule mapping. When finished, a workspace user<br />
with authority to publish rules and rule mappings publishes them from the workspace server to the<br />
run-time environment. Publishing is optional, and is used to move objects between servers. <strong>Content</strong><br />
spots, rules and all other objects created in Personalization are live as soon as they are created. Rule<br />
mappings can be changed at any time and are effective immediately upon publication, or upon the rule<br />
mapping start date, whichever comes later. Rule mappings expire on the rule mapping end date.<br />
Personalizing your content 597
<strong>Content</strong> spots can be accessed in the workspace through the Personalization authoring portlets. You can<br />
see a list of all the content spots in the project, along with their content type and the name of their<br />
mapped rules, by navigating the browser view.<br />
Use of content spots is optional. The com.ibm.websphere.personalization.<strong>Content</strong>Spot class can be used to<br />
directly execute a rule by the rule name.<br />
For additional information, see Programmatically invoking rules.<br />
Rule spot mappings<br />
For a rule to be used on your <strong>Web</strong> site, it must be mapped to an existing content spot. A rule spot<br />
mapping is merely an association between a content spot and a rule. Changing the rule that is executed<br />
in the run-time environment is as easy as mapping a different rule to a content spot.<br />
You create rule spot mappings within the Personalization workspace. There are two views for rule<br />
mappings: Rule Mappings by Campaign and Rule Mappings by <strong>Content</strong> Spot. The Rule Mappings by<br />
Campaign view shows all the rule mappings under a selected campaign from a drop-down menu, and<br />
their mapped content spots and rules. This view includes the Default Mappings option which simply<br />
shows all the default mappings of each content spot. The Rule Mappings by <strong>Content</strong> Spot view shows<br />
all the rule mappings under a particular content spot, including the default mapping and any mappings<br />
under campaigns. You can change the personalization behavior of your <strong>Web</strong> site by mapping a different<br />
rule to a given content spot.<br />
Although only one rule is executed when a content spot bean is invoked, you can have multiple rules<br />
simultaneously mapped to a content spot by using campaigns. When you create a campaign, you can<br />
create a separate set of rule spot mappings for any or all of the content spots in your project.<br />
When multiple campaigns are simultaneously active, campaign priorities and splits are used to determine<br />
the rule to execute. When multiple active campaigns have the same priority, the splits are used to<br />
calculate a percentage chance that one mapping will be used instead of the others.<br />
Splits can be changed for each rule spot mapping.<br />
Rule spot mappings can be duplicated and moved from one campaign to another. The start and end date<br />
of the rule spot mapping may both be modified if they fall outside the range of dates for the campaign to<br />
which the spot mapping is moved. Multiple mappings can be added to the same spot within a campaign.<br />
Campaigns<br />
Campaigns are a means of organizing and implementing sets of personalization behavior. A useful<br />
analogy is an advertising campaign, which targets specific audiences with high-priority information for a<br />
specified period of time. Campaigns achieve this by allowing you to preferentially display<br />
campaign-related content in the content spots of a <strong>Web</strong> site. To accomplish such a goal, a campaign<br />
contains a set of rule-to-content spot mappings, start dates, and stop dates.<br />
Users can create and manage campaigns through the Personalization Authoring Portlet. Campaigns are<br />
live as soon as their start date is reached and they may be published to other servers together with rules.<br />
To create a campaign, select New > Campaign. To add rule mappings to a campaign, select the<br />
campaign, and select New > Rule Mapping.<br />
When a campaign is active in the run-time environment, the rule mappings take precedence over the<br />
default rule mappings for content spots the campaign references. For example, a seasonal campaign<br />
might contain certain rule mappings that result in the display of special offers to a <strong>Web</strong> site visitor. A<br />
campaign can contain rule mappings for some or all of the content spots on a site.<br />
598 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
It is possible to have multiple campaigns active simultaneously. When this happens, the priority settings<br />
of the active campaigns dictate which campaign's rule mapping will be used. The campaign with the<br />
highest priority 'wins' and its rule mappings are used. In the event that multiple active campaigns have<br />
the same priority setting, the rule mapping used for a given content spot is determined randomly<br />
according to the relative split ratios.<br />
Application object<br />
An application object is a java object existing at a known location in the request context. Defining an<br />
application object involves specifying the object’s class name (as a Java class), and specifying a key (string<br />
key into a session attribute) to find it in the request context. Personalization calls methods on these<br />
objects during rule execution and uses their results in its decision making. Application Objects that<br />
implement the SelfInitializingApplicationObject interface are automatically instantiated as needed by<br />
Personalization.<br />
Request Context<br />
This is the interface used to access various attributes for rules. For HTTP contexts, it provides access to<br />
the HttpRequest and HttpSession attributes. For non-HTTP contexts, it provides the same interface to a<br />
surrogate for the request and session.<br />
The request context, and any request values accessed via the request context, are only valid for the life of<br />
the request.<br />
The Request Context string is used in caching lookups. The lookup is created by using a user-specified<br />
string combined with query values as the lookup key. The user-specified string should uniquely represent<br />
the current Request Context. This key is stored under ibm.wcp.cache.user.key as a request attribute or as<br />
a session attribute with the request attribute taking precedence.<br />
Accessing the Request Context<br />
The Request Context provides the Personalization rules engine with the data and environmental<br />
information needed for rules processing. In other words, the Request Context contains all the input to<br />
execute Personalization content spots and rules. This includes simple inputs like request and session data,<br />
and more advanced input like the user object.<br />
You can access the Request Context from a content spot by first using the setRequest method of the<br />
content spot to back the content spot with a request, and then by calling getContext to retrieve the<br />
context. You can also use the Request Context to call directly into the ResourceDomain3 and<br />
Resource<strong>Manager</strong>3 APIs.<br />
The Request Context allows you to retrieve session, request, portlet attribute, date, cookie, and other data<br />
and environmental information from the resource layer.<br />
The Request Context includes:<br />
v Session<br />
The session information identifies the HttpSession object that is associated with the current user.<br />
v Request date<br />
This request date is the date the HTTP request was received. This information supports rules that have<br />
date-dependent actions.<br />
Since Personalization uses the Request Context to contain all the rule input, the Request Context must be<br />
set onto the content spot prior to rule execution. The code with the content spot’s useBean tag must be<br />
similar to:<br />
Personalizing your content 599
<br />
In the section above, the jsp:useBean tag constructs the yourco.goldpromo.BannerSpot class and stores an<br />
instance of that class into the local variable gold_promo_bean. The next line calls setRequest to put the<br />
HttpServletRequest or PortletRequest onto the newly constructed content spot bean. The content spot<br />
then implicitly constructs a Request Context which is backed by the given HttpServletRequest or<br />
PortletRequest. This Request Context then provides access to that request’s parameters and attributes and<br />
attributes of the session through the com.ibm.websphere.personalization.RequestContext interface.<br />
In some cases, it may be useful to call into a content spot without having access to an HttpServletRequest<br />
or PortletRequest. The interface com.ibm.websphere.personalization.PznRequestObjectInterface can be<br />
used in these situations. A implementation of this class called<br />
com.ibm.websphere.personalization.PznRequestObjectImplementor is provided for convenience.<br />
Query framework<br />
The query framework is an object representation of a query. The framework is not specifically oriented<br />
toward querying either object or relational databases. A set of common operators is defined, but what an<br />
attribute represents is left to the interpreter of the query.<br />
Since the framework makes no assumptions about how the name of an attribute is translated to the object<br />
it represents, object trees and graphs, relational models, or almost any other data structure could be<br />
queried with the framework. The query framework is used to pass query information from the runtime<br />
engine into the resource engine. It is up to the resource collection to interpret the query. Traditionally, this<br />
interpretation of the query object is done through a callback class, which is essentially a translator from<br />
the query framework into a protocol-specific query language.<br />
Using rules<br />
Rules are used to define how your <strong>Web</strong> site interacts with individual and groups of <strong>Web</strong> site visitors.<br />
Rules are composed of easy-to-read logic statements that, in their final form, specify how to evaluate<br />
various conditions and what actions to take based on those conditions.<br />
The Personalization interface<br />
The Portal Personalization user interface consists of three portlets: the Personalization Navigator,<br />
Personalization Editor, and the Personalized List.<br />
These portlets are automatically installed with <strong>IBM</strong> <strong>Web</strong>Sphere Portal. Although personalization services<br />
can be used in portlets supporting remote WSRP services, the personalization portlets do not support<br />
being used as a remote WSRP service.<br />
Personalization Navigator<br />
The Personalization Navigator is the main navigation interface. Users explore the repository with a tree<br />
structure--directories display in the left window, and elements within a selected directory display in the<br />
right window. The view can be modified to eliminate the left window, and instead list all directories and<br />
elements in a hierarchical list. A drop-down list enables users to show all elements in Personalization, or<br />
filter the view to display a single element type (such as rules or campaigns). The following table shows<br />
which views are available:<br />
600 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 141. Available views in the Personalization Navigator<br />
List view Description Properties shown<br />
Browse Personalization Resources<br />
(tree)<br />
Browse Rules (tree)<br />
Campaigns (list)<br />
Rule Mappings by Campaign (list)<br />
Collections (list)<br />
Events<br />
This tree view will show only<br />
artifacts created by Personalization.<br />
For example, rules, campaigns,<br />
resource collections.<br />
This tree view will show only<br />
Personalization rules. This view will<br />
also show the type of each rule; for<br />
example, Select Action or Profiler.<br />
Campaigns will be a specialized list<br />
view. In the action bar for the view,<br />
there will be a scope drop down. The<br />
scope drop down will allow the user<br />
to pick an execution scope. The<br />
campaigns from the scope context of<br />
that execution scope will be shown.<br />
When the scope setting is global as<br />
by default, there will be no drop<br />
down and all campaigns will be<br />
shown. As with all views, the Edit<br />
Mappings action will be available<br />
when a campaign is selected.<br />
This view is launched either by the<br />
drop down for selecting a view, or by<br />
the Edit Mappings action for a<br />
campaign. The view shows a list of<br />
mappings for a given campaign.<br />
This view will allow a user to see all<br />
resource collections and application<br />
objects created under a collection.<br />
This view will allow a user to see all<br />
rule events on the system.<br />
Name, Creator, Last Modified, Node<br />
Type<br />
Name, Creator, Last Modified, Return<br />
Type, Rule Type<br />
Name, Priority, Split, Start Date, End<br />
Date<br />
Spot Name, Rule Name, <strong>Content</strong><br />
Type, Split, Start Date, End Date<br />
Collection Name, <strong>IBM</strong> Java <strong>Content</strong><br />
Repository(True / False), Collection<br />
Type (User / <strong>Content</strong>)<br />
In addition to navigation, the Personalization Navigator is where users control the repository content.<br />
Users can move, copy, import and delete elements, and create new elements. When users create a new<br />
element (by selecting New from the Personalization Navigator menu), they are automatically taken to the<br />
Personalization Editor.<br />
You can also access the Resource Permissions portlet to set access control on individual personalization<br />
items from the Personalization Navigator by clicking Edit Access > Extra Actions.<br />
Personalization Editor<br />
This portlet is where users edit element content or information. Selecting a new element from the<br />
Personalization Navigator activates the edit mode, where users enter data, depending on the element<br />
chosen. To edit an existing element, users highlight the item in the Personalization Navigator. They return<br />
to the Personalization Editor and click Edit on the Edit item tab.<br />
Personalized List<br />
The Personalized List portlet allows a user to display personalized content without having to build a<br />
custom JSP portlet. Each portlet can display a list of resources and show details for each returned<br />
resource. Groups of related resources may be categorized for easy viewing. When a more detailed view of<br />
a piece of content is required, a custom detail JSP may be specified. Different instances of the portlet may<br />
Personalizing your content 601
e used across <strong>Web</strong>Sphere Portal to quickly and easily deploy customized information to users.<br />
Personalization rules<br />
<strong>Web</strong>Sphere Portal Personalization sends published rules across HTTP to a servlet which resides on each<br />
personalization server. This servlet can receive publishing data or initiate new publishing jobs. When a<br />
user begins a publishing job from the personalization authoring environment, the local servlet is provided<br />
with the set of information necessary to complete the job. The local servlet contacts the destination<br />
endpoint servlet (which could be the same servlet) and sends its data to it. The destination servlet reports<br />
success or failure.<br />
Publishing considerations<br />
If you are publishing personalization rules in a clustered server configuration, to an IPv6 host, or using a<br />
<strong>Web</strong> <strong>Content</strong> Management resource collection classes, there are unique considerations that you should be<br />
familiar with.<br />
Clusters<br />
Publishing to or from a clustered environment requires no special configuration. The specific cluster<br />
member that will perform the publishing task is chosen by the same rules that apply to incoming <strong>Web</strong><br />
requests (because the publishing mechanism uses HTTP messages). At the end of a successful publishing<br />
job, Personalization flushes its caches for that workspace to ensure that any subsequent personalized<br />
content will be as current as possible.<br />
When you first used the Personalization authoring portlets on a cluster to publish objects, the Publish<br />
Status dialog (accessed through More Actions > Publish > View Status) only shows information about<br />
the publish jobs initiated on that cluster member. To make all publishing jobs visible, set the<br />
pzn.publishServlet.url parameter described above to be a specific cluster member. Set the URL to point<br />
to a single machine at the internal HTTP port: The default port number for HTTP is 10040, and the<br />
default port number for HTTPS is 10035.<br />
For example, supposed the cluster head is visible at http://intranet.yourco.com, and the cluster<br />
members are accessible at http://intranet01.yourco.com and http://intranet02.yourco.com. If you set<br />
the publish servlet URL parameter to http://intranet01.yourco.com:10040/wps/pznpublish/<br />
pznpublishservlet you force all publishing requests to run on this single machine.<br />
Note: Publish to a single node in the cluster as opposed to the cluster head, making sure you do not<br />
pass through a <strong>Web</strong> server.<br />
IPv6 hosts<br />
The server which initiates the publish command must have the IPv6 protocol stack installed and<br />
available. When publishing from the command line using pznload to an IPv6 host, you may need to set<br />
the system environment variable <strong>IBM</strong>_JAVA_OPTIONS to a value of -Djava.net.preferIPv4Stack=false<br />
-Djava.net.preferIPv6Addresses=true on the system where pznload is run.<br />
Resource collection classes<br />
You use resource collections in Personalization to access LDAP, <strong>IBM</strong> <strong>Content</strong> <strong>Manager</strong>, the Portal user<br />
object, or other custom sources of data.<br />
The DB2 <strong>Content</strong> <strong>Manager</strong> run-time edition and the <strong>Web</strong>Sphere Portal user resource collection classes are<br />
installed in the Personalization shared library. Therefore, you do not need to move these classes between<br />
systems because they are already installed with Personalization.<br />
For LDAP resources, Rational Application Developer provides a wizard to generate classes which<br />
implement the resource collection interfaces.<br />
602 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
To use the authoring portlet, all resource collection classes must be in the class path of the Personalization<br />
authoring portlet. The rule editor uses these classes to display the list of attributes belonging to the<br />
collection. If the resource collection classes are not found by the rule editor, you could see the following<br />
message in a JavaScript alert.<br />
Figure 2. Message displayed when resource classes cannot be found<br />
The resource collection classes must also exist on the class path of the application invoking the<br />
Personalization rules. The Personalization rules engine finds the resource collection classes using the class<br />
path of the application which invokes the rules. If you use the Personalized List portlet to display rule<br />
results, this application is the Personalized List application pznruleportlet.war in the Personalization<br />
Lists.ear.<br />
So, the classes should be accessible to both the rule editor and the personalized application. An<br />
application server shared library is the easiest way to accomplish this. You can configure the shared<br />
library using the Application Server Administrative Console. For more information, see the sections on<br />
the shared library in the <strong>Web</strong>Sphere Application Server Information Center.<br />
You handle updates and additions to the resource collection classes just as you would handle updates to<br />
any application binary or JSP. These classes are not affected by Personalization publishing. The definition<br />
of the resource collection which Personalization uses to associate a resource collection with its classes is<br />
stored in the <strong>Content</strong> <strong>Manager</strong> repository. Initially represented by the .hrf file, this definition is published<br />
along with the rules and campaigns.<br />
Publishing personalization rules<br />
After developing personalization rules, you publish the rules.<br />
1. To begin publishing personalization rules, you create an object in the authoring environment which<br />
describes the target endpoint. This endpoint definition is referred to as a publish server and is created<br />
and managed in a manner similar to creating and managing rules and campaigns.<br />
Personalizing your content 603
Figure 3. Creating a new publish server<br />
The server requires one field, which is the URL associated with the publish servlet for that endpoint.<br />
The publish server may also define which workspace will receive publishing data. Personalization<br />
operates in the default <strong>Content</strong> <strong>Manager</strong> run-time edition workspace after installation. If the target<br />
workspace field is empty, then the publish server uses the default workspace. (You need to set the<br />
workspace field if you are configuring scenario three described above.)<br />
The last option is whether or not to delete remote objects that have been deleted on the local system.<br />
The default is Smart Delete, which simply removes items that are no longer present. If you do not<br />
have delete permission on the remote server you could select the Leave deleted resources on server<br />
option.<br />
2. After you create a publish server, you can publish either the entire workspace or a set of objects<br />
within it. You specify either of these options by selecting the More Actions > Publish submenu<br />
604 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Figure 4. Start a publish job<br />
The Publish page displays what will be published. This page requires the user to choose a destination<br />
publish server and any necessary authentication information. If the remote system is secured and is<br />
not a member of the current server’s Single Sign-On domain you can enter a user name and password<br />
in the provided fields. The values for user and password are stored in the <strong>Web</strong>Sphere Portal<br />
credential vault and are not accessible to any other user.<br />
3. Finally, click Publish to launch the publish job.<br />
Personalizing your content 605
Figure 5. Publish page<br />
If the local system is able to locate and authenticate with the remote publish server, you are returned<br />
to the main navigator view, and you see the Personalization message EJPVP20001I at the top of the<br />
portlet. Then, the publish job runs as a background process on the local server.<br />
4. Click the View the details of this job link to open the publish status window to see information<br />
about the progress and success or failure of the publish job.<br />
606 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Figure 6.<br />
Publishing and deleting personalization rules using a script<br />
You can use a <strong>Web</strong>Sphere Portal Personalization provided script, pznload, to export, publish, and delete<br />
Personalization rules on local or remote servers. You can script the delivery of rules and campaigns from<br />
staging to production, or the offline publishing between disconnected systems (such as when production<br />
servers are secured behind a firewall). You can use this function to quickly revert production servers to<br />
an earlier state.<br />
Publishing via the command-line is a two step process. First, you export the personalization rules you<br />
want to transfer from the authoring environment to a remote system. After exporting and saving the<br />
required objects, you use the pznload script to send this data to the appropriate server.<br />
1. You can export the personalization rules on the site or you can run the pzload command. Select one<br />
of the following methods to export personalization objects from the site:<br />
v<br />
Click More Actions > Export in the Personalization Navigator. You are prompted for a location to<br />
save a nodes file. This file contains an XML representation of all the currently selected<br />
personalization objects. You can export entire folders.<br />
Personalizing your content 607
Figure 7. Exporting a folder to the file system<br />
v Open a command prompt and run the following command, where out designates the location of<br />
the exported data on your local system and targetPath is the object (and children) that will be<br />
exported:<br />
pznload --export --out filename --serverUrl url --targetPath path--targetWorkspace workspace --username username --pas<br />
2. Use pznload to send this data to the appropriate server. The pznload script is located in the following<br />
directory: PortalServer_root/pzn/prereq.pzn/publish/<br />
a. pznload.bat --serverUrl url --targetPath path--targetWorkspace workspace --username username<br />
--password password<br />
b. pznload.sh --serverUrl url --targetPath path --targetWorkspace workspace --username username<br />
--password password<br />
This program accepts a number of command line options and a set of nodes files to publish. Invoke<br />
pznload with the --help option to see a list of all options. The most important arguments are described<br />
below:<br />
serverUrl<br />
The URL of the remote publish servlet. If you do not specify a value the program will attempt<br />
to connect to a <strong>Web</strong>Sphere Portal server running on the local machine.<br />
targetWorkspace<br />
The name of the workspace to publish to. The default workspace name on all <strong>IBM</strong> <strong>Content</strong><br />
<strong>Manager</strong> run time edition installations is RULESWORKSPACE.<br />
targetPath<br />
The location in the target workspace which will be the parent for the published nodes. The<br />
target path must exist prior to publishing. Example: If the Export function was used on the<br />
folder /Projects/HR website, then the target path should be specified as /Projects so that the<br />
published resources are once again located in /Projects/HR website.<br />
username<br />
A valid user on the target system with sufficient access rights.<br />
608 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
password<br />
The password for the user<br />
3. To delete objects, run the following command where TargetPath is the object (and all associated<br />
children) that will be deleted.<br />
pznload --delete --targetPath path -serverUrl url --targetPath path --targetWorkspace workspace --username username<br />
After a publish is started, you see status messages in the command console.<br />
Publishing personalization rules over SSL<br />
<strong>Web</strong>Sphere Portal Personalization uses the built-in SSL capabilities of <strong>Web</strong>Sphere Application Server to<br />
provide secure publishing across unprotected networks. Your personalized portal can benefit from the full<br />
range of authentication repositories supported by <strong>Web</strong>Sphere Application Server security.<br />
In some environments even SSL publishing may not be secure enough. The pznload command-line<br />
program lets you fully control the transportation of the rules and campaigns during publish. You can<br />
encrypt the exported .nodes file and send it using email, or you can use another secure channel such as<br />
physical media transported between the staging and production servers.<br />
1. Enable SSL between the personalization servers. To enable Personalization publishing over SSL, see<br />
the Personalization Navigator’s inline help: click the question mark in the upper right corner of the<br />
portlet, and scroll down to the bottom of the page to locate the link to the help topic on publishing.<br />
2. Alter the publish servlet URL for secure publishing. If the remote server is not using the default<br />
HTTPS port of 443, modify the URL by adding a colon and the port number immediately after the<br />
host name.<br />
Figure 8. Altering the publish servlet URL for secure publishing by adding a colon and the port number after the host<br />
name for remote servers not using the default HTTPs port of 443.<br />
3. Configure the personalization server from which you will be publishing to use the HTTPS protocol.<br />
To determine whether a particular URL is valid, point your browser to that location and enter your<br />
username and password for the system. If you see the message Publish servlet available and all SSL<br />
certificates have been properly imported, you should be able to publish. You can change this URL to<br />
redirect all publish jobs through a specific cluster member. If you encounter an error message that<br />
indicates the publish service was not available, the local publish servlet may not be configured<br />
correctly. To configure the local publish servlet URL:<br />
Personalizing your content 609
a. From the Portal Administration page, select Portlet Management > Portlets.<br />
b. Locate the Personalization Navigator portlet in the list.<br />
c. Click Configure portlet to configure the portlet.<br />
d. Add a new portlet parameter whose name is pzn.publishServlet.url and specify the appropriate<br />
value.<br />
Figure 9. Configuring the local publish service<br />
If a Personalization server is configured to use a nonstandard HTTPS port or context root, or if you see<br />
messages such as EJPVP20002E: The local publish service was not available when publishing from<br />
the authoring environment, the local publish servlet URL might be incorrect.<br />
Monitoring the status of publishing<br />
After you start a job to publish a personalization rule, you can monitor the status to make sure the<br />
publish completes successfully.<br />
All publish jobs that are currently running or have been completed are displayed in the status view. If an<br />
error occurs, to get more information, turn on the Java Run time Environment tracing for <strong>Web</strong>Sphere on<br />
the client system or examine the error and trace logs on the server system.<br />
1. To see the status of all current publish jobs, select More Actions > Publish > View Status.<br />
610 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Figure 10. Publish status window<br />
2. After a job has completed (successfully or otherwise) a close icon displays in the upper right corner<br />
that you can click to remove the job from the list of monitored jobs. If you click this icon, you can no<br />
longer view the status of that job.<br />
The <strong>Web</strong> <strong>Content</strong> resource collection<br />
The <strong>Web</strong> <strong>Content</strong> resource collection is installed and configured out of the box. This predefined collection<br />
allows you to write rules that select lists of content from <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. Rules specify which<br />
<strong>Web</strong> content to show in a Portal Personalization component in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
The Personalization component is similar to a menu component in that its content is decided by a rule.<br />
The Personalization component specifies how the content returned from the rule is presented and points<br />
to a rule to decide what content to display. That rule may make use of the <strong>Web</strong> <strong>Content</strong> resource<br />
collection to select a list of <strong>Web</strong> content.<br />
The <strong>Web</strong> <strong>Content</strong> resource collection allows rules based on the following attributes:<br />
Table 142. Attributes used in Personalization rules for <strong>Web</strong> <strong>Content</strong> resource collections. The names and<br />
descriptions of <strong>Web</strong> <strong>Content</strong> attributes that you can use in Personalization rules<br />
Attribute<br />
Description<br />
Author<br />
Authoring template<br />
Authoring Template Properties<br />
Category<br />
Creation date<br />
The author of the content as set in <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>. This attribute value is stored as a<br />
Distinguished name; for example,<br />
uid=wpsadmin,o=defaultWimFileBasedRealm.<br />
The authoring template used to create the <strong>Web</strong> content.<br />
The value may be selected using an authoring template<br />
picker.<br />
All authoring template properties that are available to be<br />
used within rules.<br />
The categories to which the piece of <strong>Web</strong> content<br />
belongs. If you are matching this attribute to a value<br />
from another resource collection or application object, the<br />
format for the value should be /parentcategory/<br />
childcategory.<br />
The date the piece of <strong>Web</strong> content was created.<br />
Personalizing your content 611
Table 142. Attributes used in Personalization rules for <strong>Web</strong> <strong>Content</strong> resource collections (continued). The names<br />
and descriptions of <strong>Web</strong> <strong>Content</strong> attributes that you can use in Personalization rules<br />
Attribute<br />
Description<br />
Creator<br />
Description<br />
Expiration date<br />
Full text<br />
Keywords<br />
Last modified date<br />
Last modifier<br />
Name<br />
The person who first created this piece of <strong>Web</strong> content.<br />
This attribute value is stored as a Distinguished name;<br />
for example, uid=wpsadmin,o=defaultWimFileBasedRealm.<br />
The description provided for the piece of <strong>Web</strong> content.<br />
The date the content is set to expire in <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>.<br />
Use this attribute to search the full text of a piece of <strong>Web</strong><br />
content. It should be used sparingly. This attribute may<br />
not perform as quickly as other attributes when used in<br />
rules, especially when used in conjunction with other<br />
attributes.<br />
The keywords stored on the piece of <strong>Web</strong> content.<br />
The date a modification last occurred on the piece of<br />
content.<br />
The last person to modify the piece of content. This<br />
attribute value is stored as a Distinguished name; for<br />
example, uid=wpsadmin,o=defaultWimFileBasedRealm.<br />
The name of the piece of <strong>Web</strong> content as specified in<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Position<br />
Publish date<br />
Location<br />
Title<br />
Unique Identifier<br />
This property uses case-insensitive matching. For<br />
example, a piece of content with a name of<br />
"Sample<strong>Content</strong>" matches "Sample<strong>Content</strong>,"<br />
"samplecontent," "SAMPLECONTENT," and other<br />
variations.<br />
The zero-based numeric position of the piece of content<br />
among its siblings in the nodes of the content hierarchy.<br />
<strong>Web</strong> <strong>Content</strong> resource collections use absolute<br />
positioning and relative positioning to support the<br />
ordering of content items. The algorithm used to<br />
generate position numbers results in fractional and<br />
negative values that control the display order of a set of<br />
child content items under a given area of a site.<br />
For more information, refer to the description of the<br />
position attribute in the Command reference for the Portal<br />
Scripting Interface.<br />
The publish date as specified in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
The document library or site area from which to select<br />
content. If specified as a string, it should be in the format<br />
/Library/Site/SiteArea. You can also specify<br />
*/Site/SiteArea to search by site area in all document<br />
libraries.<br />
Rules from previous versions with the Site Area attribute<br />
will automatically reference Location. If the site area was<br />
specified as a string, ensure the string starts with<br />
/Library or an asterisk (*).<br />
The display title as specified in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Use this attribute to select pieces of <strong>Web</strong> <strong>Content</strong>.<br />
612 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
When a text, short text, numeric, or date component is added to an authoring template in <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>, that component will appear as an attribute on the resource collection under the Authoring<br />
Template Properties menu item. For example, if an authoring template is created for "Benefit<br />
Announcement" which includes an "enrollment begin" date component, you will have an "Enrollment<br />
begin" attribute on the <strong>Web</strong> <strong>Content</strong> resource collection. This new attribute would appear under a<br />
submenu for "Benefit Announcement". This will allow you to write rules based on custom metadata you<br />
attach to <strong>Web</strong> content. The performance of the standard metadata will do better compared to the<br />
performance of rules using attributes added to authoring templates. The use of keywords and categories<br />
should be considered since these are part of the standard metadata of <strong>Web</strong> content.<br />
If too many authoring template properties have been designed, the Authoring Template Properties menu<br />
may become to large to be easily used. Once there are more than 15 authoring template properties, they<br />
are replaced with a chooser to select properties. This threshold can be adjusted by changing the value of<br />
wcm.authoringTemplate.menu.threshold in wp_profile_root/PortalServer/config/config/services/<br />
PersonalizationService.properties.<br />
Personalization rules querying on short text run faster than those querying on text. Short text components<br />
can only store 254 characters. Text components can store an unlimited number of characters, but<br />
personalization rules will only see the first 254 characters. Anything after that is ignored when the rule<br />
runs.<br />
Note: All attributes which store a reference to a person are stored as distinguished names. This format<br />
will match against the value of the Distinguish Name attribute on the Portal User resource collection. For<br />
instance, to select all documents authored by the user viewing the portlet, you would write, "Author is<br />
current Portal Users.Distinguished Name."<br />
The Portal User resource collection<br />
Portal Personalization comes with a Portal User resource collection. This collection uses public APIs<br />
provided by <strong>IBM</strong> <strong>Web</strong>Sphere Portal to access user information.<br />
The collection allows rules to be written based on all properties of the <strong>Web</strong>Sphere Portal user.<br />
Personalizing your content 613
You can also use the Portal User resource collection to profile based on the property extension database.<br />
Use the Manage Properties menu option in the rule editor to add or remove dynamic or Lookaside<br />
properties from the collection. You may add any properties to this collection, but for them to function at<br />
runtime some values must be stored in Virtual Member <strong>Manager</strong> for the properties being used and the<br />
user executing the rule. The Manage Properties screen can also be used if the server on which you author<br />
rules has a different Virtual Member <strong>Manager</strong> configuration than the one on which the rules are<br />
deployed.<br />
The resource collection is not new to <strong>Web</strong>Sphere Portal Version 7.0, but it now shows the list of Portal<br />
User attributes automatically. You no longer have to add each <strong>Web</strong>Sphere Portal property you want to<br />
use as a dynamic property in the Personalization rule editor. You do not need to generate Java code to<br />
use this collection or configure a security ID translator as is often required for Personalization User<br />
collections. You cannot currently write rules to select or recommend a list of users from this collection.<br />
This collection works with update rules as long as your repository allows writes. The collection works as<br />
if it is an LDAP collection that is automatically configured for the LDAP server.<br />
You may continue to use your existing LDAP or custom user resource collections, and even use them in<br />
the same rules as the Portal User Collection. This is useful if you have multiple user repositories, you a<br />
have repository that is generally not used for Portal and only used for Personalization rules, or you<br />
requirements for attribute value translation ('CHI' should be interpreted as 'Chicago' for instance).<br />
Using the Groups Attribute<br />
The Groups attribute on the Portal User object exposes the distinguished names (dn) of the groups. An<br />
example of a distinguished name of a group is cn=wpsadmins,o=defaultWimFileBasedRealm, though the<br />
exact form will vary by your installation. Using distinguished name allows for more exact matching of<br />
groups, since it is possible for two groups to share a common name, such as wpsadmins. The includes<br />
operator may be used for inexact string matching, but will perform slightly slower. When possible, use<br />
the is operator and match to the distinguished name of the group.<br />
Adding and extending user attributes<br />
You can make attributes from your user registry available to the personalization portlet as required.<br />
However, in most cases the schema for your user registry does not match the default schema for Virtual<br />
Member <strong>Manager</strong> (VMM). For this reason, you must first extend the default VMM schema by adding<br />
attributes that you must then map from the VMM schema to your user registry.<br />
Do the following to make user attributes available:<br />
1. Extend the default VMM schema by adding attributes that you can map to your user registry. For<br />
instructions, see the following topic in the Installation section of this Information Center: Adding<br />
attributes. Refer to the topic that corresponds to your operating system and environment<br />
configuration.<br />
2. Map the attributes you added to the VMM schema to the attributes in your user registry. For<br />
instructions, see the following topic in the Installation section of this Information Center: Mapping<br />
attributes. Refer to the topic that corresponds to your operating system and environment<br />
configuration.<br />
Configuring which properties show up for the Portal User Collection<br />
The Personalization rule editor discovers the list of properties to show in rules through a public API<br />
(com.ibm.portal.um.PumaProfile). The list exposed by this API is configurable in your Member <strong>Manager</strong><br />
configuration.<br />
614 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
You may have a long list of properties that are available on the portal user, but do not want all of them<br />
to show up in the Personalization rule editor. For this purpose, set the property wmm.property.hide in the<br />
file wp_profile_root/PortalServer/config/config/services/PersonalizationService.properties as<br />
illustrated in this example:<br />
# Use this configuration property to control which WMM properties show<br />
# in the Personalization rule editor. wmm.property.hide will only<br />
# hide those properties which are introspected from the WMM configuration.<br />
wmm.property.hide=mobile,pager,roomNumber,secretary,carLicense,telephoneNumber,facsimileTelephoneNumber,<br />
seeAlso,userPassword,ibm-firstWorkDayOfWeek,ibm-alternativeCalendar,ibm-preferredCalendar,<br />
ibm-firstDayOfWeek,ibm-primaryEmail,ibm-otherEmail,ibm-generationQualifier,labeledURI,createTimestamp,<br />
modifyTimestamp,ibm-middleName,ibm-timeZone,initials,jpegPhoto,WCM\:USERDATA,groups<br />
The Portal User collection and the Personalization Server installed without Portal<br />
The Portal User collection can only be used in rules running within a <strong>Web</strong>Sphere Portal installation. The<br />
system will not prevent you from publishing rules using this collection to a Personalization Server<br />
installed outside of <strong>Web</strong>Sphere Portal, but the rules will not function in this environment since Virtual<br />
Member <strong>Manager</strong> is not available. When <strong>Web</strong>Sphere Portal is installed, the security context of the logged<br />
in user must have access (through Portal resource permissions) to the user information being accessed<br />
through the collection.<br />
LikeMinds Recommendations<br />
Personalization contains a dynamic recommendation system based on LikeMinds. LikeMinds is software<br />
that is used with your e-commerce applications. LikeMinds analyzes user interactions that occur on your<br />
<strong>Web</strong> site and generates real time predictions and recommendations to your <strong>Web</strong> site users.<br />
Real time predictions are generated by three LikeMinds engines using recommendation rules within<br />
Personalization. These rules, called recommend content, base their predictions on transactions logged<br />
through Personalization's rating and action beans.<br />
When a user visits your <strong>Web</strong> site, rating and action beans log captured transactional data. If your<br />
e-commerce <strong>Web</strong> site is set up so that users can rate content (or products), you use Rating beans to<br />
capture rating data. Similarly, if you use shopping cart technology, you use action logging beans to<br />
capture content affinity behavior to capture shopping activity. Both rating and action data is stored in<br />
your database. For example, the following types of transactions may be recorded:<br />
v Products a user has purchased<br />
v Items added or removed from a shopping basket<br />
v A history of the user's navigation throughout the application<br />
v Products that go best with a product that the user has already selected<br />
v Any action or series of actions that are meaningful for a site<br />
Using recommend content rules, LikeMinds surfaces results through a set of recommendation engines.<br />
These engines predict relevant content for users based on their past <strong>Web</strong> browsing habits.<br />
Typically, after a user has rated a minimum number of items or completed a minimum number of<br />
transaction activities, that user is assigned a set of mentors. A mentor is a specially designated user who<br />
has visited the e-commerce application a number of times, and whose profile is similar to the user's.<br />
LikeMinds uses a technique called collaborative filtering to build a mentor's profile for each user to<br />
predict how much a user will like particular items and which items that user will enjoy, buy, or add to<br />
their shopping cart.<br />
Predicting a matching product to go with a user's selected product, independent of actual user<br />
preferences, is accomplished by the discovery of probable pairs of product matches to be recommended.<br />
This concept is called item affinity and uses a family of algorithms different from collaborative filtering.<br />
Personalizing your content 615
While collaborative filtering uses its algorithms to discern the highly variable affinities between<br />
individual <strong>Web</strong>-surfers, the item affinity approach looks at relationships that can exist between items.<br />
You can use LikeMinds in a variety of situations, including:<br />
v eRetailer promotion and personalization <strong>Web</strong> sites<br />
v Financial portal content recommendation and personalization <strong>Web</strong> sites<br />
v Help desk and/or on-line technical support content recommendation <strong>Web</strong> sites<br />
v Gift recommendations for eRetailer<br />
v Music, movie, book, or other product rating and recommendations<br />
v Travel bureau trip planners<br />
LikeMinds Recommendation Engine architecture<br />
Get an overview of the functioning and architecture of the LikeMinds Recommendation Engine. In order<br />
to build your own recommendation application you need to customize the LikeMinds Recommendation<br />
Engine settings to work with your database and <strong>Web</strong> applications.<br />
The LikeMinds Recommendation Engine captures data based on user actions. From this set of actions,<br />
LikeMinds bases its construction of mentor sets and subsequent predictions. User actions can include:<br />
v A history of the user's navigation throughout the application<br />
v Products that go best with a product that the user has already selected<br />
v Products purchased<br />
v Items added to or removed from a shopping basket<br />
The current user preferences are collected by the engine in the so-called rating vector and used to identify<br />
those people most like the current user.<br />
People with a behavior similar to the current user become mentors for that user. The LikeMinds<br />
Recommendation Engine assigns a numeric weight to each mentor based on the level of similarity of the<br />
rating vector to yours. The more the mentor's rating values resemble a user and the more products the<br />
mentor has rated, the greater the weight.<br />
The LikeMinds Recommendation Engine assembles a set of recommendations by finding the products<br />
each mentor recommends and creating a prediction vector containing the predicted rating of each<br />
product. With each predicted rating, it also stores a numeric value representing the confidence for the<br />
rating.<br />
The confidence values determine the quality of predictions. The LikeMinds Recommendation Engine<br />
assigns a confidence level to each recommendation based on how many users have rated the<br />
recommended item and how similar the ratings are to each other.<br />
A user is assigned a set of mentors only after he has rated a minimum number of items or completed a<br />
minimum number of transaction activities.<br />
If you want your application to predict a matching product to go with a user's selected product, you can<br />
configure probable pairs of product matches to be recommended. This concept is called item affinity.<br />
Depending on the type of recommendation you want to extract, the specific engines must be configured,<br />
such as the Preference Engine or Item Affinity Engine. The image below shows the details of the overall<br />
LikeMinds Recommendation Engine architecture.<br />
616 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
How LikeMinds generates recommendations<br />
Learn how LikeMinds generates recommendations when a user logs on and navigates through your web<br />
site.<br />
When a user logs on and navigates through your <strong>Web</strong> site, LikeMinds follows these steps to generate<br />
recommendations for that user:<br />
1. Personalization Rating beans and action logging beans create a record for new users in the<br />
Lps_User_Data table. The Lps_User_Data table stores the following types of information about the<br />
user: the user's resource ID, a user ID, the number of items the user has rated or selected, and so on.<br />
2. The Personalization Rating beans and action logging beans log data for that user as that user<br />
navigates your <strong>Web</strong> site.<br />
The profile data is first stored in the server's cache, then the server writes all the new data to the<br />
database. The Lps_User_Rating table stores the user's explicit preferences; the Lps_User_Trx table<br />
stores the user's clickstream and purchase behavior. The Lps_User_Trx table also stores item affinity<br />
input data.<br />
3. The application can then query LikeMinds for recommendations. Recommendation queries are<br />
transaction data-specific.<br />
Personalizing your content 617
v Preference recommendations are surfaced by the recommend content rule. To receive Preference<br />
recommendations, your application must record users' explicit preferences (ratings) using the Rating<br />
bean.<br />
v Clickstream recommendations are surfaced by the recommend content rule. To receive Clickstream<br />
recommendations, your application must record users' clickstream behaviors (that is, product detail<br />
views, shopping basket inserts, and so on) using the Action bean.<br />
v Item Affinity recommendations are in the form: “this mouth guard is a likely product to go<br />
along with the hockey puck the user has just added to his or her shopping cart”. To receive<br />
Item Affinity recommendations, your application must record users' likely product pair matches. In<br />
other words, your application must capture the current "content/product" context using the Action<br />
bean, in order to return those items most associated with that "content/product".<br />
4. Depending on the engine you are using, the following step occurs next:<br />
v Preference and Clickstream engines: For a new user, if your application queries LikeMinds for<br />
recommendations before mentors have been assigned for that type of data (that is, Preference,<br />
Clickstream, or Item Affinity), the server will assign mentors from a cached pool of mentors.<br />
If the server is unable to, for lack of profile data, match cached mentors to this user, the server will<br />
provide an empty set of recommendations. An important distinction, profile data means the<br />
transaction data for the current user and not the attributes of that user.<br />
v Item Affinity engine: If your application is predicting item affinity product pair matches, it will<br />
collect data based on a set of definitions that you create, called an item affinity set. For input data,<br />
the item affinity set uses transactions from a specified input table.<br />
5. Depending on the engine, the following step occurs next:<br />
v Preference and Clickstream, engines: Once a user's profile is stored in the database, the sifter<br />
utility can calculate mentors for that user. The sifter is a background utility which assigns a set of<br />
mentors to each user.<br />
– Mentor assignments are specific to each type of data.<br />
– Mentor assignments are stored in the mentor table associated with this type of data.<br />
v Item Affinity engine: The accumulator generates item affinity product pair matches by analyzing<br />
data in the item affinity set (same as transaction table) and recording its findings to an output table.<br />
6. Depending on the engine, the next step is as follows:<br />
v Preference and Clickstream engines: As new transaction data is recorded for a user, the user is<br />
prioritized for reprocessing by the sifter to calculate new mentor assignments. Users are<br />
prioritized by a calculated 'sift priority', reflecting the percentage of new or changed profile data for<br />
that visitor.<br />
v Item Affinity engine: As new product selection behaviors are recorded in the transaction input<br />
table specified in the item affinity set definition, the accumulator uses this data to calculate new<br />
item affinity recommendations.<br />
7. When your application runs LikeMinds rules, the following occurs, depending on the engine:<br />
v Preference and Clickstream engines: LikeMinds looks up that user's mentors, and calculates<br />
recommendations.<br />
v Item Affinity engine: LikeMinds calculates the most likely item-content pairs based on<br />
accumulated item transaction history.<br />
The LikeMinds Recommendation Engines<br />
LikeMinds Recommendation Engines communicate with a relational database and generate<br />
recommendations. Learn about the three types of recommendation engines, Preference engine,<br />
Clickstream engine, and Item Affinity engine.<br />
Following is a description of the three types of recommendation engines:<br />
v Preference engine: This engine generates recommendations using patented collaborative filtering<br />
algorithms based on users' item ratings.<br />
618 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Clickstream engine: This engine, which also accesses transaction information, generates<br />
recommendations based on users' actions as they navigate a <strong>Web</strong> site; that is, the history of user<br />
“clicks” during website visits, and the items that users view, click, and add to their shopping carts.<br />
v Item Affinity engine: This engine generates recommendations based on the history of the user's site<br />
browsing activity. It matches a currently selected product with a second product that the user would<br />
most likely want to purchase along with the first product. For example, if a user is purchasing<br />
groceries and adds French onion soup to the shopping cart, the Item Affinity engine could recommend<br />
Gruyere cheese to go with it.<br />
Preference Engine<br />
The Preference Engine uses explicitly stated user preferences to make highly accurate recommendations<br />
for products and content that your website visitors like.<br />
The Preference Engine enables customers get exposure to items they might otherwise miss. For example,<br />
users shopping for gifts can get recommendations based on the gift recipient's shopping preferences.<br />
The shipped with the LikeMinds Recommendation Engine presents a typical implementation of the<br />
Preference Engine:<br />
v A user can rate a movie and LikeMinds returns a predicted rating for that movie.<br />
For example, a user can assign the movie Fantasia with a rating such as "I loved it". Internally the<br />
rating corresponds to a numerical value.<br />
v A user can ask for a recommendation about the best bet, which is provided by a LikeMinds rule. This<br />
corresponds to asking which movie a user would like the most among all available movies.<br />
Clickstream Engine<br />
Based on navigational data gathered as customers browse your <strong>Web</strong> site, the Clickstream Engine tracks<br />
clickstream (or rating) behavior and generates recommendations based on mentors who exhibit similar<br />
content/product affinities.<br />
The Clickstream Engine tracks the pages that users have looked at. After analyzing all users' traffic<br />
patterns, it then makes content recommendations for each specific user, using data from relevant subsets<br />
of the user base.<br />
Item Affinity Engine<br />
The Item Affinity Engine generates recommendations based on any transactional history available, such<br />
as shopping cart activity, external legacy transactions, and web transaction completely unrelated to<br />
shopping cart activity (page views, product inquiries, searches, and so on).<br />
An Item Affinity Engine can, for example, predict that a user who purchases a digital camera would<br />
likely want to purchase compact flash cards or a USB card reader. The Item Affinity Engine also spots the<br />
less obvious connections—that users who purchase beer are likely to purchase diapers at the same time,<br />
for example.<br />
The Item Affinity engine lets you track more than mere purchases measured at check-out time. It can<br />
identify items the user only considered for purchase. For example, it can know when a user only<br />
considered purchasing rye bread rather than actually purchasing the rye bread. (This is measured by a<br />
shopping cart add, followed by a shopping cart drop, of the rye bread.) In this case, the grocer could not<br />
possibly know that the user considered purchasing rye bread during the shopping session, since the rye<br />
bread was not in the shopping cart at check-out time. Even though a considered purchase does not<br />
necessarily imply the same level of item affinity as a completed purchase, it does convey item affinity<br />
information.<br />
Unlike the other engines, Item Affinity Engine recommendations are based on Market Basket Analysis<br />
statistics, not collaborative filtering. Market Basket Analysis enables content affinity predictions even<br />
Personalizing your content 619
when cold-start situations obscure the relevance of collaborative filtering. The Item Affinity Engine can be<br />
used to provide improved automated recommendations, such as cross-sells, even for first time visitors to<br />
the <strong>Web</strong> site.<br />
The LikeMinds utilities<br />
Get an overview of sifter, buildstats, buildvisit, and accumulator, the utilities that support running of<br />
background processes along with the LikeMinds server.<br />
The following utilities support the background processes operating on the database when the LikeMinds<br />
server is running:<br />
v sifter: This utility runs continuously to identify mentors for new users and recomputes the best set of<br />
mentors for existing users. The mentor set for a user may change as the sifter gathers more information<br />
about the user or the mentors. The sifter identifies mentors for the Preference, and Clickstream<br />
engines.<br />
v buildstats: This utility runs once a day to update statistics for each item, such as the number of<br />
ratings or transactions, the average rating, the standard deviation in the average rating, and the default<br />
recommendation information. The Clickstream and Preference engines use buildstat. The Item Affinity<br />
engine does not.<br />
v buildvisit: This utility, which the Preference engine uses, runs daily to construct lists of items to be<br />
presented to users for rating. If your applications do not use the Preference engine, buildvisit is not<br />
necessary.<br />
v accumulator: For the Item Affinity engine, the accumulator (listed as lpsIAA in the util directory)<br />
accumulates the number of times every possible item-to-item combination occurs and writes its<br />
findings to an output table specified by the item affinity set. An item affinity set defines the type of<br />
data required to build an item-to-item combination.<br />
Configuring LikeMinds<br />
Use a suitable database modification tool or edit the likemindsdb.properties file to configure your<br />
LikeMinds server installation.<br />
Set the following general lps_cfg parameter information for the LikeMinds server installation:<br />
v Basic server information<br />
v Scheduling LikeMinds events<br />
v Server load management<br />
v Cache behavior<br />
v Recommendation behavior<br />
LikeMinds stores its configuration information in the lps_cfg table of its database, which is initialized<br />
with the data in wp_profile_root/pzn/config/runtime/likemindsdb.properties. To update this<br />
configuration, you can update this file and reload the configuration data, or you can use any database<br />
modification tool, such as SQL*Plus, if you use Oracle to modify the LikeMinds configuration parameters.<br />
To update configuration values, perform these steps:<br />
1. Stop the <strong>IBM</strong> <strong>Web</strong>Sphere Portal server.<br />
2. Either:<br />
v Edit the likemindsdb.properties file manually and run the following ANT configuration task:<br />
ConfigEngine.{bat|sh} likeminds-load-config -DWasPassword=password<br />
v or, use the DB modification tool to update the configuration directly.<br />
3. Start the <strong>Web</strong>Sphere Portal server.<br />
Estimating database size<br />
The size of your database depends on your application, as well as the number of users and items. View<br />
some general guidelines for estimating the size of your database, but your results may vary.<br />
620 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
A database containing the seed data supplied with the Movie Site application may use just 250 MB, while<br />
the LikeMinds tables for a large site with millions of users may take up 10 GB. Following are some<br />
general guidelines:<br />
The tables that contribute the most to the size of the database are as follows:<br />
v Lps_User_Rating: This table normally dominates your space considerations. Users typically average 50<br />
to 100 ratings. The seed users supplied with Movie Site average about 500 ratings.<br />
v Lps_User_Trx: This table can grow very large, depending on the number of item affinity, clickstream,<br />
or purchase activities recorded from your applications.<br />
v Lps_MBA_Scored: This table can grow quite large, depending on the number of products your site<br />
sells and the number of relationships you want to configure for each product. For example, if you have<br />
1000 products listed in your Lps_Item_Data table, and you want to store 10 relationships for each<br />
product, an Lps_MBA_Scored table can grow to 10,000 rows.<br />
v Lps_User_Mentor: The size of this table depends on the number of users and the number of mentors<br />
associated with each user (50 by default).<br />
v Lps_User_Data: This table may contribute a large portion of the database size if you have large<br />
numbers of users who each have few ratings. This table is heavily indexed, which can affect<br />
performance.<br />
v Lps_Item_Data: This table is normally fairly small, but may be significant if you store large amounts of<br />
data about each item.<br />
The remaining tables are typically less than 100 KB each.<br />
The following table gives typical numbers of rows, row sizes, and index sizes for a "typical" Microsoft<br />
SQL Server database with 5000 items and 100,000 users. The row sizes include only the fields required by<br />
LikeMinds, and they account for typical null fields and clustered index overhead. Sizes will vary for<br />
other database systems, especially for indexes.<br />
Table 143. Example Table Sizes for a Typical Database<br />
Table<br />
Rows in Typical<br />
Site<br />
Row Size (Bytes) Total Size Index Size (Bytes<br />
Per Row)<br />
Total Size<br />
Lps_User_Rating 8,000,000 25 200 MB about 20 160 MB<br />
Lps_User_Trx 8,000,000 32 256 MB about 20 160 MB<br />
Lps_User_Mentor 5,000,000 25 125 MB about 20 100 MB<br />
Lps_User_Data 100,000 typical: 100<br />
100-400MB about 100 10 MB<br />
maximum: 400<br />
Lps_Item_Data 5000 136 (for required<br />
fields only)<br />
68 MB 4 2 MB<br />
Lps_MBA_Scored 10,000 32 32 MB about 20 1MB<br />
Lps_Genre_Data 10-1000 116 1160 KB-116 MB N/A<br />
Lps_Item_Genre 5000-20,000 12 60-240MB N/A<br />
Lps_User_Selector 25,000-100,000 12 30-120MB 4 100-400 MB<br />
Personalizing your content 621
In your size estimate, remember to include space for transaction logging and rollback areas. Because the<br />
LikeMinds server commits frequently, the rollback area need not be especially large relative to the<br />
database. Allow space equal to the size of the database for transaction logs, since the LikeMinds server<br />
performs frequent updates.<br />
Database performance<br />
View some guidelines for performance optimization in your LikeMinds database.<br />
How you configure your database during installation has a significant impact on performance. Use the<br />
following guidelines to achieve the maximum performance in your LikeMinds database:<br />
v Hardware setup: Ideally, you should have one machine (with two CPUs), preferably the fastest,<br />
dedicated to the database, and the <strong>Web</strong>Sphere Portal software on a separate machine. See the system<br />
requirements in the <strong>Web</strong>Sphere Portal Information Center for more information.<br />
v load distribution: You can install the LikeMinds utilities onto separate machines to distribute load.<br />
Refer to the <strong>Web</strong>Sphere Portal Information Center for information on installing utilities to multiple<br />
machines.<br />
v sifter configuration: You can configure the sifter to accommodate heavy loads or busy sites. Be aware<br />
that the sifter has heavy memory usage.<br />
v accumulator configuration: As with the sifter , the accumulator has heavy memory usage, so you<br />
should schedule it to run during off-peak hours.<br />
Scheduling LikeMinds Events<br />
Use the lps.schedule setting to schedule events to be fired at specific dates and times.<br />
The syntax for using the lps.schedule setting is as follows:<br />
lps.schedule. = <br />
where:<br />
event name: Refers to a unique name for the event.<br />
schedule: Refers to the scheduling time, in five fields separated by spaces or tabs, and are integer<br />
patterns. These fields are:<br />
Table 144. Schedule Time Values<br />
Field<br />
Values<br />
minute 0–59<br />
hour 0–23<br />
day of the week<br />
0-6, with 0 being Sunday<br />
day of the month 1–31<br />
month of the year 1–12<br />
To specify all values of a particular field (for example, to schedule events every day of the week), use an<br />
asterisk (*), in the order listed in this table. For example:<br />
622 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
When you do specify actual values, you can enter either the value itself (such as 1 to schedule an event<br />
on Monday) or a range of values (for example, 1-2 to schedule events for Monday and Tuesday). When<br />
you want to specify days, you need to include both the day or the week field and the day of the month<br />
field. For examples of using these values, see<br />
event type and event args: Refer to any of the following events and their arguments:<br />
Table 145. Event Types and Arguments<br />
Event type Argument Description<br />
lazyDBWrite N/A<br />
Specifies when all the changed information since the last read is<br />
written to the database. The default setting is:<br />
purgeUserCache<br />
purgeItemCache<br />
syncCache<br />
runBuildstats<br />
runBuildvisit<br />
runAccumulator<br />
timeval<br />
timeval<br />
user<br />
item<br />
engine<br />
verbose<br />
verbose<br />
verbose<br />
12,24,36,48,00 **** lazyDBWrite<br />
Specifies the time in seconds after permanent users have not<br />
been used before purging them from cache. If timeval is not<br />
specified, the setting from db.tune.user_cache_age_time is used.<br />
Specifies the time in seconds after items have not been used<br />
before purging them from cache. If timeval is not specified, the<br />
setting from db.tune.item_cache_age_time is used.<br />
Refreshes all permanent user objects in cache.<br />
Refreshes all item objects in cache.<br />
Refreshes all engine cache.<br />
Runs the buildstats utility. If verbose is specified, additional<br />
information is printed to the trace log.<br />
Runs the buildvisit utility. If verbose is specified, additional<br />
information is printed to the trace log.<br />
Runs the accumulator utility. If verbose is specified, additional<br />
information is printed to the trace log.<br />
Configuring the LikeMinds engines<br />
You can configure your LikeMinds recommendation engines to control aspects such as predictability,<br />
number of mentors used, which rating, transaction, or mentor set to use, and so on, for the<br />
recommendations returned.<br />
Personalizing your content 623
The Preference and Clickstream engines rely on the sifter utility to assign mentors to users. The Item<br />
Affinity Engine uses the accumulator utility to collect item affinity data.<br />
Configuring the Preference Engine:<br />
The Preference Engine generates recommendations based on users' ratings of items. You can configure the<br />
following settings for the Preference Engine.<br />
Number of mentors to use:<br />
Set .db.engine.tune.num_mentors to the maximum number of mentors to assign to a<br />
given user. The default is 50. For example:<br />
movie_pref.db.engine.tune.num_mentors = 60<br />
If you do not set this parameter, then the Preference Engine uses the value set for<br />
.max_mentors = .<br />
Mentors to look for in cache:<br />
If a user requests recommendations before the sifter has found mentors for that user, the Preference<br />
Engine checks the cache for mentors for the user. Set<br />
.db.engine.tune.max_cached_mentors to the number of potential mentors which it<br />
should consider for a given user. The default is 500. For example:<br />
movie_pref.db.engine.tune.max_cached_mentors = 600<br />
Use of "average user" to improve recommendation confidence:<br />
The Preference Engine can use an "average user," whose ratings are the average of all users' ratings. The<br />
buildstats utility computes the average ratings. Configuring an average user improves the confidence<br />
level of recommendations for that user. To do so, set<br />
eng_instance_name.db.engine.tune.disable.avg_user to false.<br />
However, remember that this feature can be costly in system resources. To disable it, set it to true. (The<br />
default setting is true.)<br />
Archetypes:<br />
To generate recommendations for items that no mentors have rated, the Preference Engine uses synthetic<br />
users called "archetypes." These users possess a particular characteristic very strongly. For example, an<br />
archetype who only likes action movies might rate all action movies very highly. Recommendations from<br />
archetypes are added to recommendations produced by mentors.<br />
Archetype configuration includes:<br />
v “Setting the number of archetypes in cache” on page 625<br />
v “Enabling or disabling the use of archetypes” on page 625<br />
Guidelines for configurable recommendation dynamics:<br />
You can use the following configuration parameters to control, or at least balance, effects of external<br />
factors.<br />
v The number of mentors to use in making recommendations, using the following configuration<br />
parameters:<br />
– .min_mentor_ratings<br />
– .max_mentor_ratings<br />
– .min_mentor_transactions<br />
624 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
– .max_mentor_transactions<br />
v Balancing the mentor selection process with the following configuration parameters:<br />
– .mentor.pool.size<br />
– .max_mentors<br />
Setting the number of archetypes in cache:<br />
The list of archetypes is kept in the cache for a specified number of uses before it is reloaded. To change<br />
the number of users, set .db.engine.tune.max_archetype_list_use . The default is<br />
100000.<br />
For example:<br />
movie_pref.db.engine.tune.max_archetype_list_use = 150000<br />
Enabling or disabling the use of archetypes:<br />
To turn on or off the use of archetypes, set<br />
.db.engine.tune.consult.archetype_for_list to true or false . The default is<br />
false . For example:<br />
movie_pref.db.engine.tune.consult.archetype_for_list = true<br />
User predictability:<br />
This section contains the following information regarding user predictability:<br />
Maximum number of mentors assigned to each user:<br />
Use the following setting to specify the number of mentors to be assigned to each user. The number of<br />
actual mentors can be less than the maximum setting but never greater than the value specified. For<br />
example:<br />
.max_mentors = 50<br />
Note: Use a value between 50-100. See “Maximum ratings a user needs before becoming a mentor” for<br />
guidelines on setting .max_mentors<br />
Maximum ratings a user needs before becoming a mentor:<br />
The following setting specifies the maximum number of ratings a user can have to become a mentor. The<br />
sifter uses this setting if the Preference Engine is using that mentor set. You can specify the value as one<br />
of the following:<br />
v A percentage of the total number of items in the database. For example:<br />
.max_mentor_ratings = 75%<br />
v The maximum number of ratings (that is, without a percentage). For example:<br />
.max_mentor_ratings = 18<br />
Use the following guidelines for setting .max_mentor_ratings:<br />
Table 146. Guidelines for Setting the Maximum Ratings<br />
Total Number of Items in Database<br />
Suggested Setting<br />
< 1000
Note: For more information on how the sifter makes use of .max_mentor_ratings,<br />
see “Maximum number of mentors assigned to each user” on page 625.<br />
Maximum transactions a user needs before becoming a mentor:<br />
The following setting specifies the maximum number of transactions a user can have before becoming a<br />
mentor. The sifter uses this setting if the Purchase or Clickstream Engine is using that mentor set. You<br />
can specify the value as one of the following:<br />
v A percentage of the total number of items in the database. For example:<br />
.max_mentor_xactions = 75%<br />
v The maximum number of transactions (that is, without a percentage). For example:<br />
.max_mentor_xactions = 18<br />
Use the following guidelines for setting .max_mentor_transactions<br />
Table 147. Guidelines for Setting the Maximum Transactions<br />
Total Number of Items in Database<br />
Suggested Setting<br />
< 1000
The Preference Engine reads the value from the score field in the Lps_Item_Data table to determine<br />
which items are popular. Hence, a higher score means that the item is more popular. When buildstats<br />
runs, it updates the score field to the average rating for that item; it generates this value based on the<br />
rating set defined in the db.applic.rating.source parameter. To get reliable default recommendations,<br />
run the buildstats utility on a regular basis. By default, the installer sets buildstats to run once a day.<br />
Some applications use their own business logic to assign the score to items. If you want to override the<br />
score field value to use your application's scoring instead, run buildstats using the -noscore argument.<br />
Configuring LikeMinds utilities:<br />
buildvisit background utilities:<br />
v Ratability parameters<br />
v Repeated items in the visit list<br />
You can configure the following settings for the buildstats and<br />
You can use the buildstats utility for all of the Recommendation engines except for the Item Affinity<br />
Engine. The buildvisit utility is only used for the Preference Engine.<br />
Configuring the sifter for mentor selection:<br />
The sifter finds mentors for users, using the information from the rating or transaction data for the<br />
LikeMinds server engines. The sifter is used by all of the LikeMinds server engines except for the Item<br />
Affinity Engine, which uses the accumulator utility Figure 11 illustrates how the sifter works:<br />
Figure 11. How the Sifter Works<br />
Sifter-specific mentor set configuration:<br />
You can specify the following categories of sifter-specific configuration parameters for mentor sets:<br />
v The engine to be used for mentor tables to be rebuilt<br />
v Time interval for checking the sift priority<br />
v Number of sift priority users per batch<br />
v Maximum number of mentors assigned to each user<br />
v Minimum ratings a user must have before becoming a mentor<br />
v Maximum ratings a user must have before becoming a mentor<br />
Personalizing your content 627
v Minimum transactions a user must have before becoming a mentor<br />
v Maximum transactions a user must have before becoming a mentor<br />
v How to set the mentor pool size<br />
v sifter sleep time for when the Lps_User_Data table sift_pri field is 0<br />
v Running multiple sifters<br />
v Number of threads to sift users<br />
v Recomputing (rebuilding) the mentor pool<br />
v Pausing the sifter during heavy database access<br />
Note: For more information on the sifter, see “Configuring the sifter for mentor selection” on page 627.<br />
How the mentor selection process works:<br />
In order to fully understand the sifter, it is important to have a clear idea of how the mentor selection<br />
process works, and how to set configuration parameters that increase the accuracy of your<br />
recommendations. You should understand the following terms before proceeding:<br />
v Collaborative Filtering -- Collaborative filtering (CF) is a technology that calculates the similarity<br />
between users. It uses the behaviors of those who most closely resemble any given user as a functional<br />
basis for making predictions and recommendations for that user. Given that definition, the process by<br />
which "...the entire population of users is analyzed, their fitness as mentors is calculated, and they are<br />
assigned as mentors to individual users..." is critically important to the ultimate recommendations that<br />
come from the collaborative filtering approach. All of the LikeMinds server engines, except the Item<br />
Affinity Engine, use collaborative filtering.<br />
The data used to decide on the levels of similarity can come in a variety of forms. From a stream of<br />
self-supplied ratings made explicitly to get recommendations back, to clickstream events that comprise<br />
the sequence, duration, and outcome of a <strong>Web</strong>-surfer's session, to data from a company's legacy<br />
databases (such as transactions, demographics, or credit events)--all can form the necessary basis for<br />
making similarity calculations. From those similarity measures, this data can result in the measured<br />
recommendations from those users deemed most similar to any given user.<br />
v Mentor -- A like-minded user that is used as the basis for recommendations for new users. Every user<br />
is assigned mentors by the sifter program, whose stored preferences are judged to be like-minded to<br />
the new user.<br />
v Mentor Pool -- While the purpose of mentors is to form the basis for recommendations for those users<br />
deemed most similar to them, in its most basic form the mentor pool should reflect a representative<br />
sample of users in the transaction set for which the recommendations are required. And despite the<br />
clearly required emphasis on similarity, no recommendation process can make lucid suggestions<br />
without a concomitant space of dissimilarity. We might base our final recommendations on the similar,<br />
shared tastes discovered in our analysis of the users being considered for entry to the mentor pool, but<br />
it is truly the confluence of similarity in purchases with some difference in the items purchased that<br />
make the LikeMinds server collaborative filtering-based recommendations possible.<br />
v Sifter -- Creates mentors by analyzing stored user transactional data. The sifter runs in the<br />
background when you run the LikeMinds server.<br />
v Coverage -- The volume or number of items rated or transactions performed.<br />
Mentor selection and assignment:<br />
Several factors determine the fitness of any user as a mentor. Similarity to any other user is the final<br />
arbiter of any mentor's fitness to make recommendations for a specific user. Yet it is coverage (the volume<br />
of number of items rated or transactions performed) that is most important when forming the mentor<br />
pool. (The mentor pool is a superset of the final mentors chosen to make the recommendations.)<br />
Although a case could be made for using the extent of the unshared purchase space as another dimension<br />
of dissimilarity, the shared space is where we find the most data (and the most predictive data) for<br />
making the required similarity distinctions within the user population.<br />
628 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
In a nutshell, while similarity to the user is important, it is the ability of a mentor to contribute items<br />
outside of any user's typical purchasing space into the final pool of possible recommendations that<br />
qualifies the user as a possible mentor.<br />
For this purpose, the first step the sifter uses in mentor assignment is to periodically create a new<br />
mentor pool (see lps_rtg_pool and lps_trx_pool ) in an effort to collect a representative sample of<br />
experienced users who will then be considered as potential mentors for any user who requires<br />
recommendations.<br />
The second step in the mentor selection process is to assign mentors from the mentor pool to be mentors<br />
for specific users. The challenge is to create a fair balance between the similarity and the coverage of<br />
users being considered as mentors. You can configure the sifter to emphasize similarity, coverage, or to<br />
automatically determine which dynamic to emphasize for each user in the final assignment of mentors to<br />
users.<br />
Number of sift priority users per batch:<br />
To specify how many users to sift during a single batch; for example:<br />
.pri_list_size = 10<br />
Pausing the sifter during heavy database:<br />
You can pause the sifter during times of heavy database access. This frees up database resources for<br />
other activities during heavy database activity. For example, to put the sifter asleep at 11 a.m.:<br />
.pause_sifting_at= 0 11 ***<br />
If you set .pause_sifting_at, use the following setting to wake up the sifter<br />
afterwards. For example, to wake the sifter up at 4 p.m.:<br />
.resume_sifting_at= 0 16 ***<br />
Sifter performance considerations:<br />
The sifter places high processing demands on the system running it. For this reason it is important to<br />
tune it with consideration of its usage and environment. Use the following simple guidelines when<br />
tuning the sifter:<br />
v Schedule the sifter to build the mentor pools during hours of the day when there is low traffic volume,<br />
for example, at 3 a.m.<br />
v Tune the number of processing threads used by the process. You can configure this setting for each<br />
mentor set.<br />
To optimize the resource utilization of the sifter, set the number of threads to spawn to twice the<br />
number of CPUs in the machine that the accumulator is running on. The LikeMinds Recommendation<br />
Engine configuration value that controls this is item_affinity_set.item_affinity.num_threads.<br />
v Distribute the sifter onto a separate UNIX or Microsoft Windows server from the LikeMinds<br />
Recommendation Engine.<br />
v Run multiple sifter processes distributed across multiple machines for greater scalability.<br />
Recomputing (rebuilding) the mentor pool:<br />
For better recommendations, you must recompute, or rebuild, the mentor pool at least once a day, ideally<br />
at a time when the database has little usage. This allows new users to become mentors and removes<br />
current mentors who are no longer good mentors. If you are running multiple instances of the sifter,<br />
use the following procedure to recompute the mentor pool:<br />
Personalizing your content 629
1. Disable all instances of the sifter except for one, which you will use as the master sifter instance.<br />
Rebuilding the mentor pool uses a large amount of database resources, so it is better to use only one<br />
sifter to rebuild the mentor pool.<br />
For the sifter instance to be used as the master, type the following:<br />
.disable_build_mentor_pool = false<br />
For each sifter instance to be disabled, type the following:<br />
.disable_build_mentor_pool = true<br />
2. Rebuild the mentor pool on the master sifter instance by specifying a time for the recomputation to<br />
take place.<br />
Because rebuilding the mentor pool requires heavy database access, schedule it for a time when the<br />
database has little usage. For example, the following setting is for 2 a.m.:<br />
.build_mentor_pool_at =02***<br />
The times are interpreted as follows:<br />
3. For each sifter instance you disabled, set a time to reload the mentor pool after it has been rebuilt.<br />
The sifter will destroy the current mentor pool and reload the pool from the mentor pool table<br />
specified in the .mentor_pool.table setting. Usually, you should set it for about an<br />
hour after the sifter instance has been reloaded.<br />
For example, to reload the mentor pool at 3 a.m.:<br />
.reload_mentor_pool_at= 03***<br />
Running multiple sifters:<br />
Use the following settings to run multiple instances of the sifter and have all the sifters share some<br />
configuration parameters and override others. Running multiple sifters simultaneously allows you to<br />
distribute load on very large systems.<br />
To override a particular default parameter, add a prefix to the parameter. For example, to reload the<br />
mentor pool for the MovieSift sifter instance at 4 a.m.:<br />
MovieSift..reload_mentor_pool_at =04***<br />
If you run a sifter with the following setting,<br />
sifter -config MovieSift -conf <br />
that sifter will use theMovieSift.. reload_mentor_pool_at =03***<br />
setting.<br />
Preventing multiple sifters from sifting the same user:<br />
When you run multiple sifters simultaneously to distribute load, use the following setting to prevent<br />
multiple sifters from sifting the same user in the Lps_User_Data table. This setting limits the sifter to<br />
630 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
look at only a certain group of users, or eliminates a group of users from being sifted. For example, to<br />
allow the sifter to sift only users whose IDs are greater than 100000, and to ignore users whose IDs are<br />
less than 100000:<br />
.constraint = user_id > 100000<br />
You can specify any field in the Lps_User_Data table for this parameter. For example, assuming there is<br />
an age column in the Lps_User_Data table, you could use the following setting to constraint the sifter to<br />
look at all users whose IDs are greater than 10000 and who are over 25 years of age:<br />
.constraint = user_id > 100000 and age > 25<br />
Number of threads to sift users:<br />
To set the number of threads to use for sifting users in lpsconfig:<br />
.num_sift_threads = 3<br />
Sifter sleep time when the Lps_User_Data sift_pri field Is 0:<br />
The Lps_User_Data sift_pri field values must be greater than 0 in order for the sifter to get useful data<br />
(that is, updated mentors) for users. If set to true, the following setting causes the sifter to sleep for the<br />
specified number of seconds by .pri_check_interval if the sift_pri field values in the<br />
Lps_User_Data table are 0. If you set the parameter to false, the sifter sifts random users when there<br />
are no users with sift_pri greater than 0.<br />
.sleep_on_no_sift_pri = true<br />
Note: For information on .pri_check_interval, see “Time interval for checking sift<br />
priority.”<br />
Time interval for checking sift priority:<br />
To specify the interval in seconds for the sifter to check the sift priority value for a user, use the<br />
following setting. The default is 20 seconds.<br />
.pri_check_interval = 40<br />
Note: You can also use this setting when you are setting the time for the sifter to sleep during busy<br />
periods of database access. See “Sifter performance considerations” on page 629.<br />
Ratability parameters: The buildvisit background utility computes a ratability value for each item in the<br />
database. It is only used for the Preference Engine. The LikeMinds server presents items for rating in<br />
decreasing order of ratability; items with the same ratability are presented in random order.<br />
The ratability value is computed as<br />
ratability = A i +B i +C i<br />
where A i is the popularity of item i :<br />
A i =Kx(log 10 (num_rating)) rpow<br />
num_rating is the number of ratings for the item.<br />
To specify K, set db.ratability.num_rating.coefficient (default is 1.0):<br />
db.ratability.num_rating.coefficient = 1.0<br />
To specify rpow, the rating power, set db.ratability.num_rating.power (default is 1.0):<br />
db.ratability.num_rating.power= 1.0<br />
Personalizing your content 631
B i is a measure of how controversial the item is:<br />
B i =Kx(rating_std_dev) sdpow<br />
rating_std_dev is the standard deviation of the ratings for the item.<br />
To specify K, set db.ratability.stddev.coefficient (default is 1.0):<br />
db.ratability.stddev.coefficient = 1.0<br />
To specify stdpow, the standard deviation power, set db.ratability.stddev.power (default is 1.0):<br />
db.ratability.stddev.power= 1.0<br />
C i is a weight based on the age of the item:<br />
C i =Kxexp(-(current_year - release_year)) exp ^ apow<br />
release_year is the value of the year field in the Lps_Item_Data table for the item.<br />
To specify K, set db.ratability.age.coefficient. You can set this to zero if you do not want to consider<br />
age in determining ratability (default is 2.7):<br />
db.ratability.age.coefficient = 2.7<br />
To specify apow , set db.ratability.age.power (default is 0.5):<br />
db.ratability.age.power= 0.5<br />
Repeated items in visit list: To specify whether the buildvisit utility should repeat an item in the visit list<br />
to be shown to a user, set db.visitlist.ratability.duplication_threshold. Items with ratability values<br />
greater than this threshold may be repeated.<br />
For example:<br />
db.visitlist.ratability.duplication_threshold = 6<br />
Configuring the Clickstream Engine:<br />
The Clickstream Engine generates recommendations based on a record of user shopping behavior as the<br />
user navigates through a <strong>Web</strong> site; that is, a history of user "clicks" during the user's website visit. It uses<br />
data such as the items the users view, click, and add to their shopping carts.<br />
You can use the “User predictability for the ClickStream Engine” setting to specify recommendation<br />
behavior for the Clickstream Engine.<br />
User predictability for the ClickStream Engine:<br />
This section contains the following information regarding user predictability:<br />
v The minimum number of clickstream activities required for a user before he or she can receive<br />
recommendations .<br />
v The number of mentors the Clickstream Engine will examine before it checks to see whether the user is<br />
predictable.<br />
v The percentage change allowed in a user's transactions before the LikeMinds server recomputes the<br />
user's predictions.<br />
v Default recommendations.<br />
Minimum number of Clickstream activities for a user:<br />
632 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Set .engine.saturn.tune.predictable.min_xactions_cutoff to the minimum<br />
number of transactions a user must make before the Clickstream Engine will make recommendations for<br />
that user. The default is 10.<br />
For example:<br />
movie_click.engine.saturn.tune.predictable.min_xactions_cutoff = 2<br />
Minimum mentors the engine examines for predictability: When it determines whether it can make<br />
recommendations for a given user, the Clickstream Engine must examine the user's mentors.<br />
.engine.titan.predictable.loop_check_cutoff specifies the number of mentors the<br />
Clickstream Engine will examine before it checks to see whether the user is predictable. The default is 10.<br />
For example:<br />
movie_pref.engine.titan.predictable.loop_check_cutoff = 12<br />
If the user is not predictable, the engine will examine another group of<br />
.engine.titan.predictable.loop_check_cutoff mentors, and then check to see<br />
whether the user is predictable. It will continue until it finds that the user is predictable or it runs out of<br />
mentors.<br />
Recomputing Clickstream Engine predictions:<br />
The .engine.saturn.recomputation_bound configuration parameter specifies the<br />
percentage change allowed in a user's transactions before the LikeMinds server recomputes the user's<br />
predictions. For example:<br />
music_click.engine.saturn.recomputation_bound = 10.0<br />
Ordinarily, the LikeMinds server generates predictions based on a user's mentors, which the sifter<br />
computes and makes available to the database. When a user has no mentors, perhaps because they have<br />
just arrived at the site, or when the user's ratings or transactions have changed beyond the percentage<br />
specified here, the LikeMinds server selects mentors from a reduced set of candidates and recomputes the<br />
user's predictions.<br />
Use this setting with caution, as selecting mentors is a relatively expensive operation: a low percentage<br />
setting can lead to excessive CPU load with little or no gain in prediction quality. A higher setting will<br />
improve performance, but predictions may be less accurate.<br />
Default Clickstream Engine recommendations:<br />
The Clickstream Engine uses transaction data stored with a special user to generate default predictions.<br />
The buildstats utility generates clickstream transaction data, based on the transaction set named in the<br />
db.applic.transaction.source parameter. This transaction data is a summary of all clickstream<br />
transaction data for users, based on transaction data from all configured transaction sets. buildstats, the<br />
LikeMinds server, and other utilities identify the special user as one whose Lps_User_Data mentor_type<br />
field is set to "z". There should be exactly one user with this setting, not more. buildstats will<br />
automatically generate this user if custom IDs are not configured; otherwise, you need to create the user<br />
by hand, since buildstats cannot know what restrictions apply to the custom IDs.<br />
Run the buildstats utility on a regular basis. By default, the installer sets buildstats to run once a day.<br />
Some applications use their own business logic to assign the score to items. If you want to override the<br />
score field value to use your application's scoring instead, run buildstats using the -noscore argument.<br />
Configuring the Item Affinity Engine:<br />
For every cross-selling transaction in the user's shopping history, the Item Affinity Engine derives its<br />
calculations from the following statistics:<br />
Personalizing your content 633
v Support: This is the number of times an item pair is involved in the item affinity set you defined,<br />
divided by the total number of paired item affinity events. Item affinity events can be critical page<br />
views, purchases, shopping cart adds or drops, or combinations of these events. In other words, the<br />
support is the percentage of the time that the item pair occurred together, relative to all transactions.<br />
v Prediction: Using the support statistic as a basis, the prediction is the number of times an item-to-item<br />
pair occurs together, divided by the singular support of the first item of that item pair. In other words,<br />
the prediction is the probability of the item pair, given the first item in the pair.<br />
v Confidence: Using the prediction statistic as a basis, confidence is the prediction divided by the<br />
singular support of the second item of the pair for which the prediction is computed. That is, the<br />
confidence is the probability of the item pair given the first and second item in the item pair.<br />
In general terms, you use the Item Affinity Engine as follows:<br />
1. Define the shopping cart analysis requirements.<br />
This refers to the scope and filters for predictions you plan to use for the shopping cart analysis. This<br />
definition is very flexible. For example, the shopping cart can be based on the user's entire shopping<br />
history, on seasonal product sales, on the user's current session, user page views critical to an item's<br />
purchase, and so on.<br />
The type of purchases you expect from your users will determine the type of shopping basket you<br />
define. For example, a session-based shopping cart would be suitable for a grocery store site, where<br />
users tend to purchase a variety of items at once. A lifetime shopping cart is suitable for a site where<br />
users tend to purchase one large item occasionally, such as expensive electronic equipment.<br />
2. Configure an item affinity set for the shopping cart analysis.<br />
The item affinity set defines your shopping cart analysis requirements. Similar to mentor sets or<br />
transaction sets, the item affinity set defines the type of data you want to collect. The item affinity set<br />
starts by collecting transactions from a transactions input table similar to Lps_User_Trx. You can<br />
include filters to query fields in the input table, specify the types of transactions to query, the number<br />
of top associated items to consider, and so on, for the shopping cart definition. Finally, you specify an<br />
output table to which the results of the analysis are written. The output table must have the same<br />
fields and datatypes as the Lps_MBA_Scored table.<br />
3. Run the accumulator utility to collect the item affinity set data and populate it into the output table<br />
specified in the item affinity set.<br />
Similar to the sifter, which is used for the other LikeMinds server engines, the accumulator uses the<br />
item affinity set data to make the support, prediction, and confidence calculations (described earlier).<br />
It writes its findings to the output table specified in the item affinity set.<br />
You should configure the accumulator to run at times of low database usage, since it can make heavy<br />
use of system resources.<br />
Specifying recommendation behavior<br />
You can configure several parameters that affect the way the LikeMinds server generates<br />
recommendations.<br />
You can set the following recommendation behavior:<br />
v Allowable rating values<br />
v Allowable confidence levels<br />
v Prediction quality<br />
v Best bets<br />
The parameters in this section affect the way the LikeMinds server generates recommendations. If you<br />
change them, be sure that the results will still be appropriate for your application. Because the Movie Site<br />
application expects these parameters to be set to their default values, Movie Site application developers<br />
should use extreme caution when modifying them.<br />
634 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Parameters that apply to the background applications can also affect the way recommendations are<br />
generated. See “Configuring the sifter for mentor selection” on page 627.<br />
Allowable rating values:<br />
Learn about the parameters that govern the allowable range of ratings.<br />
Specify the allowable range of ratings by setting db.applic.param.lowestrating (default is 0) to the<br />
lowest allowable rating and db.applic.param.numberratingvalues(default is 13) to the number of possible<br />
ratings. This setting also determines the recommendation value. This example specifies a rating scale of<br />
zero to twelve:<br />
db.applic.param.lowestrating = 0<br />
db.applic.param.numberratingvalues = 13<br />
The parameters db.applic.param.wontrate (default is -1) and db.applic.param.unrated (default is -2) set<br />
special allowable rating values that are not part of the normal rating scale. Setting an item to unrated<br />
marks the rating for deletion. wontrate means that a user has specifically indicated that he or she does<br />
not plan to rate the item.<br />
db.applic.param.wontrate = -3<br />
db.applic.param.unrated = -2<br />
The LikeMinds server ignores ratings which are neither in the specified range of rating values nor equal<br />
to db.applic.param.wontrate or db.applic.param.unrated.<br />
Note: You can use these parameters for all of the Recommendation engines except for the Item Affinity<br />
Engine.<br />
Allowable confidence levels:<br />
The LikeMinds server assigns a confidence level to each recommendation based on how many users have<br />
rated the recommended item and how similar the ratings are to each other. "Confidence" refers to the<br />
accuracy of the prediction. Learn how to set allowable confidence levels.<br />
You can specify the range of confidence values by setting db.applic.param.lowestconfidence (default is<br />
1) to the lowest confidence level and db.applic.param.numberconfidenceLevels (default is 4) to the<br />
number of confidence levels. You can set confidence levels for all of the Recommendation engines.<br />
db.applic.param.lowestconfidence = 1<br />
db.applic.param.numberconfidencelevels = 4<br />
Prediction quality values:<br />
The "quality" value refers to the degree a user will like an item. The LikeMinds server presents<br />
predictions in decreasing order of quality.<br />
Recommendation quality is calculated using this equation:<br />
quality = confidence mpow x (pred rating —mean pred rating) +Kxconfidence pow<br />
where:<br />
v confidence is the confidence value for the recommended item.<br />
v pred rating is the predicted rating for the item.<br />
v mean pred rating is the mean recommended rating for all items for the user.<br />
To specify mpow , set db.applic.param.BestBets.MultPower:<br />
db.applic.param.BestBets.MultPower = 0.5<br />
Personalizing your content 635
To specify K, set db.applic.param.BestBests.Coefficient:<br />
db.applic.param.BestBets.Coefficient = 0<br />
To specify pow, set db.applic.param.BestBets.Power:<br />
db.applic.param.BestBets.Power = 1.0<br />
Note: You can use these parameters for all of the Recommendation engines except for the Item Affinity<br />
Engine.<br />
Best Bets values:<br />
The LikeMinds server generates recommendation vectors that include all recommendations for a given<br />
user in order from best quality to the least. You can configure the number of items to be returned as Best<br />
Bets and the maximum percentage of the total recommendation vector to include in the Best Bets list.<br />
The LikeMinds server produces Best Bets by beginning with the highest-quality item in the<br />
recommendation vector and listing items in decreasing order of rating quality.<br />
To specify how many items the LikeMinds server should return as Best Bets, set<br />
db.applic.param.BestBets.Threshold. The default value of this parameter is the number of rating levels<br />
(specified by the db.applic.param.NumberRatingValues parameter) divided by 2. For example, if<br />
db.applic.param.NumberRatingValues were set to 12, the default would be 6. You can specify a different<br />
value, for example:<br />
db.applic.param.BestBets.Threshold = 7<br />
Set db.applic.param.BestBets.list.cutoff to the maximum percentage of the total recommendation<br />
vector to include in the Best Bets list. For example:<br />
db.applic.param.BestBets.list.cutoff = 50<br />
MovieSite Sample<br />
The MovieSite documentation focuses on six aspects of LikeMinds capabilities:<br />
Best Bets<br />
The Best Bets task provides a list of recommended movies for each user. These recommendations<br />
are calculated based on a user's previous ratings, as well as the ratings of other similar users,<br />
using collaborative filtering. The system determines users' similarities by comparing their ratings<br />
history among all users. For example, if both user A and user B have many similar ratings, but<br />
user B has rated many more different movies; user B might make a great mentor for user A. It is<br />
from the set of mentors (user B and other similar users) that LikeMinds makes recommendations,<br />
in this case a movie recommendation for user A.<br />
Get Items to Rate<br />
The Get-Movies-to-Rate task retrieves movies, which the user has not yet rated, from the<br />
database. These movies are selected based on the impact that a rating from the user would have<br />
on LikeMinds' ability to recommend movies (Best Bets). (See the task example.)<br />
View the User's Previous Ratings<br />
This task retrieves ratings that a user previously entered from the LikeMinds database. An item<br />
that has previously been rated can always be given a different rating. (See the task example.)<br />
Log Item Ratings<br />
The Personalization rating bean logs each user rating to the LikeMinds database. There are a few<br />
requirements to remember when using the rating bean:<br />
v The session attribute "pzn.userName" must be set with the user resource ID. This is how<br />
LikeMinds pairs the user with an item rating.<br />
636 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v If you log an item that previously did not exist in the LikeMinds database table, an entry will<br />
automatically be created for that item.<br />
v In the same way, if an item is logged for a user who does not exist in the LikeMinds database<br />
table, LikeMinds creates an entry for that user. This is how a "new user" is to be entered into<br />
the LikeMinds system.<br />
v The resource collection that is sent as a parameter to the logging bean is case sensitive.<br />
Database Access<br />
Developers are responsible for maintaining their own database tables. In MovieSite's case, this<br />
includes MovieSite's user table, item table, and also genre tables. All MovieSite tables begin with<br />
MS* and LikeMinds tables begin with Lps*. To implement filtering, the filter ID columns must be<br />
added to the LPS_ITEM_DATA table. These filter IDs are populated when a movie is logged for<br />
the first time, or the IDs are set directly. For more information on filtering, see the section about<br />
filtering recommendations that follows.<br />
Filtering Recommendations based on filter IDs<br />
LikeMinds implements a filtering system for each of the Personalization rules that query<br />
LikeMinds. This system filters items at the LikeMinds level according to any number of filter ID's<br />
associated with each item. Only the items which satisfy the filter are surfaced to the content spot<br />
in the JSP.<br />
Exploring Movie Site<br />
Movie Site demonstrates the LikeMinds Recommendation Engine, guiding you through a Personalization<br />
scenario that is based on factual data from an actual popular site on the internet. The website uses a<br />
personalization solution to analyze visitor behavior and to recommend individualized content<br />
information and services while the visitor is actively engaged on the site.<br />
Notes:<br />
v The provided Resource Collections are for <strong>IBM</strong> DB2 Universal Database Enterprise Server Edition<br />
only. If you want to use the sample on other database types, you can regenerate them using RAD. For<br />
more information on Resource Collections, see the topic Resources, resource instances, and resource<br />
collections.<br />
v It is assumed that you are the Movie Site user, likeminds. This user has previously rated some movies<br />
and registered preferences as configured in the installation.<br />
To set up the Movie Site sample, run the following command from the wp_profile_root/ConfigEngine<br />
directory:<br />
v UNIX: ./ConfigEngine.sh cfg-likeminds-samples -DWasPassword=password<br />
-DLikemindsDbPassword=password<br />
v Windows: ConfigEngine.bat cfg-likeminds-samples -DWasPassword=password<br />
-DLikemindsDbPassword=password<br />
v i: ConfigEngine.sh cfg-likeminds-samples -DWasPassword=password -DLikemindsDbPassword=password<br />
Note: Check the output for any error messages before proceeding with the next task. If any of the<br />
configuration tasks fail, verify the values in the wkplc.properties file.<br />
Perform the following steps to start the application:<br />
1. Open the <strong>Web</strong>Sphere Application Server administrative console.<br />
2. Go to http://machine:port_number/ibm/console where port_number is the port number for <strong>Web</strong>Sphere<br />
Portal.<br />
3. Click Applications > Application Types > <strong>Web</strong>Sphere enterprise applications.<br />
4. Select Movie Site Application, and click Start.<br />
5. Rate movies using the Movie Site home page.<br />
Personalizing your content 637
Table 148. A quick demo of how to rate movies using the Movie Site home page<br />
Steps<br />
1. Navigate to the Movie Site Home Page.<br />
For this demo we will concentrate on the<br />
recommendation engine which uses mathematical<br />
algorithms to provide collaborative filtering.<br />
2. Log in as the LikeMinds user.<br />
Log on as the user, likeminds. This login name is the<br />
default user who has registered to the site and has rated<br />
some movies.<br />
3. Sample Previous Ratings.<br />
Look at the movie ratings by selecting sample previous<br />
ratings. This section of the site contains a few sample<br />
movie ratings the user likeminds previously placed.<br />
4. Use the SuperRater to rate a movie.<br />
In Super-Rater mode, clicking the dropdown menu<br />
associated with each movie of the movie reveals a rating<br />
choice.<br />
You can rate any movies on the list and click Submit to<br />
log your rating choice.<br />
If you click the movie title at the bottom of the page it<br />
will link you to information about the movie using the<br />
imdb.com site.<br />
Action to be taken<br />
Open a separate browser window to the Movie Site<br />
home page. The URL is http://hostname:port/MovieSite<br />
where port is the port number for <strong>Web</strong>Sphere Portal<br />
1. Type likeminds in the login field.<br />
2. Type likeminds in the password field<br />
3. Click Enter.<br />
1. Click Sample Previous Ratings.<br />
2. Select Get more movies from the menu.<br />
3. Click the To Lobby icon.<br />
You can show all of the movies or just certain rated<br />
movies by selecting one of the ratings. You can look at<br />
the ratings of other movies by clicking Get More<br />
Movies. This demo allows you to rate movies. For more<br />
movies, type the name of a movie into the search panel<br />
to see if specific movies are stored in the database.<br />
1. Click To Lobby.<br />
2. Click Rate more movies.<br />
3. Click Turn on Superrater.<br />
4. Click the dropdown menu associated with the rating<br />
to see the options.<br />
5. Click movie title.<br />
Note: This will open a new window.<br />
Notice the prediction of the recommendation engine of<br />
how much you, as the LikeMinds login user, would like<br />
this movie.<br />
5. End Demonstration Click To Lobby.<br />
The LikeMinds collaborative filtering technology considers each user to be the center of their own<br />
preference cluster, instead of trying to find the best preordained preference category for every user, which<br />
is typical of profile-based approaches. LikeMinds recommendations can adapt to these changes much<br />
more quickly than aggregated, profile based techniques.<br />
Run the following command from the wp_profile_root/ConfigEngine directory to remove the application:<br />
Windows: ConfigEngine.bat remove-likeminds-samples -DWasPassword=password<br />
-DLikemindsDbPassword=password<br />
UNIX: ./ConfigEngine.sh remove-likeminds-samples -DWasPassword=password<br />
-DLikemindsDbPassword=password<br />
i: ConfigEngine.sh remove-likeminds-samples -DWasPassword=password<br />
-DLikemindsDbPassword=password<br />
638 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Note: Check the output for any error messages before proceeding with the next task. If any of the<br />
configuration tasks fail, verify the values in the wkplc.properties, wkplc_dbdomain.properties, and<br />
wkplc_dbtype.properties files.<br />
Using the LikeMinds utilities<br />
Learn about the four utilities LikeMinds uses to update the database, buildvisit (for the Preference<br />
Engine), sifter, buildstats, and lpsIAA (for the Item Affinity Engine's accumulator utility).<br />
The LikeMinds utilities are run from the LikeMinds utility servlet.<br />
You must configure these utilities to run at appropriate times. See “Scheduling LikeMinds Events” on<br />
page 622 for more information.<br />
Sifter<br />
The sifter, which is used for all the Recommendation engines except for Item Affinity, assigns mentors<br />
to users and updates its assignments as users rate items. When no users are rating items, the sifter<br />
updates the mentor assignments of all users based on changes to the pool of available mentors.<br />
The sifter must be running whenever the LikeMinds server is running. However, you can install the<br />
sifter across multiple machines to distribute load.<br />
Buildstats and buildvisit<br />
The buildstats utility updates database statistics. You can use buildstats for all of the Recommendation<br />
engines except for the Item Affinity Engine.<br />
When you install the LikeMinds utilities, the installer sets buildstats to run once a day, at 3:30 a.m. This<br />
is because the best time to run buildstats is daily, at a time when the LikeMinds server receives<br />
relatively little use. The buildstats utility connects directly to the LikeMinds database and processes the<br />
transactional or ratings data that is constantly being written to the LikeMinds database. Because this<br />
utility does not consume many resources, it is typically installed on the same machine as the LikeMinds<br />
server. buildstats performs a number of data analysis functions on the information in the LikeMinds<br />
database and persistently writes out the results into the LikeMinds schema. However, the functionality of<br />
this and the number of functions to test differ depending on the type of LikeMinds engines in use. If<br />
both a Preference and ClickStream are in use, buildstats will, by default, analyze both the ratings and<br />
the transactional data.<br />
For ratings data, buildstats writes to the following fields in the Lps_Item_Data table:<br />
v num_rtg: Total number of ratings for the item.<br />
v total_rtg: Sum of all ratings for the item.<br />
v total_square_rtg: Sum of the squares of all ratings for the item.<br />
v ratability: Priority for an item's presentation to users for rating. Ratability is non-negative value.<br />
Higher numbers indicate a higher priority for rating.<br />
v score: Popularity or unpopularity of an item. If you prefer to have your own applications update this<br />
field, you can disable buildstats from writing to score.<br />
For transactional data, buildstats writes to these fields in Lps_User_Trx:<br />
v value: Data value associated with the transaction.<br />
v adj_count: Adjusted count of transactions. If a new activity is recorded in the transaction table, this<br />
value increases. It may diminish over time.<br />
Accumulator<br />
Use the accumulator utility if you are using the Item Affinity Engine. This utility accumulates the number<br />
of times every possible item-to-item combination occurs.<br />
Personalizing your content 639
Similar to the sifter for the other LikeMinds engines, the accumulator runs in the background<br />
processing item event data. It writes this data to the table specified by the<br />
.item_affinity.output.table setting. The accumulator is installed as part of the<br />
PZN_Utilities.ear. It is run through the LikeMinds scheduling mechanism (see “Scheduling LikeMinds<br />
Events” on page 622).<br />
Filtering LikeMinds recommendations<br />
When LikeMinds makes recommendations, it can make the recommendations based on all items in your<br />
resource collection, or it can limit the predictions to only items that have certain characteristics.<br />
Tell LikeMinds about an item by including key/value pairs describing its characteristics as you log<br />
actions and ratings that occur against it. The format for the key/value pair is<br />
Key = LMFilter.<br />
value = <br />
For example, to tell LikeMinds that an item's color is blue, and its category is sports, you would add the<br />
2 key/value pairs:<br />
LMFilter.color,blue<br />
LMFilter.category,sports<br />
Specify which characteristics that you want LikeMinds to use in making predictions by setting request<br />
attributes in the RequestContext object immediately before the content spot that contains the LikeMinds<br />
rule. To specify characteristics for filtering, do the following:<br />
v Add a request attribute that tells LikeMinds which characteristic or characteristics you want to filter<br />
on. The name of that attribute should be LMFilter and the value should be a string or an array of<br />
strings, where the string or each string in the array is a characteristic that you would like to filter on.<br />
For example, to return predictions only from among items whose category is "clearance" and season is<br />
"spring" or "summer", you would add the following code before the content spot:<br />
com.ibm.websphere.personalization.RequestContext.context =<br />
com.ibm.servlet.personalization.context.PersonalizationContext.getRequestContext(httpRequest);<br />
context.setRequestAttribute("LMFilter", new String[] { "LMFilter.category", "LMFilter.season" });<br />
context.setRequestAttribute("LMFilter.category", "clearance");<br />
context.setRequestAttribute("LMFilter.season", new String[] { "spring", "summer" });<br />
To return predictions only from items whose color is blue, you would add the following code before the<br />
content spot:<br />
com.ibm.websphere.personalization.RequestContext.context =<br />
com.ibm.servlet.personalization.context.PersonalizationContext.getRequestContext(httpRequest);<br />
context.setRequestAttribute("LMFilter", "LMFilter.color");<br />
context.setRequestAttribute("LMFilter.color", "blue");<br />
Feedback and analytics<br />
Personalization provides a complete logging framework for collecting data on how visitors are using your<br />
<strong>Web</strong> site. If Feedback is enabled, data is automatically collected about each Personalization rule that is<br />
fired. In addition, development tools enable <strong>Web</strong> sites to collect a variety of data related to visitors'<br />
actions and behavior. By default this data is logged to a standard database schema for later analysis and<br />
reporting. The framework is also extensible, allowing <strong>Web</strong> sites to customize and supplement the way<br />
data is collected and stored to more fully meet their needs.<br />
640 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Personalization provides a complete logging framework for collecting data on how visitors are using your<br />
website. If Feedback is enabled, data is automatically collected about each Personalization rule that is<br />
fired. In addition, development tools enable <strong>Web</strong> sites to collect a variety of data related to visitors'<br />
actions and behavior. By default this data is logged to a standard database schema for later analysis and<br />
reporting. The framework is also extensible, allowing <strong>Web</strong> sites to customize and supplement the way<br />
data is collected and stored to more fully meet their needs. Using the Personalization Feedback<br />
framework you can collect data to help answer questions such as:<br />
v How effective are the new campaign initiatives<br />
v Which items have the highest clickthrough ratio<br />
v What is the clickthrough ratio for health care products<br />
v Which items have the highest view to purchase ratio<br />
v What is the ratio for health care products<br />
v Which rules are resulting in the most number of downloads<br />
v During the month of December, which categories of pages were browsed most often (my special<br />
Christmas pages, or the regular part of my site)<br />
Feedback subsystem overview<br />
The Feedback listener captures data and writes it to the Feedback database schema for subsequent<br />
reporting, a capability which can be used to persist data in ways that specifically meet your requirements.<br />
Logging occurs when a rule or logging bean is present in JSP or servlet a user visits. In either case,<br />
during execution an event containing data to be logged is generated and dispatched by the log manager<br />
to a set of listeners.Personalization supplies two such listeners. The first is the Feedback listener, which<br />
captures data and writes it to the Feedback database schema for subsequent reporting. The second is the<br />
LikeMinds listener (LMListener), which captures data for subsequent use by the LikeMinds<br />
recommendation engine. <strong>Web</strong> site developers can optionally extend the provided listeners or create<br />
additional custom listeners to persist data in ways that specifically meet their needs.<br />
Personalizing your content 641
v Logging events are generated by Personalization rules or logging beans.<br />
v The Feedback subsystem's multithreaded implementation prevents HTTP clients from waiting.<br />
v The Log <strong>Manager</strong> maintains internal queue of events.<br />
v Event is dropped on queue then control returned to web client.<br />
v Events are dispatched from the queue to all registered listeners.<br />
v Listeners in turn persist and process the data contained in the logging event.<br />
Enable logging<br />
Create and set up the Feedback database. Then enable logging on the runtime server that hosts Feedback<br />
data.<br />
Run the following tasks to create, set up, and enable logging of the Feedback database:<br />
1. Open FeedbackService.properties from the appropriate location:<br />
v UNIX: wp_profile_root/PortalServer/config/config/services/<br />
v Windows: wp_profile_root\PortalServer\config\config\services\<br />
v i: in the UserData directory:PortalServer_root/config/config/services<br />
2. Set the property loggingEnabled to true.<br />
3. Restart <strong>Web</strong>Sphere Portal.<br />
642 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Feedback properties file<br />
The FeedbackService.properties file contains several customizable properties that are used by the<br />
Feedback component. These properties are used to enable custom log listeners, to tune the performance<br />
of the Feedback data collection system.<br />
The FeedbackService.properties file is installed to the wp_profile_root/PortalServer/config/config/<br />
services directory.<br />
To modify the properties:<br />
v Edit the FeedbackService.properties file.<br />
v Restart the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server where the Portal Personalization Runtime is installed.<br />
loggingEnabled<br />
Before information about the usage of your site can be recorded, logging must first be enabled. To enable<br />
logging, set the loggingEnabled property to true.<br />
loggingEnabled = true<br />
schemaName<br />
It is possible to customize the name of the feedback schema used in the database. For most platforms the<br />
Personalization installer will create the feedback tables under a schema named FEEDBACK.<br />
For System i5 ® installations, the schemaName property must be set to the name of the database library that<br />
contains the Feedback tables (for example, QWPS51).<br />
schemaName = FEEDBACK<br />
logListeners<br />
Log events are generated whenever the log method of a bean is called or whenever a rule is fired. Log<br />
listeners process these log events and can store the event data or perform other actions as a result of<br />
these events. The Feedback component provides two default log listeners, the LMListener that collects<br />
data for use by the LikeMinds Recommendation Engine and the FeedbackListener that collects data for<br />
use in the Feedback reports. Custom log listeners can be used to modify the default behavior of the<br />
FeedbackListener or to provide a listener that processes the Feedback events in a user-specified manner.<br />
After being developed, custom listener class files must be placed in the classpath of the server where<br />
Personalization run-time is installed. The class names of these listeners must be identified in the<br />
logListeners property. Multiple custom listener class names are separated by semicolons:<br />
logListeners =<br />
LogListenerClassName1;LogListenerClassName2<br />
logBufferSize<br />
When log events are produced by logging beans or rules, they are placed on a process queue. Each of the<br />
registered log listeners consumes events from this queue. This enables listeners to consume log events at<br />
independent rates, minimally impacting the performance of other listeners. It also enables the Feedback<br />
component to queue events originating from <strong>Web</strong> page requests with minimal impact on the <strong>Web</strong> site<br />
performance.<br />
Personalizing your content 643
The log event queue (or log buffer) has a default maximum size of 10,000 events. The optimal size of this<br />
buffer is affected by <strong>Web</strong> site volume, <strong>Web</strong> site usage spikes, and many other <strong>Web</strong> application<br />
performance factors. You can change the maximum size of the log buffer by modifying the logBufferSize<br />
property in the FeedbackService.properties file:<br />
logBufferSize = 10000<br />
logWarningLevel<br />
As the log buffer begins to fill due to heavy <strong>Web</strong> site loads or slow log listener performance, a warning<br />
message can be logged to the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server console. The logWarningLevel specifies<br />
the log buffer load that will trigger warning messages. The logWarningLevel is specified as a percentage<br />
value between 0 and 100. Specifying a value of 0 will repeatedly output the current log buffer load<br />
whereas a percentage value of 100 will result in no warning messages as the buffer fills. Once the log<br />
buffer is full, an error message is logged to the <strong>Web</strong>Sphere Application Server console and logging is<br />
discontinued until room becomes available in the log buffer. The default value for the log warning level<br />
is 75%. You can change this warning level by modifying the logWarningLevel property in the<br />
FeedbackServices.properties file:<br />
logWarningLevel = 75<br />
requestFlushInterval<br />
Multiple rules or logging beans can be placed on a single <strong>Web</strong> page or JSP. The Feedback component<br />
collects all the data from the rules and log beans on a page and then updates the Feedback database with<br />
all of the information for the page (HTTP request). Updating the Feedback database only once per page<br />
improves the performance of the Feedback component. It is necessary to determine when all of the data<br />
for a page request has been collected. Two mechanisms are used in the current release to determine when<br />
the log data for a page request should be written to the Feedback database. The first method is to flush<br />
all of the log data for a page request whenever a new page request is received from the same user<br />
session. The second method uses a time interval to determine when the response to a page request has<br />
been completed and, thus, all the logging data for the request has been generated.<br />
The requestFlushInterval applies to this second method of flushing the logging data for a page request.<br />
It is the time interval during which no new logging data has been received during a user session after<br />
which the log data for the most recent request is assumed to be complete and is flushed to the database.<br />
The default value for the request flush interval is 10 seconds. You can modify this interval by changing<br />
the requestFlushInterval property (specified in milliseconds) in the FeedbackService.properties file:<br />
requestFlushInterval = 10000<br />
inactiveListenerInterval<br />
It is possible for a log listener to become inactive due to a run-time error or resource deadlock. The result<br />
of such a deadlock would be an accumulation of data in the log buffer that will never be processed. Since<br />
the log buffer is finite in size, it will eventually reach capacity. Once it reaches capacity, no new data will<br />
be logged and all active listeners will be unable to collect and process additional log data. To protect<br />
against this scenario, the activity of all listeners is monitored. If log data is available for a listener to<br />
process and the listener remains inactive for a pre-determined, the log listener will be removed from the<br />
set of registered log listeners. The default period of inactivity is 2 minutes. You can modify this interval<br />
by changing the inactiveListenerInterval property (specified in milliseconds) in the<br />
FeedbackService.properties file:<br />
inactiveListenerInterval = 120000<br />
644 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
work<strong>Manager</strong><br />
If running in an environment that supports it, the Feedback component uses the <strong>Web</strong>Sphere Application<br />
Server workmanager system for asynchronous operations. Using the work<strong>Manager</strong> property, you can specify<br />
the name of the workmanager that Feedback will use.<br />
work<strong>Manager</strong> = wm/default<br />
Rule logging<br />
If logging is enabled, rule information is automatically logged whenever a rule is executed.<br />
When a content spot's rule retrieves content, a RuleEvent object is constructed from the request,<br />
campaign name, rule name, resource collection name, and items. This event object is routed to all<br />
registered log listeners and the logged data are stored in the Feedback schema.<br />
Logging beans<br />
Use logging beans to log data about a <strong>Web</strong> site visitor's actions, category interests, and ratings.<br />
You can also use custom beans to log information specific to your <strong>Web</strong> application. You insert logging<br />
beans into your JSPs. The types of logging beans are:<br />
v Action beans<br />
v Rating beans<br />
v Category beans<br />
v CustomLog beans<br />
v Page View beans<br />
Action beans<br />
You use Action beans to log specific actions of your <strong>Web</strong> site visitors.<br />
As a <strong>Web</strong> site visitor navigates your <strong>Web</strong> pages, an Action bean logs the visitor's events within the<br />
session. Action beans maintain action information for the current session including the actions logged and<br />
their corresponding log counts. This session data can be used within rules of from your JSPs. Action<br />
information is also routed to all registered log listeners.<br />
All actions are logged to the Feedback schema and to the user session. The actions logged include the<br />
pre-defined actions listed in Table 149 on page 646 and user defined actions. The actions that are logged<br />
to the Feedback schema and user session do not need to be pre-defined.<br />
If you have LikeMinds installed, only the pre-defined actions listed in Table 149 on page 646 are logged<br />
to the LikeMinds schema. These actions must be defined to LikeMinds in the lps_trx_type table. (You can<br />
also add to the list of predefined actions by adding items to the lps_trx_type table.) The actions logged<br />
through an Action bean provide the transaction data necessary for the LikeMinds Clickstream Engine.<br />
This set of actions may be accessed after deployment and configuration of a <strong>Web</strong> application.<br />
Actions can be logged with or without respect to a specific resource. For example, the "OrderCancel"<br />
pre-defined action does not apply to a specific resource whereas the "Browse<strong>Content</strong>" pre-defined action<br />
applies to a specific content resource.<br />
You can create rules based on the activity of the current session, for example:<br />
<strong>Web</strong>Site Visitor is<br />
Undecided when<br />
current Action Count.ShoppingCartDelete > 0<br />
Otherwise Decided<br />
Personalizing your content 645
Table 149. Pre-defined Actions<br />
Action ID<br />
Action Name<br />
1000 DetailedView<br />
1001 Purchase<br />
1002 Rated<br />
1003 ShoppingCartInsert<br />
1004 ShoppingCartDelete<br />
1005 OrderCancel<br />
1006 ItemView<br />
1007 WishlistAdd<br />
1008 WishlistDelete<br />
1009 Browse<strong>Content</strong><br />
1010 Search<br />
1011 ShoppingCartUpdate<br />
Implementing action logging:<br />
To implement action logging, insert an Action bean into your JSP. To log additional application data<br />
associated with the action, add key/value pair information to the log method call.<br />
To implement action logging, insert an Action bean into your JSP, for example:<br />
<br />
<br />
To log additional application data associated with the action, add key/value pair information to the log<br />
method call in. For example:<br />
<br />
<br />
<br />
Action beans reference:<br />
646 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
View some additional information related to Action beans and associated methods.<br />
The com.ibm.wcp.analysis.beans.Action bean method signatures are:<br />
Table 150. Descriptions for action bean method signatures<br />
Action bean method signatures<br />
public void log( HttpServletRequest request,<br />
String actionName )<br />
public void log( HttpServletRequest request,<br />
String resourceId,<br />
String collectionName,<br />
String actionName )<br />
public void log( HttpServletRequest request,<br />
String resourceId,<br />
String collectionName,<br />
String actionName,<br />
String key,<br />
String value )<br />
public void log( HttpServletRequest request,<br />
String resourceId,<br />
String collectionName,<br />
String actionName,<br />
Hashtable keyValueData )<br />
Description<br />
Logs a non-resource specific action<br />
Logs a resource specific action<br />
Logs a resource specific action with key/value<br />
action datum<br />
Logs a resource specific action with multiple<br />
key/value action data. Each key can have a<br />
single value specified by a string object or<br />
multiple values specified by a string array<br />
Action beans should be instantiated as session beans. They maintain user action information for the<br />
current session including the actions logged by resource and their corresponding log counts.<br />
The following methods are accessible from rules. These methods are provided through a custom<br />
application object.<br />
public String[] getActionNames(HttpServletRequest request);<br />
public int getActionCount(HttpServletRequest request, String actionName );<br />
Actions can be logged with or without respect to a specific resource. For example, the "OrderCancel"<br />
action does not apply to a specific resource whereas the "Browse<strong>Content</strong>" action applies to a specific<br />
content resource.<br />
If the call to the action log method specifies a resourceId and the collectionName is null, the name of a<br />
ResourceCollection is inferred. The ResourceCollection used will be any one containing a resource with<br />
the specified resourceId. The determination of the ResourceCollection used in this scenario is<br />
non-deterministic. Note that these variants are suitable for user implementations supporting one and only<br />
one ResourceCollection per resource class. If an implementation utilizes multiple ResourceCollections<br />
for the same resource class, the collectionName should be specified.<br />
Category beans<br />
<strong>Content</strong> categories enable you to classify <strong>Web</strong> user interests. You use Category beans to log content<br />
categories.<br />
As a <strong>Web</strong> site visitor navigates your <strong>Web</strong> pages, a Category bean logs the different categories viewed by<br />
the visitor during the session. For example, if a <strong>Web</strong> site visitor goes to your <strong>Web</strong> site and views<br />
information about the weather, the category "Weather" can be logged. Another <strong>Web</strong> site visitor might be<br />
more interested in sports, so you would log the "Sports" category for this user. Category beans maintain<br />
category information for the current session including the categories logged and their corresponding log<br />
counts. Category information is routed to all registered log listeners.<br />
Personalizing your content 647
All categories are logged to the Feedback schema and to the user session. Category information is not<br />
logged to the LikeMinds schema.<br />
You can create rules that access the category counts in the current session, for example:<br />
News Interest is<br />
Weather when<br />
current Category Count.Weather > 5<br />
Sports when<br />
current Category Count.Sports > 5<br />
Otherwise Headlines<br />
You can also create rules that access the category names from the current session, for example:<br />
Select content<br />
whose News.Topics is included in current CategoryNamesCategory Names.Category Names<br />
order as is<br />
Implementing category logging:<br />
To implement category logging, insert a Category bean into your JSP.<br />
Consider the following code for inserting a category bean in your JSP.<br />
<br />
<br />
You can also pass an object to a JSP and implicitly log the content category. For example:<br />
<br />
<br />
In the above example, the category bean logs the news category by querying the LoggableResource<br />
interface to get the category.<br />
Category beans reference:<br />
Learn about the various method signatures of Category beans.<br />
The com.ibm.wcp.analysis.beans.Category bean method signatures are:<br />
Table 151. Descriptions for CustomLog bean method signatures<br />
CustomLog bean method signatures<br />
public void log( HttpServletRequest request,<br />
String category )<br />
public void log( HttpServletRequest request,<br />
String[] categories )<br />
public void log( HttpServletRequest request,<br />
LoggableResource resource )<br />
Description<br />
Logs a single category literal.<br />
Logs an array of category literals.<br />
Logs categories of interest by querying the<br />
LoggableResource interface of the object.<br />
The LoggableResource interface can be implemented in addition to the Resource interface in order to<br />
facilitate logging. The categories of you resources can then be stored and retrieved from a database. By<br />
using this interface, you avoid the specification of category literals in your JSPs.<br />
648 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
public interface LoggableResource<br />
{<br />
String[] getTopics( );<br />
}<br />
Each of the topics returned by getTopics is logged as a category. If getTopics returns null, no category<br />
will be logged.<br />
The log methods create a CategoryEvent with the request and category. The CategoryEvent is routed to<br />
all of the registered log listeners.<br />
Category beans should be instantiated as session beans. They maintain category information for the<br />
current session including the categories logged and their corresponding log counts.<br />
The following methods are accessible through rules. They can also be accessed directly through the<br />
category bean.<br />
public String[] getCategoryNames( HttpServletRequest request)<br />
public int getCategoryCount( HttpServletRequest request,<br />
String category )<br />
Rating beans<br />
The Rating bean is a specialized logging bean. You use Rating beans in applications that solicit user<br />
ratings for web content or other personalization resources.<br />
The ratings logged through the Rating bean provide the user data necessary for the LikeMinds preference<br />
engine. This engine uses explicitly specified user ratings to predict user preferences. You can generate<br />
reports based on the ratings of your website content or resources.<br />
Note: The concept of ratings logged through the Rating bean is different from the concept of ratings<br />
generated from tagging and rating. Tagging and rating allows users to assign ratings directly to an object<br />
to indicate likes and dislikes and is not used to collect data for future recommendations.<br />
All rating data is logged to the Feedback schema and to the LikeMinds schema. Rating data are not<br />
logged to the user session.<br />
Implementing rating logging:<br />
To implement rating logging, insert a Rating bean into your JSP.<br />
Following is an example that demonstrates implementation of rating logging by inserting a Rating bean<br />
in a JSP.<br />
<br />
<br />
// Note: The mediaId, collectionName, and rating were added to the request<br />
// by the referring page.<br />
pref.log( request,<br />
request.getParameter( "mediaId" ),<br />
request.getParameter( "collectionName" ),<br />
request.getParameter( "rating" ));<br />
Note: <strong>Web</strong> applications implementing preference logging must provide a user interface (UI) to enable<br />
preference setting. Once retrieved from the UI, the preference settings can be logged with the Rating<br />
bean.<br />
Rating beans reference:<br />
Personalizing your content 649
Learn about the various method signatures of Rating beans.<br />
The com.ibm.wcp.analysis.beans.Rating bean method signatures are:<br />
Table 152. Descriptions for rating bean method signatures<br />
Rating bean method signatures<br />
public void log( HttpServletRequest request,<br />
Resource<br />
resource,<br />
int prefRating );<br />
public void log( HttpServletRequest request,<br />
String<br />
resourceId,<br />
String<br />
collectionName,<br />
int prefRating );<br />
public void log( HttpServletRequest request,<br />
String<br />
resourceId,<br />
String<br />
collectionName,<br />
int<br />
prefRating,<br />
Hashtable ratingData )<br />
Description<br />
Logs a rating for a Resource object. A ResourceCollection<br />
with the same resource type will be determined and<br />
used for logging the collection name. If you have<br />
multiple ResourceCollections containing objects of the<br />
same class, you should use the log method that accepts<br />
the resourceId and collectionName.<br />
Logs a rating using a resource id and collection name.<br />
Logs a resource-specific rating with multiple key/value<br />
rating data. Each key can have a single value specified<br />
by a string object, or multiple values specified by a string<br />
array.<br />
The log methods generate a RatingEvent object with the request and rating data. These events are routed<br />
to all of the registered log listeners.<br />
Rating beans should be instantiated as session beans; however, they do not maintain rating information<br />
for the current session.<br />
CustomLog beans<br />
CustomLog beans give you the flexibility to log data that does not easily map to the other logging beans.<br />
You use CustomLog beans to log application specific data. You define the required key name(s) as well as<br />
the value(s) for that key.<br />
Logged data is stored in the Feedback schema in the HITPARMS, KEY_VALUE_COMBO,<br />
KEY_VALUE_PAIR, KEY, and VALUE tables. If you use CustomLog beans, you may want to create<br />
custom report elements.<br />
All custom log data is logged to the Feedback schema. Custom log data is not logged to the LikeMinds<br />
schema nor to the user session.<br />
Implementing custom logging:<br />
To implement custom logging, insert a CustomLog bean into your JSP.<br />
The following code provides an example:<br />
<br />
<br />
You can also log multiple values. For example:<br />
<br />
customInfo.put( "custLevel", new String[] { "gold", "preferred" } );<br />
customInfo.put( "custRegion", "West" );<br />
custom.log( request, customInfo );<br />
%><br />
CustomLog beans reference:<br />
View the CustomLog bean method signatures.<br />
The com.ibm.wcp.analysis.beans.CustomLog bean method signatures are:<br />
Table 153. Descriptions for CustomLog bean method signatures<br />
CustomLog bean method signatures<br />
public void log( HttpServletRequest request,<br />
String<br />
key,<br />
String value );<br />
public void log( HttpServletRequest request,<br />
Hashtable keyValueData );<br />
Description<br />
Logs a single pair of custom key/value data.<br />
Logs multiple pairs of custom key/value data.<br />
The log methods generate a CustomLogEvent with the request and custom data. The CustomLogEvent is<br />
routed to all of the registered log listeners.<br />
CustomLog beans should be instantiated as session beans; however, they do not maintain any session<br />
data.<br />
PageView beans<br />
You use PageView beans to log HTTP request data for JSPs (JavaServer pages).<br />
The HTTP request data logged by PageView beans provides basic <strong>Web</strong> usage data that can be used<br />
during <strong>Web</strong> traffic analysis. The Action, Category, CustomLog, and Rating beans automatically collect the<br />
same basic HTTP data that is collected by the PageView bean. HTTP request data is also collected<br />
whenever a rule is executed. Use the PageView bean if the JSP of interest has no other logging beans or<br />
content spots, and you want to include the JSP in usage analysis.<br />
Implementing PageView logging:<br />
To implement <strong>Web</strong> usage logging, insert a PageView bean in your JSP.<br />
Following is an example of implementing PageView logging:<br />
<br />
<br />
pageView.log( request );<br />
PageView beans reference:<br />
Learn about the com.ibm.wcp.analysis.beans.PageView bean log method and instantiation of PageView<br />
beans.<br />
The com.ibm.wcp.analysis.beans.PageView bean log method signature is:<br />
public void log( HttpServletRequest request )<br />
The log method creates a new PageViewEvent with the request. The PageViewEvent is routed to all<br />
registered log listeners.<br />
Personalizing your content 651
PageView beans should be instantiated as session beans; however, they will not maintain any session<br />
data.<br />
Log<strong>Manager</strong><br />
When data is logged by either logging beans or rules, log events are generated and are routed to a<br />
controller for processing. Log<strong>Manager</strong> is the class that implements this controller. There is a single<br />
instance of the Log<strong>Manager</strong> within the Personalization run-time. It is responsible for receiving all logged<br />
events and distributing these events to listener objects that implement the LogListener interface and are<br />
registered with the Log<strong>Manager</strong>.<br />
The Log<strong>Manager</strong> queues log events as they are received. In order to protect listeners from performance<br />
degradation due to inefficiencies and/or problems in other listeners, a separate notification thread is<br />
managed for each active listener. A nanny thread monitors the notification threads and suspends any<br />
non-responsive listener. Since the "queue" is processed by multiple consumers, an event is removed from<br />
the queue after all of the notification threads have read the event. You can alter the settings that govern<br />
the non-responsive time interval and event queue size by modifying the FeedbackService.properties file,<br />
located in the wp_profile_root/PortalServer/config/config/services.<br />
Listeners and persistence<br />
Log listeners process the log events originating from either logging beans or rules.<br />
Log listeners process the log events originating from either logging beans or rules and will typically store<br />
the data in some fashion (such as a database). Separate LogListener implementations are provided for<br />
processing log data into the Personalization Feedback schema and for processing data into the LikeMinds<br />
schema. These listeners always run whenever logging is enabled. Additionally, it is possible to extend the<br />
provided listeners and also write custom listeners from scratch to process logging events and log data as<br />
you see fit.<br />
A log listener is registered with and receives log events from the Log<strong>Manager</strong>. All log listeners must<br />
either implement the Log<strong>Manager</strong> interface or extend the LogAdapter class. The LogAdapter class<br />
provides a default (empty) implementation of each of the handleEvent methods in the LogListener<br />
interface.<br />
The logging component uses cache and multi-threading to optimize performance, and to allow each<br />
listener to process events at a difference rate without affecting other listeners.<br />
The log listener interface<br />
public interface com.ibm.wcp.analysis.event.LogListener extends java.util.EventListener<br />
{<br />
/**<br />
* Method called by Log<strong>Manager</strong> after adding the listener to the<br />
* set of active listeners. This method can be used to perform<br />
* initialization during startup.<br />
*/<br />
public void startHandlingEvents( );<br />
/**<br />
* Method called by Log<strong>Manager</strong> when the listener is removed<br />
* from the set of active listeners. This method can be<br />
* used to perform cleanup during termination processing.<br />
*/<br />
public void stopHandlingEvents( );<br />
/**<br />
* Method to handle rule trigger events.<br />
*/<br />
652 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
void handleEvent( RuleEvent event );<br />
/**<br />
* Method to handle category logging events.<br />
*/<br />
void handleEvent( CategoryEvent event );<br />
/**<br />
* Method to handle action logging events.<br />
*/<br />
void handleEvent( ActionEvent event );<br />
/**<br />
* Method to handle explicit rating events.<br />
*/<br />
void handleEvent( RatingEvent event );<br />
/**<br />
* Method to handle custom logging events.<br />
*/<br />
void handleEvent( CustomLogEvent event );<br />
/**<br />
* Method to handle basic <strong>Web</strong> traffic events.<br />
*/<br />
public void handleEvent( PageViewEvent event );<br />
/**<br />
* Method to handle Personalization audit events.<br />
*/<br />
}<br />
void handleEvent( AuditEvent event );<br />
FeedbackListener<br />
The FeedbackListener class routes data to the Feedback schema.<br />
The FeedbackListener processes all log event types. Each page request (JSP invocation) maps to one row<br />
in the Feedback schema HIT_FACTS table. Data for each log event is stored in a separate entry in the<br />
Feedback schema HITPARMS table. This distinguishes the data related to each rule or log method call<br />
and enables the reporting of information specific to individual content spots or method call. This storage<br />
design correlates of all of the data logged by the rules or method calls in a JSP enabling page level<br />
reporting.<br />
An instance of the FeedbackListener is active on all run-time servers whenever logging is enabled.<br />
Related concepts:<br />
“Feedback database schema” on page 664<br />
The Feedback schema, within the Feedback database, stores data about your <strong>Web</strong> site visitors' actions.<br />
This schema is closely aligned with the Tivoli Site Analyzer schema.<br />
LMListener<br />
The LMListener routes data of interest to the LikeMinds database layer.<br />
The LMListener only processes ActionEvent and RatingEvent data. These events result in LikeMinds<br />
addTransaction calls. Only action names defined in the LikeMinds lpx_trx_type table are logged by this<br />
listener. All other actions are ignored.<br />
Personalizing your content 653
An instance of the LMListener is active after LikeMinds configuration tasks are run.<br />
Custom log listeners<br />
When the log method of a logging bean is called, the feedback facility generates a log event. A log event<br />
is also generated when a rule is executed. Log listeners process these log events and either store the event<br />
data or perform custom processing with these events.<br />
The Feedback component provides two default log listeners, the LMListener that collects data for use by<br />
the LikeMinds recommendation engine and the FeedbackListener that collects data for use in the<br />
feedback reports. Custom log listeners can be used to modify the default behavior of the<br />
FeedbackListener or to implement a listener that provides user-specific behavior.<br />
There are a number of reasons that you might want to provide a customized feedback listener. Some of<br />
these are:<br />
v To collect request parameters, referral parameters, or cookies. By default, the feedback listener does not<br />
collect this data. You must implement a customized feedback listener that enables the collection of this<br />
data.<br />
v To prevent private information from being stored. For instance, you could mask the userid or IP<br />
address to ensure the privacy of your users.<br />
v To augment the event data. Suppose your event data contains a product id number and you would like<br />
to report on products by product name and id. You could perform a custom lookup during event<br />
processing and add the product name to the event.<br />
654 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
There are a number of reasons that you might want to provide a new custom listener class. Some of these<br />
are:<br />
v To store event data in a separate database. Suppose that you want to capture rating data in a<br />
preference database. You can do this through your own web application or you could do this as by<br />
adding a custom listener and capturing rating events. The custom listener could facilitate real time<br />
rating results.<br />
v To generate email when an event occurs. Perhaps you want to send email to customers after they<br />
purchase a large order. By processing an action event with the purchase amount included as action<br />
data, you could do this with a custom log listener.<br />
v To generate notifications when an event occurs. You can detect the frequency of shopping cart<br />
abandons and generate a notification to the site administrator to check site availability and<br />
performance.<br />
Custom listener classes:<br />
A custom listener class is a class that implements the LogListener interface. View the steps to implement<br />
a custom listener class.<br />
The custom listener class can implement the LogListener interface explicitly and provide implementations<br />
for all of the LogListener methods. Alternatively, the custom listener class can extend the LogAdaptor<br />
class. Since the LogAdaptor class contains default implementations of all of the LogListener methods,<br />
LogAdaptor subclasses only need to implement the LogListener methods of interest. To implement a<br />
custom listener class:<br />
1. Implement a class that extends com.ibm.wcp.analysis.event.LogAdaptor. Override the handleEvent<br />
methods that accept the event type of interest. You can also provide an implementation for<br />
startHandlingEvents and stopHandlingEvents if your listener needs to perform initialization or<br />
cleanup, respectively.<br />
2. Install the class file for your custom listener in the classpath of the server where the Personalization<br />
run-time is installed.<br />
3. Add the class name to the logListeners property in the FeedbackService.properties file, located in<br />
the wp_profile_root/PortalServer/config/config/services directory.<br />
4. Restart the Personalization run-time server.<br />
Note that custom listener classes (other than customized feedback listeners) are always enabled when the<br />
Personalization run-time enterprise application is running.<br />
The following example illustrates the implementation of a custom listener class. The listener in this<br />
example will generate an alert whenever the "MegaPurchase" action is logged.<br />
import com.ibm.wcp.analysis.event.*;<br />
public class SimpleCustomListener extends LogAdapter<br />
{<br />
/**<br />
* Method to handle action events.<br />
*/<br />
public void handleEvent( ActionEvent event )<br />
{<br />
if (event.getActionName().equals( "MegaPurchase" ))<br />
generateAlert();<br />
}<br />
/**<br />
* Method to generate an alert.<br />
*/<br />
private void generateAlert( )<br />
{<br />
Personalizing your content 655
}<br />
}<br />
// Your custom code for generating an alert can go here.<br />
System.out.println( "We have a big purchase!" );<br />
Customized feedback listeners:<br />
A customized feedback listener is a subclassed FeedbackListener object that is registered with the<br />
feedback Log<strong>Manager</strong>. View the steps to implement a custom feedback listener.<br />
Perform the following steps to implement a custom feedback listener:<br />
1. Implement a class that extends com.ibm.wcp.analysis.event.FeedbackListener. Override the<br />
handleEvent methods that accept the event type of interest.<br />
2. Install the class file for your custom feedback listener in the classpath of the server where the<br />
Personalization run-time is installed.<br />
3. Add the class name to the logListeners property in the FeedbackService.properties file, located in<br />
the wp_profile_root/PortalServer/config/config/services directory.<br />
4. Ensure that the LoggingEnabled is set to true.<br />
5. Restart the Personalization run-time server.<br />
Note that whenever logging is enabled, your customized FeedbackListener is enabled. Conversely, your<br />
customized FeedbackListener is disabled whenever logging is disabled. Only the default<br />
FeedbackListener or one custom feedback listener can be active at a time. The specification of a custom<br />
feedback listener will override the registration of the default FeedbackListener with the Log<strong>Manager</strong>.<br />
The following example illustrates the implementation of a customized feedback listener. The listener in<br />
this example will collect cookie data, request query data, and referral query data. Note that this data is<br />
not collected by the default FeedbackListener, but can be set in the event data with a customized<br />
feedback listener.<br />
import com.ibm.wcp.analysis.event.*;<br />
public class ParmCookieListener extends FeedbackListener<br />
{<br />
/**<br />
* Method to handle action events.<br />
*/<br />
public void handleEvent( ActionEvent event )<br />
{<br />
enableParmCollection( event );<br />
super.handleEvent( event );<br />
}<br />
/**<br />
* Method to handle category events.<br />
*/<br />
public void handleEvent( CategoryEvent event )<br />
{<br />
enableParmCollection( event );<br />
super.handleEvent( event );<br />
}<br />
/**<br />
* Method to handle rule events.<br />
*/<br />
public void handleEvent( RuleEvent event )<br />
{<br />
enableParmCollection( event );<br />
super.handleEvent( event );<br />
}<br />
656 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
}<br />
/**<br />
* Method to set switches to collect cookie and<br />
* query string data.<br />
*/<br />
private void enableParmCollection( LogEvent event )<br />
{<br />
event.enableLogCookies();<br />
event.enableLogQueryParms();<br />
event.enableLogReferralParms();<br />
}<br />
Classes and APIs for writing custom listeners<br />
In order to write custom listeners, it is necessary to familiarize yourself with the classes representing<br />
logging events and info that is contained in those events. A reference of these classes is provided here.<br />
LogEvent class<br />
The LogEvent class is the base class for all run-time logging events. The methods in this class are used to<br />
access all basic http request information.<br />
All run-time log data is accessible through the log event sub classes. These log events are constructed by<br />
either a rule trigger or a logging bean. They are then routed to the registered log listeners.<br />
The direct subclasses of the LogEvent class are ActionEvent, CategoryEvent, CustomLogEvent,<br />
PageViewEvent, RatingEvent, and RuleEvent.<br />
public class com.ibm.wcp.analysis.event.LogEvent extends com.ibm.wcp.analysis.event.Event<br />
implements Serializable<br />
Table 154. Method summary<br />
Method<br />
protected LogEvent( HttpServletRequest request )<br />
public Cookie[] getCookies( )<br />
public void setCookies( Cookie[] )<br />
Explanation<br />
Constructor<br />
Returns the cookies available with the request for this<br />
event.<br />
Sets the cookies for this event. Can be used by custom<br />
listeners in order to replace the cookie data received with<br />
the current JSP request.<br />
public void enableLogCookies( boolean enable ) If enable is true, enables the collection of cookies for this<br />
event instance; otherwise, disables the collection of<br />
cookies for this event instance. If you want to collect<br />
cookie information with the FeedbackListener or a<br />
subclassed FeedbackListener, use this method.<br />
public void enableLogCookies( ) Same as enableLogCookies( true ).<br />
public boolean logCookies( )<br />
public String getIPAddress( )<br />
public void setIPAddress( String ipAddress )<br />
public String getMethod( )<br />
Returns true if cookie information should be logged to<br />
the Feedback schema for this event; otherwise, returns<br />
false.<br />
Returns the <strong>Web</strong> client IP address.<br />
Sets the IP address for this event. Can be used by custom<br />
listeners in order to replace the IP address for the current<br />
JSP request.<br />
Returns the HTTP method used in the current JSP<br />
request (GET, POST). Note that the method is not stored<br />
in the Feedback schema.<br />
Personalizing your content 657
Table 154. Method summary (continued)<br />
Method<br />
public void setMethod( String method )<br />
public String getProtocol( )<br />
public void setProtocol( String protocol )<br />
Explanation<br />
Sets the HTTP method for the current JSP request. Can<br />
be used by custom listeners in order to replace the<br />
method from the current JSP request. Note that the<br />
method is not stored in the Feedback schema.<br />
Returns the protocol for the current JSP request (http or<br />
https).<br />
Sets the protocol for the current JSP request. Can be used<br />
by custom listeners in order to replace the protocol from<br />
the current JSP request.<br />
public void enableLogReferralParms( boolean enable ) If enable is true, enables the collection of referral<br />
parameters for this event instance; otherwise, disables<br />
the collection of referral parameters for this event<br />
instance. If you want to collect the referral query string<br />
parameters with the FeedbackListener or a subclassed<br />
FeedbackListener, use this method.<br />
public void enableLogReferralParms( ) Same as enableLogReferralParms( true ).<br />
public boolean logReferralParms( )<br />
public String getRemoteHost( )<br />
public void setRemoteHost( String hostName )<br />
public String getQueryString( )<br />
public void setQueryString( String queryString )<br />
Returns true if referral parameter information should be<br />
logged to the Feedback schema for this event; otherwise,<br />
return false.<br />
Returns the host name of the client machine that issued<br />
this JSP request. Note that the remote host name is not<br />
stored in the Feedback schema.<br />
Sets the host name of the client machine that issued this<br />
JSP request. Can be used by custom listeners that<br />
perform DNS resolution. Note that the remote host name<br />
is not stored in the Feedback schema.<br />
Returns the query string parameters for this event.<br />
Sets the query string parameters for this event. Can be<br />
used by custom listeners in order to replace the query<br />
string parameters for the current JSP request.<br />
public void enableLogQueryParms( boolean enable ) If enable is true, enables the collection of query<br />
parameters for this event instance; otherwise, disables<br />
the collection of referral parameters for this event<br />
instance. If you want to collect the query string<br />
parameters with the FeedbackListener or a subclassed<br />
FeedbackListener, use this method.<br />
public void enableLogQueryParms( ) Same as enableLogQueryParms( true ).<br />
public boolean logQueryParms( )<br />
public String getReferrer( )<br />
public void setReferrer( String referrer )<br />
public String getServerName( )<br />
Returns true if query parameter information should be<br />
logged to the Feedback schema for this event; otherwise,<br />
return false.<br />
Returns the URL of the referral page or null if there was<br />
no referrer.<br />
Sets the referral page for this event. Can be used by<br />
custom listeners in order to replace the referrer for the<br />
current JSP request.<br />
Returns the host name of the server machine that is<br />
processing this JSP request. Note that the server host<br />
name is not stored in the Feedback schema.<br />
658 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 154. Method summary (continued)<br />
Method<br />
public void setServerName( String serverName )<br />
public String getSessionId( )<br />
public void setSessionId( String sessionId )<br />
public Date getTimestamp( )<br />
public void setTimestamp( Date timestamp )<br />
public String getUrl( )<br />
public void setUrl( String url )<br />
public String getUser( )<br />
public void setUser( String user )<br />
public String getUserAgent( )<br />
public void setUserAgent( String userAgent )<br />
public String toString( )<br />
Explanation<br />
Sets the host name of the server machine that is<br />
processing this JSP request. Can be used by custom<br />
listeners to set the name of the current server. Note that<br />
the server host name is not stored in the Feedback<br />
schema.<br />
Returns the id of the session for the current JSP request.<br />
Sets the id of the current user session. Can be used by<br />
custom listeners in order to replace the id of the current<br />
HttpSession object. This can be useful when an<br />
alternative session identification mechanism is used.<br />
Returns the time that this log event was generated. Note<br />
that this timestamp differs slightly from the time the<br />
event was received by the <strong>IBM</strong> <strong>Web</strong>Sphere Application<br />
Server. Note that if there are multiple logging beans or<br />
content spots in a JSP, the timestamps in the generated<br />
log events will be the same.<br />
Sets the time for this log event. Can be used by custom<br />
listeners in order to replace the timestamp used for this<br />
event.<br />
Returns the URL of the page request encapsulated by<br />
this log event.<br />
Sets the URL of the page request for this event. Can be<br />
used by custom listeners in order to replace the URL for<br />
the current JSP request.<br />
Returns the HTTP authenticated user for the current<br />
session.<br />
Sets the user for this event. Can be used by custom<br />
listeners in order to replace the user for the current JSP<br />
request. This can be useful when an alternative<br />
authentication mechanism is used.<br />
Returns the browser engine for the current session.<br />
Sets the user agent for this event. Can be used by custom<br />
listeners in order to replace the user agent from the<br />
current JSP request.<br />
Returns a String representation of this event.<br />
RuleEvent class:<br />
A RuleEvent class is constructed whenever a rule is executed. It contains information about the rule that<br />
was executed and the resulting resources. It is an implicitly constructed event; a logging bean is not<br />
necessary.<br />
public class com.ibm.wcp.analysis.event.RuleEvent extends com.ibm.wcp.analysis.event.LogEvent<br />
implements Serializable<br />
Get an overview of the methods of the RuleEvent class.<br />
Personalizing your content 659
Table 155. Method summary<br />
Method<br />
public RuleEvent( HttpServletRequest request,<br />
RuleInfo<br />
ruleInfo,<br />
ResourceInfo[] resourceInfo )<br />
public RuleInfo getRuleInfo( )<br />
public void setRuleInfo( RuleInfo ruleInfo )<br />
public ResourceInfo[] getResourceInfo( )<br />
public void setResourceInfo( ResourceInfo[] resourceInfo )<br />
public String getResourceClass( )<br />
public void setResourceClass( String className )<br />
public String toString( )<br />
Explanation<br />
Constructor.<br />
Returns a rule information object containing<br />
the campaign and rule name for the rule that<br />
was executed in the content spot.<br />
Sets the rule information for this event. Can<br />
be used by custom listeners in order to<br />
replace the rule execution data.<br />
Returns a resource information array<br />
containing the results of the rule for this<br />
event. The resource information contains the<br />
collection name and resource ids of the<br />
results.<br />
Sets the resource information for this event.<br />
Can be used by custom listeners in order to<br />
replace the resource information.<br />
Returns the class name of the resources<br />
returned by the executed rule.<br />
Sets the class name of the resources returned<br />
by the executed rule. Can be used by custom<br />
listeners in order to replace the class name.<br />
Returns a String representation of this event.<br />
CategoryEvent class:<br />
The CategoryEvent class is used to access the data logged with a Category bean.<br />
public class com.ibm.wcp.analysis.event.CategoryEvent extends com.ibm.wcp.analysis.event.LogEvent<br />
implements Serializable<br />
Get an overview of the methods of the CategoryEvent class.<br />
Table 156. Method summary<br />
Method<br />
public CategoryEvent( HttpServletRequest request,<br />
String[] topics )<br />
public String[] getTopics( )<br />
public void setTopics( String[] topics )<br />
String toString( )<br />
Explanation<br />
Constructor.<br />
Returns the array of topics for this category event.<br />
Sets the topics for this event. Can be used by custom<br />
listeners in order to replace the topics for this event.<br />
Returns a String representation of this event.<br />
ActionEvent class:<br />
The ActionEvent class is used to access the data logged with an Action bean.<br />
public class com.ibm.wcp.analysis.event.ActionEvent extends com.ibm.wcp.analysis.event.LogEvent<br />
implements Serializable<br />
Get an overview of the methods of the ActionEvent class.<br />
660 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 157. Method summary<br />
Method<br />
public ActionEvent( HttpServletRequest request,<br />
ResourceInfo resourceInfo,<br />
String<br />
actionName,<br />
Hashtable actionData )<br />
public ResourceInfo getResourceInfo( )<br />
public void setResourceInfo( ResourceInfo resourceInfo )<br />
public Hashtable getActionData( )<br />
public void setActionData( Hashtable actionData )<br />
public String getActionName( )<br />
public void setActionName( String actionName )<br />
public RuleInfo getRuleInfo( )<br />
public void setRuleInfo( RuleInfo ruleInfo )<br />
public String toString( )<br />
Explanation<br />
Constructor.<br />
Returns the resource upon which the action<br />
in this event was taken.<br />
Sets the resource info for this action event.<br />
Can be used by custom listeners to replace<br />
the resource information in this event.<br />
Returns the supplemental data associated<br />
with this action. The action data is in key<br />
value format. Since a single key can have<br />
multiple values, the action data values are<br />
stored in the hashtable as String arrays.<br />
Sets the action data for this action event. Can<br />
be used by custom listeners to replace the<br />
action data in this event.<br />
Returns the name given to the current action.<br />
Sets the action name for this event. Can be<br />
used by custom listeners to replace the action<br />
name in this event.<br />
Returns the rule associated with this action.<br />
The subject rules for this action are<br />
determined by all rules in the current session<br />
that returned the target resource.<br />
Sets the rule information for this action event.<br />
Can be used by custom listeners to replace<br />
the rule information in this event.<br />
Returns a String representation of this event.<br />
CustomLogEvent class:<br />
Get an overview of the CustomLogEvent class and its methods.<br />
The CustomLogEvent class is used to access the data logged with a CustomLog bean.<br />
public class com.ibm.wcp.analysis.event.CustomLogEvent extends com.ibm.wcp.analysis.event.LogEvent<br />
implements Serializable<br />
Table 158. Method summary<br />
Method<br />
public CustomLogEvent( HttpServletRequest request,<br />
Hashtable customData )<br />
public Hashtable getCustomData( )<br />
public void setCustomData( Hashtable customData )<br />
Explanation<br />
Constructor.<br />
Returns the custom data as key value<br />
information. Since a single custom data key<br />
can have multiple values, the custom data<br />
values are stored in the hashtable as String<br />
arrays.<br />
Sets the custom data for this event. Can be<br />
used by custom listeners to replace the data<br />
in this custom data event.<br />
Personalizing your content 661
Table 158. Method summary (continued)<br />
Method<br />
public String toString( )<br />
Explanation<br />
Returns a String representation of this event.<br />
RatingEvent class:<br />
The RatingEvent class is used to access the data logged with a Rating bean.<br />
public class com.ibm.wcp.analysis.event.RatingEvent extends com.ibm.wcp.analysis.event.LogEvent<br />
implements Serializable<br />
Get an overview of the methods of the RatingEvent class.<br />
Table 159. Method summary<br />
Method<br />
public RatingEvent( HttpServletRequest request,<br />
ResourceInfo resourceInfo,<br />
int rating )<br />
public ResourceInfo getResourceInfo( )<br />
public void setResourceInfo( ResourceInfo resourceInfo )<br />
public int getRating( )<br />
public void setRating( int rating )<br />
public String toString( )<br />
Explanation<br />
Constructor.<br />
Returns the resource that is the target of the<br />
current rating. The resource object returned<br />
contains the collection name and resource id.<br />
Sets the resource information for this rating<br />
event. Can be used by custom listeners to<br />
replace the resource information for this<br />
rating.<br />
Returns the rating as an integer value. The<br />
value can be any valid integer as defined by<br />
the <strong>Web</strong> application implementor.<br />
Sets the rating for this event. Can be used by<br />
custom listeners to replace the rating in this<br />
event.<br />
Returns a String representation of this event.<br />
PageViewEvent class:<br />
The PageViewEvent class is used to access data logged by a PageView bean.<br />
public class com.ibm.wcp.analysis.event.PageViewEvent extends com.ibm.wcp.analysis.event.LogEvent<br />
implements Serializable<br />
Get an overview of the methods of the PageViewEvent class.<br />
Table 160. Method summary<br />
Method<br />
public PageViewEvent( HttpServletRequest request )<br />
public String toString( )<br />
Explanation<br />
Constructor.<br />
Returns a String representation of this event.<br />
ResourceInfo class<br />
The ResourceInfo class is a wrapper class for a resource id and collection name tuple.<br />
public class com.ibm.wcp.analysis.event.ResourceInfo extends Object<br />
implements Serializable<br />
662 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Get an overview of the methods of the ResourceInfo class.<br />
Table 161. Method summary<br />
Method<br />
public ResourceInfo( String resourceId,<br />
String collectionName )<br />
public ResourceInfo( )<br />
public String getResourceId( )<br />
public void setResourceId( String resourceId )<br />
public String getCollectionName( )<br />
public void setCollectionName( String collectionName )<br />
public String toString( )<br />
public boolean equals( ResourceInfo resourceInfo )<br />
public int hashCode( )<br />
Explanation<br />
Constructor.<br />
Constructor.<br />
Returns the id of the resource.<br />
Sets the id of the resource.<br />
Returns the name of the collection that<br />
contains this resource.<br />
Sets the name of the collection that contains<br />
this resource.<br />
Returns a String representation of this<br />
resource tuple.<br />
Returns true if and only if (1) the objects are<br />
the same or (2) the resource id and collection<br />
name information is equal.<br />
Returns a hash code enabling objects of this<br />
type to be used as hash keys.<br />
RuleInfo class<br />
The RuleInfo class is a wrapper class for a rule name and campaign name tuple.<br />
public class com.ibm.wcp.analysis.event.RuleInfo extends Object<br />
implements Serializable<br />
Get an overview of the methods of the RuleInfo class.<br />
Table 162. Method summary<br />
Method<br />
public RuleInfo( String rule,<br />
String collectionName )<br />
public RuleInfo( )<br />
public String getRule( )<br />
public void setRule( String rule )<br />
public String getCampaign( )<br />
public void setCampaign( String campaign )<br />
public String toString( )<br />
public boolean equals( RuleInfo ruleInfo )<br />
Explanation<br />
Constructor.<br />
Constructor.<br />
Returns the name of the rule.<br />
Sets the name of the rule.<br />
Returns the name of the campaign containing this<br />
rule.<br />
Sets the name of the campaign containing this rule.<br />
Returns a String representation of this rule tuple.<br />
Returns true if and only if (1) the objects are the<br />
same or (2) if the rule names are equal and the<br />
campaign names are equal.<br />
Reports<br />
Once data has been logged to the Feedback database schema, it is possible to use any reporting tool that<br />
can connect to a standard SQL database to generate reports based on this data. Reference the Feedback<br />
database schema section of the Information Center when writing such reports.<br />
Personalizing your content 663
Related concepts:<br />
“Feedback database schema”<br />
The Feedback schema, within the Feedback database, stores data about your <strong>Web</strong> site visitors' actions.<br />
This schema is closely aligned with the Tivoli Site Analyzer schema.<br />
Feedback database schema<br />
The Feedback schema, within the Feedback database, stores data about your <strong>Web</strong> site visitors' actions.<br />
This schema is closely aligned with the Tivoli Site Analyzer schema.<br />
Any application that can connect to a standard SQL database can make use of the data that has been<br />
logged to the Feedback database schema.<br />
For instance, you can use the data in the Feedback database schema to:<br />
v Generate reports using reporting software.<br />
v Integrate OnLine Analytical Processing (OLAP) tools.<br />
v Create your own data integration tools.<br />
664 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Feedback schema diagram<br />
View a diagram that depicts the Feedback schema for the Personalization database.<br />
Personalizing your content 665
Feedback schema tables<br />
Learn about the feedback schema tables and the fields or columns they contain.<br />
The following tables are used by the Feedback schema:<br />
Table Name: Browsers<br />
Table 163. Table description: This table contains the client <strong>Web</strong> browser defined internally by a User Agent<br />
mapping.<br />
Column Name<br />
Column description<br />
Browser_ID<br />
The primary key. A unique number automatically<br />
generated by the database.<br />
Name<br />
The browser name defined internally by a User Agent<br />
mapping.<br />
Table Name: Calendar<br />
Table 164. Table description: Initially, this table is empty. The Feedback component calculates date stamp IDs,<br />
assuming a start date of 1/1/1995. The table can be populated with a new configuration task for applications that use<br />
custom logging or reports that reference this table.<br />
Column Name<br />
Column description<br />
Date_ID<br />
The primary key. A unique identifier automatically<br />
generated by the database.<br />
Month Month expressed as integer 1-12<br />
Day Day expressed as integer 1-31<br />
Year Year expressed as integer 1995-2030<br />
Quarter Quarter expressed as integer 1-4<br />
Weekday Weekday expressed as integer 1-7<br />
WeekOfYear The week number expressed as an integer 1-52<br />
EpochDay<br />
The number of days since the beginning date in this<br />
table.<br />
EpochWeek<br />
The number of weeks since the beginning date in this<br />
table.<br />
EpochMonth<br />
The number of months since the beginning date in this<br />
table.<br />
EpochQuarter<br />
The number of quarters since the beginning date in this<br />
table.<br />
AggrWeekID<br />
The identifier of the first day of the week that this day<br />
belongs to.<br />
AggrMonthID<br />
The identifier of the first day of the month that this day<br />
belongs to.<br />
AggrQuarterID<br />
The identifier of the first day of the quarter that this day<br />
belongs to.<br />
AggrYearID<br />
The identifier of the first day of the year that this day<br />
belongs to.<br />
666 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table Name: Domain<br />
Table description: This table is RESERVED for future Feedback component use.<br />
Column Name<br />
Domain_ID<br />
Name<br />
Column Description<br />
The primary key; a unique identifier automatically<br />
generated by the database.<br />
The domain name as resolved from the TCP/IP address.<br />
Table Name: Entities<br />
Table description: This table is RESERVED for Feedback component use.<br />
Column Name<br />
Entity_ID<br />
Name<br />
Type<br />
ParentEntity_ID<br />
Column Description<br />
The primary key; a unique identifier automatically<br />
generated by the database.<br />
The name of the entity.<br />
Indicates the type of entity: 0=entity 1=category<br />
2=key/value pair<br />
For a category entity, indicates the entity the category is<br />
based on.<br />
Table Name: EntityTraversal<br />
Table description: This table is RESERVED for <strong>IBM</strong> Feedback component use.<br />
Column Name<br />
EntityTraversal_ID<br />
Entity_ID<br />
Table1<br />
Column1<br />
Table2<br />
Column2<br />
PickThis<br />
Column Description<br />
The primary key. A unique identifier automatically<br />
generated by the database.<br />
The identifier of the entity we start from.<br />
The table this entity is stored in.<br />
ID column for this entity.<br />
The table of the parent entity.<br />
Join column between entity and parent entity table.<br />
RESERVED for <strong>IBM</strong> Feedback component use.<br />
Table Name: Hit_Facts<br />
Table description: This table contains the information processed during data collection. Each row<br />
represents a hit to a page of your <strong>Web</strong> site--if that page contains a rule or logging bean. Not all fields are<br />
used on each entry.<br />
Note: The first date stamp (date ID=1) corresponds to 1/1/1995. Time stamp IDs are calculated such that<br />
each second of the day has a separate ID.<br />
Column Name<br />
JS_ID<br />
CookiesStatus_ID<br />
Hits<br />
Column Description<br />
A foreign key to the JavaScriptStatus table.<br />
A foreign key to the CookiesStatus table.<br />
The actual number of hits.<br />
Personalizing your content 667
Column Name<br />
Status_ID<br />
ReturnCode_ID<br />
HTTPVersion_ID<br />
RecordType<br />
Column Description<br />
A foreign key to the ResetStatus table.<br />
A foreign key to the ReturnCodes table.<br />
A foreign key to the HTTPVersion table.<br />
Indicates what type of log file this hit came from. This<br />
field is for Feedback component use only.<br />
LastUpdated Time stamp of when this row was last created /<br />
updated.<br />
PageViews<br />
The actual number of page views. If the resource for this<br />
hit is a page, this field is set to 1.<br />
TimeTaken<br />
Time taken by the <strong>Web</strong> server to process this hit. This<br />
column is not implemented and is RESERVED for future<br />
Feedback component use.<br />
Bytes<br />
The number of bytes sent by the <strong>Web</strong> server to the client<br />
browser for this hit.<br />
CorrelationKey<br />
The key used to correlate information between the<br />
various types of logs that can be processed during data<br />
collection.<br />
Session_ID<br />
The identifier of the session this hit belongs to. A foreign<br />
key to the Session_Facts table.<br />
HitTimestmp<br />
Time stamp of this hit expressed as a Java timeInMillis<br />
value.<br />
LocalDate_ID<br />
The date of this hit. The first date stamp (date ID=1)<br />
corresponds to 1/1/1995. See also, Populating<br />
CALENDAR and TIMEOFDAY tables.<br />
ImportHistory_ID<br />
Not implemented. This field is RESERVED for future<br />
Feedback component use.<br />
Hit_ID<br />
The primary key. A unique identifier automatically<br />
generated by the database.<br />
RefProtocol_ID<br />
Protocol that the referrer used to request this hit. A<br />
foreign key to the Protocols table.<br />
Referrer_ID<br />
The referrer for this hit. A foreign key to the Referrer<br />
table.<br />
Protocol_ID<br />
The protocol the <strong>Web</strong> server used to process this hit. A<br />
foreign key to the Protocols table.<br />
LocalTimeOfDay_ID<br />
The time of this hit. See also, Populating CALENDAR<br />
and TIMEOFDAY tables.<br />
GMTDate_ID<br />
The GMT date of this hit. See also, Populating<br />
CALENDAR and TIMEOFDAY tables.<br />
Resource_ID<br />
The resource requested by the client browser. A foreign<br />
key to the Resources table.<br />
GMTTimeOfDay_ID<br />
The GMT date of this hit. See also, Populating<br />
CALENDAR and TIMEOFDAY tables.<br />
Resource_ID<br />
The resource requested by the client browser. A foreign<br />
key to the Resources table.<br />
GMTTimeOfDay_ID<br />
The GMT time of this hit. See also, Populating<br />
CALENDAR and TIMEOFDAY tables.<br />
668 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table Name: HitParms<br />
Table description: This table lists the personalization data (such as rules, campaigns, ratings), as well as<br />
query strings associated with a given hit.<br />
Column Name<br />
Hit_ID<br />
Parms_ID<br />
Ordering<br />
ParmType<br />
Column Description<br />
The identifier of the Hit that contains the query string.<br />
This is a foreign key to the ID column of the Hit_facts<br />
table.<br />
The identifier for a specific query string. This is a foreign<br />
key to the ID column of the Parms table.<br />
Ordering is used to group a set of keys during the<br />
processing of a <strong>Web</strong> page.<br />
Identifies the type of key value data. For example,<br />
personalization rules data, query strings, or referral<br />
query status.<br />
Table Name: HTTPVersion<br />
Table description: This table lists all known HTTP versions. It is pre-populated by the Feedback<br />
component when the table is created.<br />
Column Name<br />
HTTPVersion_ID<br />
Name<br />
Column Description<br />
1 - 'HTTP 1.0' 2 - 'HTTP 1.1' 99 - 'Unknown'<br />
The name of the HTTP version.<br />
Table Name: ImportHistory<br />
Table description: This table is RESERVED for future Feedback component use<br />
Column Name<br />
ImportHistory_ID<br />
BeginTimeStamp<br />
EndTimeStamp<br />
Status<br />
Column Description<br />
The primary key. A unique number automatically<br />
generated by the database.<br />
Start time of the import, expressed as a JAVA<br />
timeInMillis value.<br />
Time the import finished, expressed as a JAVA<br />
timeInMillis value.<br />
The status of the import.<br />
Table Name: Key<br />
Table description: Lists all Keys (part of Key/Value pairs) encountered during data collection.<br />
Column Name<br />
Key_ID<br />
Name<br />
Column Description<br />
The primary key. A unique identifier automatically<br />
generated by the database.<br />
the name of the key.<br />
Personalizing your content 669
Table Name: Key_Value_combo<br />
Table description: This table lists all Key/Value pairs that are grouped together.<br />
Column Name<br />
Parms_ID<br />
KeyValuePair_ID<br />
Column Description<br />
A foreign key to the Parms table.<br />
A foreign key to the Key_Value_Pair table.<br />
Table Name: Key_Value_Pair<br />
Table description: This table lists all Key/Value pairs processed during data collection.<br />
Column Name<br />
KeyValuePair_ID<br />
Key_ID<br />
Value_ID<br />
Column Description<br />
The primary key. A unique identifier generated<br />
automatically by the database.<br />
A foreign key to the Key table.<br />
A foreign key to the Value table.<br />
Table Name: Networks<br />
Table description: This table contains all the TCP/IP addresses processed during data collection.<br />
Column Name<br />
Network_ID<br />
IP_Address<br />
Subdomain_ID<br />
Domain_ID<br />
Column Description<br />
The primary key; a unique number automatically<br />
generated by the database.<br />
TCP/IP address as obtained from the page hit.<br />
The TCP/IP subdomain this address belongs to. A<br />
foreign key to the ID column of the Subdomains table.<br />
The TCP/IP domain this address belongs to. A foreign<br />
key to the ID column of the Domain table.<br />
Table Name: Parms<br />
Table description: This table lists all the key/value pairs strings processed during data collection.<br />
Column Name<br />
KVCount<br />
ParmsString<br />
<strong>Web</strong>Node_ID<br />
Parms_ID<br />
Column Description<br />
Indicates how many key/value pairs are in this query<br />
string.<br />
This field is not used.<br />
This field is not used.<br />
A unique identifier automatically generated by the<br />
database.<br />
Table Name: Platforms<br />
Table description: This table contains the client operating system defined internally by a User Agent<br />
mapping.<br />
670 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Column Name<br />
Platform_ID<br />
Name<br />
Column Description<br />
The primary key. A unique number automatically<br />
generated by the database.<br />
The Operating System name as defined via the User<br />
Agent global settings.<br />
Table Name: Protocols<br />
Table description: Lists all network protocols processed during data collection.<br />
Column Name<br />
Protocol_ID<br />
Name<br />
Column Description<br />
The primary key. A unique identifier generated<br />
automatically by the database.<br />
The name of the network protocol.<br />
Table Name: Referrer<br />
Table description: This table contains all the referrers processed during data collection.<br />
Column Name<br />
Referrer_ID<br />
RefHost_ID<br />
ReferrerURL_ID<br />
Column Description<br />
The primary key. A unique number automatically<br />
generated by the database.<br />
A foreign key to the ID column of the REFERRERHOST<br />
table.<br />
A foreign key to the ID column of the REFERRERURL<br />
table.<br />
Table Name: ReferrerHost<br />
Table description: This table stores all the referrer site host names processed during data collection.<br />
Column Name<br />
RefHost_ID<br />
Column Description<br />
The primary key. A unique number automatically<br />
generated by the database.<br />
IsLocal Indicates whether this referrer is internal or external. 0 -<br />
external referrer 1 - internal referrer<br />
Name<br />
Host name part of referrer as parsed from the <strong>Web</strong> log<br />
record.<br />
Table Name: ReferrerURL<br />
Table description: This table contains the referrer pages processed during data collection. Note that the<br />
referrer site's host name is stored in the ReferrerHost table.<br />
Column Name<br />
ReferrerURL_ID<br />
Name<br />
Column Description<br />
The primary key. A unique number automatically<br />
generated by the database.<br />
The name of the referrer page as parsed from the <strong>Web</strong><br />
log record.<br />
Personalizing your content 671
Table Name: Resources<br />
Table description: This table contains all resources (URLs) processed during data collection.<br />
Column Name<br />
Resource_ID<br />
IsImage<br />
IsDirectory<br />
Name<br />
Column Description<br />
The primary key. A unique number automatically<br />
generated by the database. IsPage Indicates whether this<br />
resource is a page. 0 = false 1=true<br />
Indicates whether this resource is an image. 0=false<br />
1=true<br />
Indicates whether this resources is a file directory. This<br />
column is not currently implemented and is RESERVED<br />
for future Feedback component use.<br />
The resource string as parsed from the <strong>Web</strong> log record.<br />
Table Name: Session_Facts<br />
Table description: This table contains all the visits calculated from the <strong>Web</strong> log data. Note: The first date<br />
stamp (date ID=1) corresponds to 1/1/1995. Time stamp IDs are calculated such that each second of the<br />
day has a separate ID.<br />
Column Name<br />
firstHitTimestmp<br />
lastHitTimestmp<br />
Result_ID<br />
User_ID<br />
Referrer_ID<br />
Sessions<br />
LastUpdated<br />
PageViews<br />
Duration<br />
Hits<br />
SessionIdentifier<br />
SessionTimestmp<br />
LocalDate_ID<br />
LocalTimeOfDay_ID<br />
Column Description<br />
Timestamp of the first hit in session expressed as a JAVA<br />
timeInMillis value.<br />
Timestamp of the last hit in the session expressed as a<br />
JAVA timeInMillis value.<br />
Foreign key to the ID column of the RESULT table. For<br />
your use in classifying this session.<br />
The visitor to your site. A foreign key to the Users table.<br />
The referrer for this session. A foreign key to the Referrer<br />
table.<br />
The actual number of sessions. This field will always<br />
contain the value. It is used during Report Database<br />
processing.<br />
Timestamp of when this row was last created/updated.<br />
Number of page views that are part of this session.<br />
Duration of the session up to the last hit. The Feedback<br />
component cannot calculate the full duration of the<br />
session because there is no explicit end-of-session signal<br />
from the <strong>Web</strong> log.<br />
Number of hits that are part of this session.<br />
The session identifier string from the <strong>Web</strong> log. This is<br />
sometimes referred to as a session cookie.<br />
Beginning of this session expressed as a JAVA<br />
timeInMillis value.<br />
This is the starting date of the session in the local time<br />
zone of the <strong>Web</strong> server that handled this session. See<br />
also, Populating CALENDAR and TIMEOFDAY tables.<br />
This is the start time of the session in the local time zone<br />
of the <strong>Web</strong> server which handled this session. See also,<br />
Populating CALENDAR and TIMEOFDAY tables.<br />
672 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Column Name<br />
ImportHistory_ID<br />
Session_ID<br />
UserAgent_ID<br />
EntryResource_ID<br />
Network_ID<br />
GMTDate_ID<br />
ExitResource_ID<br />
GMTTimeOfDay_ID<br />
Column Description<br />
This column is not used.<br />
The primary key; a unique number automatically<br />
generated by the database.<br />
The signature of the <strong>Web</strong> browser used for this session.<br />
The first resource viewed during this session.<br />
Pointer to the Networks table.<br />
This is the start date of the session translated to the GMT<br />
time zone. See also, Populating CALENDAR and<br />
TIMEOFDAY tables.<br />
The last resource viewed during this session.<br />
This is the start time of the session translated to the<br />
GMT time zone. See also, Populating CALENDAR and<br />
TIMEOFDAY tables.<br />
Table Name: Result<br />
Table description: For your use in classifying sessions.<br />
Column Name<br />
Result_ID<br />
Name<br />
Column Description<br />
The primary key. We recommend that you use numbers<br />
automatically generated by the database. In DB2/UDB,<br />
this column is defined as IDENTITY GENERATED BY<br />
DEFAULT. On ORACLE, the sequence RESULT_ID is<br />
created for your use with this table.<br />
For your use.<br />
Table Name: SessionParms<br />
Table description: This table lists all the Key/Value pairs associated with the session referrer.<br />
Column Name<br />
Parms_ID<br />
Session_ID<br />
ParmType<br />
Column Description<br />
Foreign key to the ID column of the PARMS table.<br />
Foreign key to the ID column of the SESSION_FACT<br />
table.<br />
Identifies the type of Key/Value data.<br />
Table Name: Subdomains<br />
Table description: This table is RESERVED for future Feedback component use.<br />
Column Name<br />
Domain_ID<br />
Subdomain_ID<br />
Column Description<br />
Foreign key to the ID column of the DOMAIN table. The<br />
TCP/IP domain this subdomain belongs to. Name<br />
Subdomain name string from a resolved TCP/IP address.<br />
The primary key, a unique number automatically<br />
generated by the database.<br />
Personalizing your content 673
Table Name: TimeOfDay<br />
Table description: Initially, this table is empty. Table rows are reserved to list all seconds in a day, when<br />
the database is populated. The table can be populated with a new configuration task for applications that<br />
use custom logging or reports that reference this table.<br />
Column Name<br />
Column Description<br />
Minute a number in the range 0..59<br />
Hour a number in the range 0..23<br />
Second a number in the range 0..59<br />
AggrHourID<br />
For each database row, indicates which hour it belongs<br />
to.<br />
TimeOfDay_ID<br />
The primary key. A unique number automatically<br />
generated by the database.<br />
SecondsSinceMidnig<br />
The number of seconds elapsed since midnight.<br />
TimeSpan_ID<br />
Foreign key to the ID column of the TIMESPAN table.<br />
Table Name: TimeSpan<br />
Table description: For your use in classifying time of day values.<br />
Column Name<br />
TimeSpan_ID<br />
Name<br />
Column Description<br />
The primary key. We recommend that you use numbers<br />
automatically generated by the database. In DB2/UDB,<br />
this column is defined as IDENTITY GENERATED BY<br />
DEFAULT. On ORACLE, the sequence TIMESPAN_ID is<br />
created for your use with this table.<br />
For your use.<br />
Table Name: UserAgents<br />
Table description: This table contains all UserAgents processed during data collection.<br />
Column Name<br />
Browser_ID<br />
Name<br />
Platform_ID<br />
UserAgent_ID<br />
Column Description<br />
Foreign key to the ID column of the BROWSERS table.<br />
The UserAgent string as available from the <strong>Web</strong> page hit.<br />
Foreign key to the ID column of the PLATFORMS table.<br />
The primary key. A unique number automatically<br />
generated by the database.<br />
Table Name: Users<br />
Table description: This table contains all userids processed from data collection.<br />
Column Name<br />
FirstVisitDate_ID<br />
Name<br />
Column Description<br />
Date of first visit to the site by this userid. See also,<br />
Populating CALENDAR and TIMEOFDAY tables.<br />
The userid string as parsed from the <strong>Web</strong> log record.<br />
674 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Column Name<br />
User_ID<br />
Column Description<br />
The primary key. A unique number automatically<br />
generated by the database.<br />
Table Name: Value<br />
Table description: Lists all values (from Key/Value pairs ) encountered during data collection.<br />
Column Name<br />
Value_ID<br />
Value<br />
Column Description<br />
A unique identifier automatically generated by the<br />
database.<br />
Value string of Key/Value pair parsed from a <strong>Web</strong> log<br />
record.<br />
The following tables are included in the Feedback schema, however, the tables are not used and are not<br />
populated.<br />
v Aggregate_<strong>Content</strong><br />
v AggregateKey<br />
v Aggregates<br />
v AggregateStatus<br />
v Categories<br />
v Category_Patterns<br />
v Category_Sets<br />
v CategoryMap<br />
v CookiesStatus (Note: This table may be pre-populated, however, the table is not used.)<br />
v JavaScriptStatus<br />
v Linkage<br />
v Log_file_status<br />
v Logs<br />
v ResetStatus<br />
v ReturnCodes<br />
v ServerNodes<br />
v <strong>Web</strong>_Nodes<br />
Key value pairs<br />
The additional information passed by rule logging events and certain bean logging events is logged to<br />
the Feedback database in the form of key value pairs.<br />
Rule logging events and certain bean logging events pass additional information such as rule names,<br />
action names, resource collection names, resource identifiers, etc. when they are fired (refer to the<br />
individual rule logging and logging bean sections for more information on what information may be<br />
passed). This data is logged to the Feedback database in the form of key value pairs. Key strings<br />
representing each type of data are stored in the key table of the Feedback schema, while the values that<br />
each key references are recorded in the value table of the Feedback schema. Refer to the Feedback schema<br />
diagram for more information on how to join these tables to retrieve a mapping of values onto keys.<br />
The following tables describe what each key represents:<br />
Personalizing your content 675
Rule related keys:<br />
Table 165. Key descriptions<br />
Key<br />
wcpRule<br />
wcpCampaign<br />
wcpCollection<br />
wcpResourceId<br />
Description<br />
The name of the rule that was fired<br />
The campaign associated with the rule<br />
The name of the resource collection associated with the<br />
rule<br />
An identifier for each individual resource the associated<br />
resource collection<br />
Action bean related keys:<br />
Key<br />
wcpAction<br />
wcpActionResId<br />
wcpActionCollection<br />
wcpActionRule<br />
wcpActionCampaign<br />
Description<br />
The name of the action being logged<br />
The resource (if any) that has been acted upon<br />
The name of the resource collection associated with the<br />
above resource<br />
The name of the rule (if any) that surfaced the resource<br />
being acted upon<br />
The campaign (if any) associated with the above rule<br />
Category bean related keys:<br />
Key<br />
wcpCategory<br />
Description<br />
A category string being logged<br />
Rating bean related keys:<br />
Key<br />
wcpRating<br />
wcpRatingResId<br />
wcpRatingCollection<br />
Description<br />
The rating value being logged<br />
The resource (if any) that is associated with the rating<br />
The name of the resource collection associated with the<br />
above resource<br />
676 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Blogs and wikis<br />
Aset of preinstalled <strong>Web</strong> content libraries are also supplied to allow you to add blog and wiki features to<br />
your <strong>Web</strong> sites. Use blogs, blog libraries, and wikis to tap into the power of the community and to<br />
change the way you work.<br />
Blogs are a great tool to use when you want to generate ideas around a single topic. You can use blogs<br />
for your own individual work or to gain feedback on a single concept from the larger team. Blog libraries<br />
take blogs to the next level. Rather than creating a blog per topic, you can use blog libraries to keep track<br />
of multiple topics in a centralized location. Wikis also provide you with another alternative for authoring<br />
content. Simple inline editing, including the insertion of images and links, makes authoring wikis quick<br />
and easy. You can also tag and rate blog and wiki content.<br />
Blogs, blog libraries, and wikis use the template libraries provided by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. Each<br />
blog, blog library, and wiki has its own library. The page hierarchy that is provided for these components<br />
is the common one defined by the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> template libraries.<br />
Working with blogs<br />
Use blogs and blog libraries to provide news and commentary on a variety of subjects pertinent to your<br />
intranet and extranet sites. Blogs and blog libraries typically combine text with graphics and links to<br />
other blogs and <strong>Web</strong> sites. Entries that you create and post are arranged in reverse-chronological order,<br />
with the newest entry displayed first. Readers can post comments about your entries, fostering<br />
discussions and online networking. You can manage your own blog entries and comment on other blog<br />
entries.<br />
You can tag and rate your blogs; see Tagging and rating portal content for information. If you add a tag<br />
to a blog, you can click on the tag link, which takes you to the Tag Center; see Tag Center for<br />
information.<br />
Tip: Use a blog for sharing information on a single subject. Use a blog library to share information on<br />
multiple discussions.<br />
Related tasks:<br />
“<strong>Web</strong> content library management” on page 209<br />
As an administrator you need to periodically assist content managers with library maintenance, such as<br />
disabling or deleting a library. Keep in mind that some library tasks can reduce the performance of your<br />
server while running. Therefore library maintenance should only occur during off-peak periods when the<br />
least number of users are accessing a library.<br />
Learn about the template libraries used by blogs and blog libraries<br />
Blogs and blog libraries use the template libraries provided by <strong>IBM</strong> ® <strong>Lotus</strong> <strong>Web</strong> <strong>Content</strong> Management.<br />
Blogs use the blog resources and blog solo templates. Blog libraries use the blog resources and blog<br />
templates. The page hierarchy that is provided for these components is the common one defined by the<br />
<strong>Web</strong> <strong>Content</strong> Management template libraries.<br />
Note: The templates described in this topic only work with the theme customizer used in the default<br />
theme. Changes to these templates will affect all blogs and blog libraries on the site. It is not<br />
recommended to make changes to manual copies of these templates.<br />
677
Blog resources template<br />
The blog resources template provides the authoring and presentation templates for blogs and blog<br />
libraries. All blogs and blog libraries on the site use this single blog resource template. Page Builder in<br />
the default theme also points to the blog resources template.<br />
Note: The blog resources template has common components that are shared with the wiki resources<br />
template.<br />
Blog solo template<br />
When you add a blog to a page, a copy of the blog solo template is created using the name that you<br />
provided when adding a blog to a page. This copy of the blog template is used to store posts and<br />
comments.<br />
Blog template<br />
When you add a blog library to a page, a copy of the blog template is created using the name that you<br />
provided when adding the blog to a page. This copy of the blog template is used to store posts and<br />
comments.<br />
Adding a blog or blog library to a page<br />
Add a blog to a page to collaborate with your team on a single topic. Add a blog library to a page to<br />
collaborate with your team on multiple topics in a centralized view.<br />
Note:<br />
v If you have Editor access to the portal or the portal page, you can add a blog or blog library to a page.<br />
v Refer to the <strong>Web</strong>Sphere Portal Family Wiki for an example of how you can modify your custom theme<br />
to enable the capability of adding blogs and wikis to a page.<br />
v Tagged web content displayed in the JSR 286 web content viewer is only available when there is a<br />
single instance of this portlet on the page. When you click on a tag result, the Tag Center broadcasts<br />
the information on what content should display in the viewer using a public render parameter. If you<br />
have multiple instances of web content being displayed in the JSR 286 web content viewer, then these<br />
instances will display the content that you tagged rather than display the original content of these<br />
instances. Refer to the related links section of this topic for a link to more information on public render<br />
parameters.<br />
1. Create a page to contain the blog.<br />
2. Click Customize to add a blog or blog library to the page. See “Adding content” on page 132 for<br />
more information on adding content to a page using the Customize link.<br />
Note:<br />
v By clicking Customize, you are copying the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> template library used to<br />
create a blog or blog library and placing an instance of the JSR 286 <strong>Web</strong> content viewer to a page.<br />
v The name that you provide for your blog or blog library will display as the portlet title, library<br />
display title, and library name when using alphanumeric characters, spaces, and the following<br />
characters: such as $-_.!(),. Other characters will be replaced in the actual library name<br />
with characters that are supported by a by a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> library.<br />
After adding a blog to a page, click Create Post to add content. To modify your content, click Edit. To<br />
delete a post, click Delete.<br />
After adding a blog library to a page, click Create Blog and Create Post to add content. To modify your<br />
content, click Edit. To delete a post, click Delete.<br />
678 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related tasks:<br />
<strong>Web</strong>Sphere Portal Family Wiki<br />
Adding existing blogs or blog libraries to a page<br />
You can add a JSR 286 web content viewer to a page to point to an existing blog or blog library on the<br />
site.<br />
Refer to the following steps only when you are adding a web content viewer portlet from the Page<br />
Properties menu and configuring this web content viewer to point to an existing blog or blog library. To<br />
create a new blog or blog library, use the Customize link to add a blog or blog library to a page.<br />
Note: Tagged web content displayed in the JSR 286 web content viewer is only available when there is a<br />
single instance of this portlet on the page. When you click a tag result, the Tag Center broadcasts the<br />
information on what content should display in the viewer using a public render parameter. If you have<br />
multiple instances of web content being displayed in the JSR 286 web content viewer, then these instances<br />
display the content that you tagged rather than display the original content of these instances. Refer to<br />
the related links section of this topic for a link to more information on public render parameters.<br />
1. After adding a JSR 286 <strong>Web</strong> content viewer to a page, click the drop-down menu located in the web<br />
content viewer title bar, and select Edit Shared Settings.<br />
2. By <strong>Content</strong> Type, select <strong>Content</strong> Item.<br />
3. By <strong>Content</strong>, click Edit, and select an existing blog from the library drop-down menu.<br />
4. Expand <strong>Content</strong> by Site Area. For example, click <strong>Content</strong> by Site Area > Blog > Central (to locate a<br />
specific blog library template) or <strong>Content</strong> by Site Area > Blog > Blog template name.<br />
5. Select a blog or blog library to render in the web content viewer, and click OK.<br />
6. If you added the web <strong>Content</strong> viewer to the page using the Page Properties menu, you must<br />
configure the Broadcasting settings of the <strong>Web</strong> <strong>Content</strong> viewer.<br />
a. Expand Advanced Options to view the Links section.<br />
b. Ensure the Broadcast links to option is set to None or This page.<br />
c. Ensure the Receive Links from option, is set to This Portlet Only Or Other portlets and this<br />
portlet.<br />
Related tasks:<br />
“Editing the settings of a web content viewer portlet” on page 494<br />
Use a local web content viewer to deliver websites that require the use of <strong>Web</strong>Sphere Portal based<br />
features such as authoring tools.<br />
Assigning blog access to users<br />
The Portal administrator can assign Editor access to you if you need to create and manage blogs within<br />
the site. If you are given Editor access to a blog, you can create or modify posts in that blog. If you are<br />
given Editor rights to a blog library, you can create and modify blogs and you can create and modify<br />
posts in that blog library. If you have <strong>Manager</strong> rights to a blog, you can create, modify, and delete posts<br />
and delete comments in that blog. If you are given <strong>Manager</strong> rights to a blog library, you can create,<br />
modify, and delete blogs and you can create, modify, and delete posts and delete comments within the<br />
blogs.<br />
For an example of assigning access to users, refer to the instructions below for adding users to the Editor<br />
role:<br />
1. Go to Administration > Portal <strong>Content</strong> > <strong>Web</strong> <strong>Content</strong> Libraries.<br />
2. Navigate to a library to assign access, and click Set Permissions.<br />
3. Click Edit Role beside the Editor role.<br />
Blogs and wikis 679
4. Click Add to assign users or groups to the Editor role. Search for the users or groups that belong to<br />
this role.<br />
To enable all authenticated users to create new blogs, but only allow users to create posts in blogs they<br />
have created, use the following settings on your blog template library:<br />
Table 166. An example of access settings for a blog<br />
Access settings Group Access level Other settings<br />
Your blog template library<br />
All Authenticated Portal<br />
Users<br />
All Authenticated Portal<br />
Users<br />
Contributor<br />
Disable propagation<br />
Your blog template library<br />
User<br />
The content role in your<br />
blog template library<br />
All Authenticated Portal<br />
Users<br />
Editor<br />
Related concepts:<br />
“Developing an access control strategy” on page 532<br />
You can restrict access to selected users and groups to the views within an authoring portlet, the items<br />
managed by the authoring portlet, and to elements and pages displayed within a website.<br />
Related tasks:<br />
“Defining roles within a library” on page 211<br />
You can define the access of a user or group for a library to determine who has access to a library, and to<br />
define access to the different views within the authoring portlet.<br />
Viewing blogs and blog posts<br />
You can view the blogs created in a specific library and you can view the posts in a blog by descending<br />
order. If you are a contributor you can view blog pages. By default, all portal users can view content in a<br />
blog or blog post once it has been created.<br />
Perform the following steps to view blogs and blog posts:<br />
1. (Blog library only) Click List of Blogs to view all of the blogs created in a specific library. Blogs are<br />
listed in descending order from first to last and display the name of the person who created the blog<br />
(Editor) and the date and time when the blog was created.<br />
a. Move through the list of blogs using the page controls.<br />
b. Specify how many blogs to list on a page by choosing to Show 10, 20, 50 100, orAll Items.<br />
c. If you have Editor access, you can click Create Blog.<br />
d. Click the title of a blog to open the blog.<br />
2. (Blog or blog library) View the posts, which are listed in descending order from first to last and<br />
display the name of the person who created the post (User) and the date and time when the post was<br />
created.<br />
a. Click Latest Blog Posts to view the most recent blog content.<br />
b. Move through the list of posts using the page controls.<br />
c. Specify how many posts to list on a page by choosing to Show 10, 20, 50, or100.<br />
d. If you have Editor access, you can Create Post. You can edit and delete posts that you own.<br />
e. If you have User access, you can comment on a post.<br />
After viewing posts, you can add comments to share your thoughts. To add a comment, click Add a<br />
comment.<br />
680 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Deleting blogs or blog libraries<br />
If you are the owner of a blog site, you have <strong>Manager</strong> access and can delete any blog, pages, comments,<br />
or posts on that site.<br />
Blogs and blog libraries use the template libraries provided by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. To delete the<br />
template library used to create your blog or blog library, you must delete the <strong>Web</strong> <strong>Content</strong> Viewer portlet<br />
and <strong>Web</strong> content mapping from the portal page where the content is rendered then delete the template<br />
library used to create the blog or blog library.<br />
1. Log in to <strong>Web</strong>Sphere Portal as an administrator.<br />
2. Delete the <strong>Web</strong> <strong>Content</strong> Viewer portlet or portal page. When the blog is created on the portal page a<br />
<strong>Web</strong> content mapping is set as a page property. If you plan to use this portal page for other content,<br />
you must delete the <strong>Web</strong> <strong>Content</strong> Viewer portlet and the <strong>Web</strong> content mapping. If you do not delete<br />
the <strong>Web</strong> content mapping, it will apply to any other <strong>Web</strong> <strong>Content</strong> Viewer portlets you add to this<br />
page. If you do not plan to use this portal page for other content, deleting the page also deletes the<br />
<strong>Web</strong> <strong>Content</strong> Viewer portlet and the <strong>Web</strong> content mapping.<br />
v To delete the <strong>Web</strong> <strong>Content</strong> Viewer portlet, do the following:<br />
a. Select Administration > Portal User Interface > Manage Pages.<br />
b. Click Edit Page Layout for the appropriate portal page.<br />
c. In the <strong>Content</strong> > Edit Layout section, click the Portlet Menu for the <strong>Web</strong> <strong>Content</strong> Viewer portlet<br />
and select Delete portlet and click OK then Done.<br />
d. Click Edit Page Properties for the portal page.<br />
e. Expand Advanced options.<br />
f. In the <strong>Web</strong> <strong>Content</strong> Mappings section, click Delete for the <strong>Web</strong> content folder that corresponds<br />
to the blog you plan to delete then click OK.<br />
v To delete the portal page, do the following:<br />
a. Select Administration > Portal User Interface > Manage Pages.<br />
b. Click Delete for the appropriate portal page then click OK.<br />
3. Delete the library that contains the blog content.<br />
a. Select Administration > Portal <strong>Content</strong> > <strong>Web</strong> <strong>Content</strong> Libraries.<br />
b. Click Delete library for the appropriate library.<br />
Related tasks:<br />
“Adding existing blogs or blog libraries to a page” on page 679<br />
You can add a JSR 286 web content viewer to a page to point to an existing blog or blog library on the<br />
site.<br />
Working with wikis<br />
Use wikis to share community content on a variety of subjects pertinent to your intranet and extranet<br />
sites. Wikis typically combine text with graphics and links to other wikis and <strong>Web</strong> sites. You can monitor<br />
and manage your own wiki articles.<br />
You can tag and rate your wikis; see Tagging and rating portal content for information. If you add a tag<br />
to a wiki, you can click on the tag link, which takes you to the Tag Center; see Tag Center for<br />
information.<br />
Blogs and wikis 681
Related tasks:<br />
“<strong>Web</strong> content library management” on page 209<br />
As an administrator you need to periodically assist content managers with library maintenance, such as<br />
disabling or deleting a library. Keep in mind that some library tasks can reduce the performance of your<br />
server while running. Therefore library maintenance should only occur during off-peak periods when the<br />
least number of users are accessing a library.<br />
Learn about the template libraries used by wikis<br />
Wikis use the template libraries provided by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. Wikis use the Wiki Resources<br />
template and the Wiki template. The page hierarchy that is provided for wikis is the common one<br />
defined by the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> template libraries.<br />
Note: The templates described in this topic only work with the theme customizer used in the default<br />
theme. Changes to these templates will affect all wikis on the site. It is not recommended to make<br />
changes to manual copies of these templates.<br />
Wiki Resources template<br />
The Wiki Resources template provides the authoring and presentation templates for wikis. All wikis on<br />
the site use this single Wiki Resources template. Page Builder in the default theme also points to the Wiki<br />
Resources template.<br />
Note: The Blog Resources template has common components that are shared with the Wiki Resources<br />
template.<br />
Wiki template<br />
When you add a wiki to a page, a copy of the Wiki template is created using the name that you provided<br />
when adding the wiki to a page. This copy of the wiki template is used to store wiki page content.<br />
Adding a wiki to a page<br />
Add a wiki to a page to quickly create and edit content in-line with a wiki.<br />
If you have Editor access, you can add a wiki to a page.<br />
Note:<br />
v Refer to the <strong>Web</strong>Sphere Portal Family Wiki for an example of how to add blogs or wikis to a custom<br />
theme.<br />
v Tagged web content displayed in the JSR 286 web content viewer is only available when there is a<br />
single instance of this portlet on the page. When you click on a tag result, the Tag Center broadcasts<br />
the information on what content should display in the viewer using a public render parameter. If you<br />
have multiple instances of web content being displayed in the JSR 286 web content viewer, then these<br />
instances will display the content that you tagged rather than display the original content of these<br />
instances. Refer to the related links section of this topic for a link to more information on public render<br />
parameters.<br />
1. Navigate to the page.<br />
2. Click Customize to add a wiki to the page. See “Adding content” on page 132 for more information<br />
on adding content to a page using the Customize link.<br />
Note:<br />
v By clicking Customize, you are copying the <strong>Web</strong> <strong>Content</strong> Management template library used to<br />
create a blog or blog library and placing an instance of the JSR 286 <strong>Web</strong> content viewer to a page.<br />
682 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v The name that you provide for your wiki will display as the portlet title, library display title, and<br />
library name when using alphanumeric characters, spaces, and the following characters: such as $<br />
-_.!(),. Other characters will be replaced in the actual library name with characters that are<br />
supported by a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> library.<br />
After adding a wiki to your site, click New Page to add content. To modify your content click Edit. To<br />
delete a wiki page, click Delete.<br />
Related tasks:<br />
<strong>Web</strong>Sphere Portal Family Wiki<br />
Adding existing wikis to a page<br />
You can add a JSR 286 web content viewer to a page to point to an existing wiki on the site.<br />
Refer to the following steps only when you are adding a web content viewer portlet from the Page<br />
Properties menu and configuring this web content viewer to point to an existing wiki. To create a new<br />
wiki, use the Customize link to add a wiki to a page.<br />
Note: Tagged web content displayed in the JSR 286 web content viewer is only available when there is a<br />
single instance of this portlet on the page. When you click a tag result, the Tag Center broadcasts the<br />
information on what content should display in the viewer using a public render parameter. If you have<br />
multiple instances of web content being displayed in the JSR 286 web content viewer, then these instances<br />
will display the content that you tagged rather than display the original content of these instances. Refer<br />
to the related links section of this topic for a link to more information on public render parameters.<br />
1. After adding a JSR 286 web content viewer to a page, click the drop-down menu located in the web<br />
content viewer title bar, and select Edit Shared Settings.<br />
2. By <strong>Content</strong> Type, select <strong>Content</strong> Item.<br />
3. By <strong>Content</strong>, click Edit, and select an existing wiki from the library drop-down menu.<br />
4. Expand <strong>Content</strong> by Site Area. For example, click <strong>Content</strong> by Site Area > Wiki Central > Home (to<br />
locate a wiki template).<br />
5. Select a wiki to render in the web content viewer, and click OK.<br />
6. If you added the <strong>Web</strong> <strong>Content</strong> viewer to the page using the Page Properties menu, you must<br />
configure the Broadcasting settings of the <strong>Web</strong> <strong>Content</strong> viewer.<br />
a. Expand Advanced Options to view the Links section.<br />
b. Ensure the Broadcast links to option is set to None or This page.<br />
c. Ensure the Receive Links from option, is set to This Portlet Only Or Other portlets and this<br />
portlet.<br />
Related tasks:<br />
“Editing the settings of a web content viewer portlet” on page 494<br />
Use a local web content viewer to deliver websites that require the use of <strong>Web</strong>Sphere Portal based<br />
features such as authoring tools.<br />
Assigning wiki access to users<br />
If you are the administrator, you have <strong>Manager</strong> access and can assign Editor access to other users who<br />
need to create and manage wikis within the site. If you are the owner of a wiki site, you have <strong>Manager</strong><br />
access. As wiki site <strong>Manager</strong>, you can also delete any wiki page or wiki. If you have Editor access, you<br />
can create and edit any wiki site and wiki pages. All wiki editors can modify all pages of a wiki site.<br />
If you are a contributor you can view wiki pages. By default, all portal users can view content in a wiki<br />
once it has been created.<br />
Blogs and wikis 683
For an example of assigning access to users, refer to the instructions below for adding users to the Editor<br />
role:<br />
1. Go to Administration > Portal <strong>Content</strong> > <strong>Web</strong> <strong>Content</strong> Libraries.<br />
2. Navigate to a library to assign access and click Set Permissions.<br />
3. Click Edit Role beside the Editor role.<br />
4. Click Add to assign users or groups to the Editor role. Search for the users or groups that belong to<br />
this role.<br />
Related concepts:<br />
“Developing an access control strategy” on page 532<br />
You can restrict access to selected users and groups to the views within an authoring portlet, the items<br />
managed by the authoring portlet, and to elements and pages displayed within a website.<br />
Related tasks:<br />
“Defining roles within a library” on page 211<br />
You can define the access of a user or group for a library to determine who has access to a library, and to<br />
define access to the different views within the authoring portlet.<br />
Deleting wikis<br />
If you are the owner of a wiki site, you have <strong>Manager</strong> access and can delete any wiki or wiki pages on<br />
that site.<br />
Wikis use the template libraries provided by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. To delete a wiki, you must<br />
delete the <strong>Web</strong> <strong>Content</strong> Viewer portlet and <strong>Web</strong> content mapping from the portal page where the content<br />
is rendered then delete the template library used to create the wiki.<br />
1. Log in to <strong>Web</strong>Sphere Portal as an administrator.<br />
2. Delete the <strong>Web</strong> <strong>Content</strong> Viewer portlet or portal page. When the wiki is created on the portal page a<br />
<strong>Web</strong> content mapping is set as a page property. If you plan to use this portal page for other content,<br />
you must delete the <strong>Web</strong> <strong>Content</strong> Viewer portlet and the <strong>Web</strong> content mapping. If you do not delete<br />
the <strong>Web</strong> content mapping, it will apply to any other <strong>Web</strong> <strong>Content</strong> Viewer portlets you add to this<br />
page. If you do not plan to use this portal page for other content, deleting the page also deletes the<br />
<strong>Web</strong> <strong>Content</strong> Viewer portlet and the <strong>Web</strong> content mapping.<br />
v To delete the <strong>Web</strong> <strong>Content</strong> Viewer portlet, do the following:<br />
a. Select Administration > Portal User Interface > Manage Pages.<br />
b. Click Edit Page Layout for the appropriate portal page.<br />
c. In the <strong>Content</strong> > Edit Layout section, click the Portlet Menu for the <strong>Web</strong> <strong>Content</strong> Viewer portlet<br />
and select Delete portlet and click OK then Done.<br />
d. Click Edit Page Properties for the portal page.<br />
e. Expand Advanced options.<br />
f. In the <strong>Web</strong> <strong>Content</strong> Mappings section, click Delete for the <strong>Web</strong> content folder that corresponds<br />
to the wiki you plan to delete then click OK.<br />
v To delete the portal page, do the following:<br />
a. Select Administration > Portal User Interface > Manage Pages.<br />
b. Click Delete for the appropriate portal page then click OK.<br />
3. Delete the library that contains the wiki content.<br />
a. Select Administration > Portal <strong>Content</strong> > <strong>Web</strong> <strong>Content</strong> Libraries.<br />
b. Click Delete library for the appropriate library.<br />
684 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Related tasks:<br />
“Adding existing wikis to a page” on page 683<br />
You can add a JSR 286 web content viewer to a page to point to an existing wiki on the site.<br />
Purging deleted wiki pages<br />
When you delete a wiki page directly in the wiki, that page is removed from the site, but remains in the<br />
delete view in <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. Users with Administrator access to libraries can purge these<br />
deleted wiki pages, which optimizes performance of the wiki library. Purging the deleted wiki pages<br />
removes all occurrences, including all versions. You cannot restore deleted items after you purge them.<br />
To purge deleted wiki pages, do the following:<br />
1. Select Applications > <strong>Content</strong> > <strong>Web</strong> <strong>Content</strong> Management.<br />
2. Select the wiki library that contains the page(s) you plan to purge. If you cannot select your library,<br />
click Preferences > Configure > Library Selection to add the library to the selection list.<br />
3. Select Item Views > Deleted Items.<br />
4. Select the appropriate wiki page and click Purge.<br />
Blogs and wikis 685
686 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Developing<br />
You can extend the standard features of <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
API and JSP files.<br />
The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API<br />
You can use the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API to extend functions of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
API Overview<br />
The <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API is used by developers to add <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> function to<br />
custom solutions.<br />
v <strong>Web</strong> content libraries:<br />
– Moving or copying items within a library.<br />
– Moving or copying items between libraries.<br />
v Search iterators of item IDs:<br />
– Find item of given type by name.<br />
– Find items of given type.<br />
– Find library components by name.<br />
– Find content by authoring template.<br />
– Find content by category.<br />
– Find content by path.<br />
– Find content by workflow stage.<br />
– Find content modified since date.<br />
– Find content modified between dates.<br />
v Searching for content using item parameters as IDs.<br />
v Retrieve items using item IDs.<br />
v The ability to create, delete and save the following items:<br />
– <strong>Content</strong><br />
– Site Areas<br />
– File Resource components<br />
– HTML components<br />
– Image components<br />
– Date and Time components<br />
– Link components<br />
– Number components<br />
– Rich text components<br />
– Style Sheet components<br />
– Short text components<br />
– Text components<br />
– User Selection components<br />
– Taxonomies<br />
– Categories<br />
– Projects<br />
687
– Folders<br />
v The ability to retrieve the following items:<br />
– <strong>Content</strong><br />
– Site areas<br />
– Taxonomies and categories<br />
– Workflows<br />
– Components<br />
– Projects<br />
– Folders<br />
v The ability to retrieve the following information from searches:<br />
– Authoring Template ID (Authoring Template)<br />
– Presentation Template ID (Presentation Template)<br />
– Workflow Stage ID<br />
v The ability to approve or reject content items in a workflow stage. Other item-types do not support this<br />
function.<br />
The Javadoc can be reviewed for a complete set of the features available using the API. The Javadoc<br />
HTML files are located under the was_profile_root\installedApps\nodename\wcm.ear\ilwwcm.war\<br />
webinterface\ folder.<br />
Using the API<br />
The workspace is the heart of the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. Items are created, saved, deleted and<br />
searched for in the workspace item. A workspace is basically an interface to <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> that is<br />
associated with a user. Using a workspace item, the user can perform operations as that user.<br />
To get a workspace item, you must first retrieve the <strong>Web</strong><strong>Content</strong>Service:<br />
try<br />
{<br />
// Construct and inital Context<br />
InitialContext ctx = new InitialContext();<br />
// Retrieve <strong>Web</strong><strong>Content</strong>Service using JNDI name<br />
<strong>Web</strong><strong>Content</strong>Service web<strong>Content</strong>Service = (<strong>Web</strong><strong>Content</strong>Service) ctx.lookup("portal:service/wcm/<strong>Web</strong><strong>Content</strong>Service");<br />
}<br />
catch (NamingException ne)<br />
{<br />
System.out.print("Naming Exception: " + ne);<br />
}<br />
You then request one from the repository singleton with the following call:<br />
web<strong>Content</strong>Service.getRepository().getWorkspace("my username", "my password");<br />
To get a workspace item without specifying a user name and password, use one of the following calls:<br />
v When used in a portlet: Workspace workspace = web<strong>Content</strong>Service.getRepository().getWorkspace(<br />
(Principal) portletRequest.getUser() );<br />
v When not used in a portlet: Workspace workspace =<br />
web<strong>Content</strong>Service.getRepository().getWorkspace((Principal) request.getUserPrincipal() );<br />
If the user is not recognized as a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> user, or for some other reason could not be<br />
authenticated , an "OperationFailedException" will be thrown.<br />
Note: Only <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> users (including external LDAP users if enabled) are recognized. For<br />
example, A workspace cannot be retrieved using an LTPA token.<br />
688 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Operations available on the workspace include:<br />
v Searching for items with the provided "findBy" methods.<br />
v Creating new items of available editable types.<br />
v Saving and deleting editable items.<br />
You must call endWorkspace() when finished with the workspace item.<br />
web<strong>Content</strong>Service.getRepository().endWorkspace();<br />
Note: You don't need to call endWorkspace() when using a JSP component as rendering and session<br />
management is handled by <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Note: You use the setCurrentDocumentLibrary method to make calls library-specific. If not specified, the<br />
default library that has been configured in the WCM WCMConfigService service is used.<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> JSP tags<br />
You use <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> JSP tags with the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API to pull <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> content and components into external JSP applications.<br />
Note: A JSP referenced within a JSP component must not include a reference, directly or indirectly, to<br />
the same JSP component. This includes references within <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tags or the API. If it<br />
does, a loop is created and your server will crash.<br />
Note:<br />
To use the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> JSP tags, the following directive must be provided in the JSP:<br />
<br />
Storing JSP Files:<br />
JSP files can be located:<br />
v within the was_profile_root/installedApps/node-name/wcm.ear/ilwwcm.war directory of your server.<br />
The JSP page is also stored in the client war directory of the local rendering portlet or of the servlet or<br />
portlet that calls the JSP, if using the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API. For example, to render a JSP page on<br />
a local rendering portlet, you would also need to store a copy of the JSP file under<br />
was_profile_root/installedApps/node-name/PA_WCMLocalRendering.ear/ilwwcm-localrende.war<br />
v within any other web application running on portal. When referencing JSP files in another web<br />
application, use the following path: contextPath;jspPath<br />
For example: /wps/customapplication;/jsp/editor.jsp<br />
Writing JSP to be referenced within a JSP component:<br />
The setExplicitContext and setContext tags specified below are not required when displaying a JSP file<br />
via a JSP Component. They are only required when directly accessing a JSP file.<br />
Reloading JSP files:<br />
JSP files referenced by <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> are reloaded once every 10 seconds. If you update a JSP<br />
file, you may need to wait for it to be reloaded before your changes will be displayed.<br />
InitWorkspace tag<br />
This is used to set the initial workspace.<br />
<br />
[Error Message]<br />
<br />
Developing 689
Table 167. Parameters<br />
Parameter<br />
username<br />
password<br />
Details<br />
The user name of a valid <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> user.<br />
The password for the valid <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> user.<br />
Explicit context tag<br />
This sets the path to your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> server. This is not required in JSP that is displayed via a<br />
JSP component.<br />
<br />
[Error Message]<br />
<br />
Table 168. Parameters<br />
Parameter<br />
wcm<strong>Web</strong>AppPath<br />
wcmServletPath<br />
path<br />
requestParameters<br />
project<br />
Details<br />
The URL up to the web application.<br />
For example, http://localhost:10040/wps/wcm<br />
The servlet path to the web <strong>Content</strong> Management servlet<br />
For example, /connect<br />
The path to the content and site areas.<br />
For example, Site Area A/ Site Area B/<strong>Content</strong> C<br />
You specify java Map request parameters to set in the context. These parameters can<br />
be used by menu components that are rendered via the JSP that use a query string.<br />
The name of the project to set in the context. If the corresponding project cannot be<br />
found, it will be ignored and an error will be logged. An empty string is used to clear<br />
any project previously set in the context.<br />
Note: The project, wcm<strong>Web</strong>AppPath and wcmServletPath parameters are optional. However, if<br />
wcm<strong>Web</strong>AppPath is specified, wcmServletPath must also be specified.<br />
Developers can add insert context tags at any place in the page and it will change the context for the rest<br />
of the page execution, but the tags cannot be nested.<br />
Context retrieval tag<br />
Sets the context given the location of a path string. This is not required in JSP that is displayed via a JSP<br />
component.<br />
<br />
[Error Message]<br />
<br />
Table 169. Parameters<br />
Parameter<br />
location<br />
Details<br />
This sets the context of the location of a path string. Either:<br />
v query<br />
v request<br />
v session<br />
690 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 169. Parameters (continued)<br />
Parameter<br />
Details<br />
wcm<strong>Web</strong>AppPath<br />
The URL up to the web application.<br />
wcmServletPath<br />
param<br />
project<br />
For example, http://localhost:10040/wps/wcm<br />
The servlet path to the web <strong>Content</strong> Management servlet<br />
For example, /connect<br />
This is the name of the parameter that the path string will be in.<br />
The name of the project to set in the context. If the corresponding project cannot be<br />
found, it will be ignored and an error will be logged. An empty string is used to clear<br />
any project previously set in the context.<br />
Note: The project, wcm<strong>Web</strong>AppPath and wcmServletPath parameters are optional. However, if<br />
wcm<strong>Web</strong>AppPath is specified, wcmServletPath must also be specified.<br />
Developers can add insert context tags at any place in the page and it will change the context for the rest<br />
of the page execution, but the tags cannot be nested.<br />
Rendering tags<br />
These are equivalent to element and component tags.<br />
Rendering an element from the current site area, or content item<br />
<br />
[Error Message]<br />
<br />
Table 170. Parameters<br />
Parameter<br />
type<br />
key<br />
Details<br />
This determines where the element is being referenced from. Either content or sitearea.<br />
This is the name of the element being referenced.<br />
<br />
[Error Message]<br />
<br />
Rendering a component from the Component Library<br />
Table 171. Parameters<br />
Parameter<br />
name<br />
library<br />
Details<br />
This is the name of the component being referenced.<br />
This is the name of the library where the component is stored.<br />
For example:<br />
<br />
You do not have access to this item.<br />
<br />
Rendering <strong>Content</strong> based on the current context of a page<br />
<br />
[Error Message]<br />
<br />
Developing 691
Table 172. Parameters<br />
Parameter<br />
pageDesign<br />
Details<br />
This name of the Presentation Template used to determine context. This parameter is<br />
optional.<br />
Error handling<br />
The following tag can be added to error messages to enable error handling:<br />
<br />
Plugin tag<br />
Rendering plug-ins can be referenced within JSP code using a plugin tag:<br />
<br />
// Your text.<br />
<br />
See “Creating a plug-in tag” on page 415 for further information.<br />
<strong>Web</strong> content library management APIs<br />
You can perform various web content library functions using the <strong>Web</strong> content API.<br />
v Create a library<br />
v Delete a library<br />
v Copy a library<br />
v Import a library<br />
v Export a library<br />
Note: Drafts are not copied or exported when using the API to copy or export libraries.<br />
The <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> Javadoc documentation should be reviewed for a complete set of the features<br />
available using the API. The Javadoc HTML files are located under the was_profile_root\installedApps\<br />
nodename\wcm.ear\ilwwcm.war\webinterface\ folder.<br />
Invoking web content library API methods asynchronously<br />
Although <strong>Web</strong> content library API functions can be invoked synchronously, if you run these against web<br />
content libraries containing large amounts of data, they may take extremely long to complete execution.<br />
For example, if these methods are invoked from a JSP page, this may result in the JSP page being<br />
invalidated due to a session timeout.<br />
<strong>Web</strong>Sphere Application Server uses a mechanism known as asynchronous beans. An asynchronous bean<br />
is a Java object that can be run asynchronously. The "Work object" asynchronous bean is used to invoke<br />
web content library API methods asynchronously.<br />
A Work object (which is represented by the interface com.ibm.websphere.asynchbeans.Work) extends<br />
java.lang.Runnable It is used to run a block of code as an independent thread. <strong>Web</strong>Sphere Application<br />
Server maintains a pool of independent threads that can be assigned to run code encapsulated in Work<br />
instances. This pool of threads is managed by the Work<strong>Manager</strong>. This is used to spawn threads to run<br />
Work objects and to monitor them. <strong>Web</strong>Sphere Application Server maintains default Work <strong>Manager</strong>s for<br />
each of the application servers that are contained on a particular node. The sample in this topic makes<br />
use of the default Work <strong>Manager</strong> (wm/wpsWork<strong>Manager</strong>) for the <strong>Web</strong>Sphere Portal application server. This<br />
692 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
maintains a pool of 300 threads. It is possible to create new Work manager instances with customized<br />
thread pools. This is done using the <strong>Web</strong>Sphere Administrative Console for the <strong>Web</strong>Sphere Portal server.<br />
The example uses the DeleteWork class to implement the Work interface:<br />
package deletesample;<br />
import com.ibm.workplace.wcm.api.*;<br />
import javax.naming.*;<br />
public class DeleteWork implements com.ibm.websphere.asynchbeans.Work<br />
{<br />
private String m_username = null;<br />
private String m_password = null;<br />
private String m_libraryToDelete = null;<br />
public DeleteWork(String username, String password, String library)<br />
{<br />
m_username = username;<br />
m_password = password;<br />
m_libraryToDelete = library;<br />
}<br />
public void release()<br />
{<br />
}<br />
public void run()<br />
{<br />
try<br />
{<br />
// Construct and inital Context<br />
InitialContext ctx = new InitialContext();<br />
// Retrieve <strong>Web</strong><strong>Content</strong>Service and <strong>Web</strong><strong>Content</strong>LibraryService using JNDI name<br />
<strong>Web</strong><strong>Content</strong>Service web<strong>Content</strong>Service = (<strong>Web</strong><strong>Content</strong>Service) ctx.lookup("portal:service/wcm/<strong>Web</strong><strong>Content</strong>Service");<br />
<strong>Web</strong><strong>Content</strong>LibraryService web<strong>Content</strong>LibraryService = (<strong>Web</strong><strong>Content</strong>LibraryService) ctx.lookup("portal:service/wcm/<strong>Web</strong>Conten<br />
Workspace ws = web<strong>Content</strong>Service.getRepository().getWorkspace(m_username, m_password);<br />
DocumentLibrary docLib = ws.getDocumentLibrary(m_libraryToDelete);<br />
LibraryTaskResult res = web<strong>Content</strong>LibraryService.deleteLibrary(ws, docLib);<br />
// Once you get the result object back, print status to StandardOut<br />
if (res.getResultType() == ResultTypes.OPERATION_SUCCESS)<br />
{<br />
System.out.println("Successfully Deleted Library " + m_libraryToDelete);<br />
}<br />
else<br />
{<br />
System.out.println("Failed To Delete Library " + m_libraryToDelete);<br />
}<br />
}<br />
catch (Exception e)<br />
{<br />
e.printStackTrace();<br />
}<br />
}<br />
}<br />
The run method is what is required in order to implement this interface. This is where you wrap the<br />
library method that you want to run in a thread separate from the calling thread. In the example above,<br />
DeleteWork is instantiated passing in credentials as well as the library to be deleted. In run(), the<br />
repository is logged into and a Workspace instance is obtained as is a DocumentLibrary corresponding to<br />
Developing 693
the library that is to be deleted. deleteLibrary() is then called to perform the actual deletion. Once this<br />
method is completed, the Result object can be queried to determine the status of the deletion. This can<br />
then be logged or processed as required.<br />
The following JSP file is used to invoke the DeleteWork object:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
In order to run a Work object, it is necessary to do a JNDI lookup to obtain the default <strong>Web</strong>Sphere Portal<br />
Server Work <strong>Manager</strong> instance. Once this is done, the DeleteWork class can be instantiated. To run<br />
DeleteWork on a separate thread, call startWork() on the Work<strong>Manager</strong> passing in the DeleteWork instance.<br />
For example, wm.startWork(workItem); The System.out log can be checked to see when DeleteWork<br />
finishes.<br />
Syndication APIs<br />
You can perform various syndication functions using the web content API.<br />
v Retrieve, enable, or disable syndicators and subscribers.<br />
v Start full and partial syndication updates.<br />
v Dynamically review syndication progress.<br />
v View syndicator and subscriber details such as the name of the libraries being syndicated.<br />
v Query syndication details such as which items were updated, saved, modified or removed.<br />
694 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> Javadoc information should be reviewed for a complete set of the features<br />
available using the API. The Javadoc HTML files are located under the was_profile_root\installedApps\<br />
nodename\wcm.ear\ilwwcm.war\webinterface\ folder.<br />
Converting an <strong>IBM</strong> API web content viewer to the JSR 286 API<br />
Out-of-the-box the web content viewer is based on the JSR 286 API. However, if you have exported the<br />
web content viewer from another server or if you installed the older <strong>IBM</strong> API web content viewer, you<br />
can use the convert-wcm-rendering-portlet task to convert the <strong>IBM</strong> API web content viewer setttings and<br />
instances to the JSR 286 <strong>Web</strong> <strong>Content</strong> Viewer portlet.<br />
The <strong>Web</strong> <strong>Content</strong> Viewer portlet conversion task converts portlet settings of the <strong>IBM</strong> API <strong>Web</strong> <strong>Content</strong><br />
Viewer portlet to portlet preferences of the JSR 286 <strong>Web</strong> <strong>Content</strong> Viewer portlet. The task also converts<br />
instances of the <strong>IBM</strong> API <strong>Web</strong> <strong>Content</strong> Viewer portlet to instances of the JSR 286 <strong>Web</strong> <strong>Content</strong> Viewer<br />
portlet. User customized portlet data that is associated with the portlet instance is converted into portlet<br />
preferences.<br />
To convert the instances and settings of the <strong>IBM</strong> API <strong>Web</strong> <strong>Content</strong> Viewer portlet to the JSR 286 portlet,<br />
do the following:<br />
1. Update the file wp_profile_root/ConfigEngine/wkplc.properties . Confirm that the user IDs and<br />
passwords are set as required or modify them if necessary.<br />
2. Update or verify the following parameters in the file wp_profile_root/PortalServer/wcm/config/<br />
portletconversion.properties . Confirm that the following parameters are set as specified or modify<br />
them if necessary:<br />
pages.uniquename<br />
This parameter is optional. Specify a comma separated list of unique names of pages. If you<br />
specify this parameter, only portlets on these pages and their descendants are converted. If<br />
you leave this parameter empty or missing, instances of the <strong>IBM</strong> API <strong>Web</strong> <strong>Content</strong> Viewer<br />
Portlet on all pages are converted.<br />
xmlaccess.url<br />
The URL to the portal XML configuration interface servlet. You can use this parameter to run<br />
conversions for specific virtual portals. If this parameter is empty or missing, the default<br />
portal is used to run the conversion.<br />
3. Change to the directory was_profile_root/PortalServer/ConfigEngine/.<br />
4. Run the task ConfigEngine convert-wcm-rendering-portlet .<br />
5. Verify the conversion by reviewing the console. The message Build successful indicates a successful<br />
conversion. If the message Build failed is displayed upon completion of the task, review the<br />
previous steps.<br />
6. Verify the configuration of the converted <strong>Web</strong> <strong>Content</strong> Viewer portlet. For further information on<br />
configuring a local <strong>Web</strong> <strong>Content</strong> Viewer portlet refer to the topic about Editing the settings of a local<br />
<strong>Web</strong> content viewer portlet.<br />
7. After successful conversion you can uninstall the <strong>IBM</strong> API <strong>Web</strong> <strong>Content</strong> Viewer portlet.<br />
If you made clones of the <strong>IBM</strong> API <strong>Web</strong> <strong>Content</strong> Viewer Portlet or renamed the portlet, you might need<br />
to modify the parameters in the file wp_profile_root/PortalServer/wcm/config/<br />
portletconversion.properties that identify the portlet used as the source for the conversion. For a<br />
complete reference of all parameter that by the portlet conversion task supports refer to the topic about<br />
Converting portlet instances and settings from the <strong>IBM</strong> API to the standard API.<br />
Developing 695
Using remote actions<br />
Remote actions are used to trigger actions from the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> application.<br />
You can reference remote actions using plugin tags using the following format:<br />
[plugin:RemoteAction action=" " docid=" "<br />
dialog=" " dialogSize=" " dialogTitle=" " useCurrentContext=" " showInfoMsg=" " ]<br />
action This is the remote action to perform.<br />
docid This is the document ID of the item to run the remote action against.<br />
useCurrentContext<br />
If set to true, then the document ID is obtained form the rendering context instead of the docid<br />
attribute.<br />
dialog If set to true, when rendered within a JSR 286 web content viewer portlet the remote action is<br />
rendered as a URL that redirects the user to a hidden portal page that is used by the JSR 286 web<br />
content viewer for inline editing.<br />
dialogSize<br />
This optional setting defines the size of the dialog executing the remote action. The value must be<br />
in the format "width,height". For example, dialogSize="200,300" for a dialog of width 200 pixel<br />
and a height of 300 pixel. If omitted, the dialog size is calculated from the content displayed in<br />
the dialog. This setting is only used if dialog="true".<br />
dialogTitle<br />
This optional setting sets the title of the dialog executing the remote action. If omitted, the action<br />
name is used instead. This setting is only used if dialog="true".<br />
showInfoMsg<br />
Set this to true to display success status and other information messages after the remote action<br />
has finished. If omitted, this parameter is set to false and only warning and error status messages<br />
are displayed. This setting can only be used if dialog="true".<br />
Remote actions can also be appended to the URL of an authoring portlet. For example:<br />
http://[host]/wps/myportal/wcmAuthoringwcmAuthoringAction=action<br />
You can also append remote actions to the URL of a local web <strong>Content</strong> Viewer portlet. This can be useful<br />
in sites that feature inline editing of content items.<br />
Custom authoring interfaces: Remote actions are not intended to be used to create a custom authoring<br />
interface. There are limitations to the functionality delivered using remote actions. For example, remote<br />
actions only support plain text. You cannot use remote actions to add markup into elements such as<br />
HTML elements. You instead use the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API to create custom authoring interfaces.<br />
Note: Each web content item can be identified by a DocumentId. The "docid" can be retrieved using the<br />
web content API. In the following examples, the value of the "docid" parameter should be the<br />
DocumentId as retrieved by using the DocumentID.getID() API method. A document ID consists of a<br />
document type and a unique ID. The "docid" values provided in the examples are placeholders for real<br />
document IDs. For example, com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1<br />
Remote action types<br />
new<br />
This is used to open a new item form. You must also specify a "type" parameter.<br />
For example:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>" ]<br />
The following type parameters can be used:<br />
696 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v com.ibm.workplace.wcm.api.WCM_AuthoringTemplate<br />
v com.ibm.workplace.wcm.api.WCM_Category<br />
v com.ibm.workplace.wcm.api.WCM_<strong>Content</strong><br />
v com.ibm.workplace.wcm.api.WCM_DateComponent<br />
v com.ibm.workplace.wcm.api.WCM_FileComponent<br />
v com.ibm.workplace.wcm.api.WCM_HTMLComponent<br />
v com.ibm.workplace.wcm.api.WCM_ImageComponent<br />
v com.ibm.workplace.wcm.api.WCM_NumericComponent<br />
v com.ibm.workplace.wcm.api.WCM_PresentationTemplate<br />
v com.ibm.workplace.wcm.api.WCM_RichTextComponent<br />
v com.ibm.workplace.wcm.api.WCM_ShortTextComponent<br />
v com.ibm.workplace.wcm.api.WCM_SiteArea<br />
v com.ibm.workplace.wcm.api.WCM_Taxonomy<br />
v com.ibm.workplace.wcm.api.WCM_TextComponent<br />
v com.ibm.workplace.wcm.api.WCM_Workflow<br />
v com.ibm.workplace.wcm.api.WCM_WorkflowStage<br />
When creating a new content item, you can specify a default authoring template by providing the<br />
document ID of the authoring template in the atid parameter:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
atid="com.ibm.workplace.wcm.api.WCM_AuthoringTemplate/ID1"]<br />
When creating site areas, content items and categories, you can specify the document ID of the<br />
parent item to save the new item under. Specify this ID in the pid parameter:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
pid="com.ibm.workplace.wcm.api.WCM_SiteArea/ID"]<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_SiteArea"<br />
pid="com.ibm.workplace.wcm.api.WCM_SiteArea/ID"]<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_Category"<br />
pid="com.ibm.workplace.wcm.api.WCM_Taxonomy/ID"]<br />
When creating site areas you can specify the position of the new site area using a position<br />
parameter. You can specify to save the new site area at the start or end relative to any existing<br />
site areas. If not specified, the new site area will be saved at the start relative to any existing site<br />
areas:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
position="start"]<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_SiteArea"<br />
position="end"]<br />
delete This is used to delete an item. You must also specify the docid of the item.<br />
For example:<br />
v [plugin:RemoteAction action="delete" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/<br />
ID1"]<br />
edit This is used to open an item form in edit mode. You must also specify the docid of the item.<br />
For example:<br />
v [plugin:RemoteAction action="edit" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"]<br />
read This is used to open an item form in read-only mode. You must also specify the docid of the<br />
item.<br />
For example:<br />
Developing 697
v [plugin:RemoteAction action="read" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"]<br />
openmainview<br />
This is used to open a view within an authoring portlet. You must also specify a view parameter.<br />
move<br />
link<br />
copy<br />
For example:<br />
v [plugin:RemoteAction action="openmainview" view="contentbysitearea"]<br />
The following view parameters can be used:<br />
v contentbysitearea<br />
v contentbytitle<br />
v myrecent<br />
v mydraft<br />
v mypendingapproval<br />
v mypublished<br />
v myexpired<br />
v mydeleted<br />
v alldraftitems<br />
v allexpireditems<br />
v allpublisheditems<br />
v alldeleteditems<br />
v componentsbytype<br />
This is used to move a site area or content item.<br />
For example, to open the move dialog for a content item or site area:<br />
v [plugin:RemoteAction action="move" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"]<br />
A move direction is specified as "1" for up and "-1" for down. For example, to move a content<br />
item up one position:<br />
v [plugin:RemoteAction action="move" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
pid="com.ibm.workplace.wcm.api.WCM_SiteArea/ID1" moveDirection="1"]<br />
This will link a content item to a site area.<br />
For example:<br />
v [plugin:RemoteAction action="link" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
pid="com.ibm.workplace.wcm.api.WCM_SiteArea/ID2"]<br />
When linking items you can specify the path to the parent item using the ppath parameter<br />
instead of the pid parameter:<br />
v [plugin:RemoteAction action="link" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
ppath="library1/sitearea1/sitearea2"]<br />
When linking items you can create a new parent item by using the autoCreateParent parameter.<br />
You must also specify the library where the item being linked is located using<br />
the slibrary parameter. The ppath parameter is used to specify the existing parent that the new<br />
parent item is created under:<br />
v [plugin:RemoteAction action="link" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
autoCreateParent="true" slibrary="libraryname" ppath="library1/sitearea1/sitearea2"]<br />
This is used to make a copy of an item.<br />
For example, to copy a content item to a new site area:<br />
v [plugin:RemoteAction action="copy" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
pid="com.ibm.workplace.wcm.api.WCM_SiteArea/ID2"]<br />
698 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
You can use the following additional parameters when copying:<br />
v copyAsDraft="true"<br />
This will restart the workflow of the copy being creating. In most cases this would result in the<br />
copy being created with a status of draft.<br />
v wid="com.ibm.workplace.wcm.api.WCM_Workflow/ID1"<br />
Use this to specify a different workflow to use when creating the copy. This will also restart the<br />
workflow of the copy being creating. In most cases this would result in the copy being created<br />
with a status of draft.<br />
v position="start"<br />
This will create the copy as the first item under the specified parent item. If not specified the<br />
item will be copied as the last child of the specified parent item.<br />
When copying items you can specify the path to the parent item using the ppath parameter<br />
instead of the pid parameter:<br />
v [plugin:RemoteAction action="copy" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
ppath="library1/sitearea1/sitearea2"]<br />
When copying items you can create a new parent item by using the autoCreateParent parameter.<br />
You must also specify the library where the item being copied is located using<br />
the slibrary parameter. The ppath parameter is used to specify the existing parent that the new<br />
parent item is created under:<br />
v [plugin:RemoteAction action="copy" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
autoCreateParent="true" slibrary="libraryname" ppath="library1/sitearea1/sitearea2"]<br />
approve<br />
This is used to approve an item in a workflow. You must also specify the docid of the item.<br />
For example:<br />
v [plugin:RemoteAction action="approve" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/<br />
ID1"]<br />
decline<br />
This is used to decline an item in a workflow. You must also specify the docid of the item.<br />
For example:<br />
v [plugin:RemoteAction action="decline" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/<br />
ID1"]<br />
saveandapprove<br />
This is used to approve an item in a workflow where that item is currently open in edit mode<br />
within the same session. You must also specify the docid of the item.<br />
For example:<br />
v [plugin:RemoteAction action="saveandapprove"<br />
docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"]<br />
v [plugin:RemoteAction action="saveandapprove"<br />
docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1" isdraft="true"]<br />
previousstage<br />
This is used to move an item to the previous stage in a workflow. You must also specify the<br />
docid of the item.<br />
For example:<br />
v [plugin:RemoteAction action="previousstage"<br />
docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"]<br />
viewversions<br />
This is used to open the versions dialog for an item. You must also specify the docid of the item.<br />
Developing 699
For example:<br />
v [plugin:RemoteAction action="viewversions"<br />
docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"]<br />
viewhistory<br />
This is used to open the history dialog for an item. You must also specify the docid of the item.<br />
For example:<br />
v [plugin:RemoteAction action="viewhistory"<br />
docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"]<br />
Populating fields when creating or editing content<br />
When using the "new" or "edit" parameters with content items, you can also add data to different fields<br />
in the content item using a URL.<br />
For example, to add "newcontent" as the name of the content item, you would use this URL:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.content.name="newcontent"]<br />
The following parameters can be used to populate fields when creating or editing content:<br />
v wcmfield.content.name=<br />
v wcmfield.content.title=<br />
v wcmfield.content.description=<br />
v wcmfield.content.authors=<br />
v wcmfield.content.owners=<br />
v wcmfield.content.publishDate=<br />
v wcmfield.content.expiryDate=<br />
v wcmfield.content.generalDateOne=<br />
v wcmfield.content.generalDateTwo=<br />
v wcmfield.content.workflow= (This can only be used when creating content.)<br />
v wcmfield.content.categories=<br />
v wcmfield.content.keywords=<br />
v wcmfield.element.elementname=<br />
Note: You replace elementname with the name of the element you are populating. The element<br />
parameter can only be used with the following element types:<br />
– Text<br />
– Html<br />
– Rich text<br />
– Option Selection<br />
– User Selection<br />
– Date and time<br />
– Number<br />
– JSP<br />
– Link<br />
– Component Reference<br />
When populating fields with user ids you must use this format:<br />
700 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.content.authors="uid=usera,cn=cn-name,dc=dc-name"]<br />
When populating workflow and category fields you must use the document IDs as their values:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.content.workflow="ID1"]<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.content.categories="ID1"]<br />
When populating date fields, the date format must be US English. Either a date and time, or just a date<br />
can be specified. If only a date is specified, the time used will be 12:00:00 AM. For example:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.content.generalDateOne="Feb 14, 2008 12:53:03 PM"]<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.content.generalDateOne="Feb 14, 2008"]<br />
The date and time set here are based on the server's timezone, not the timezone of the user's computer.<br />
When populating a JSP element, you need to specify the path to the JSP file:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.element.jspelementname="/wps/wcm/jsp/html/example.jsp"]<br />
When populating a component reference element, you specify the component to reference. For example:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.element.mycompref.type="com.aptrix.pluto.cmpnt.NavigatorCmpnt"<br />
wcmfield.element.mycompref.id="e4bdf10042d0769698ccbeb0e25cc973"]<br />
When populating an option selection element, you specify each selection option. For example:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.element.elementname="AA" wcmfield.element.elementname="BB"]<br />
When populating a user selection element, you specify each user. For example:<br />
v [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.element.elementname="uid=wpsadmin,o=defaultWimFileBasedRealm"<br />
wcmfield.element.elementname="uid=wpsadmin2,o=defaultWimFileBasedRealm"]<br />
When populating a Link element, you can specify the following parameters:<br />
Adding a link to a content item:<br />
[plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.element.elementname.type="content" wcmfield.element.elementname.id="contentID"]<br />
Adding a link to a link component:<br />
[plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.element.elementname.type="link"<br />
wcmfield.element.elementname.id="linkcomponentID"]<br />
Adding a link to an image or file resource component:<br />
[plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.element.elementname.type="resource"<br />
wcmfield.element.elementname.id="componentID"]<br />
Adding a link to a URL:<br />
[plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.element.elementname.type="external"<br />
wcmfield.element.elementname.externalReference="myurl"]<br />
Developing 701
To specify whether to use the name of the item you are linking to as the link text, add this to the tag:<br />
wcmfield.element.elementname.useReferenceLinkText="true"<br />
When specifying an image to display as the link, add this to the tag:<br />
wcmfield.element.elementname.linkImage="imagecomponentID"<br />
When specifying the text of the link, add this to the URL:<br />
wcmfield.element.elementname.linkText="text"<br />
When specifying the description of the link, add this to the URL:<br />
wcmfield.element.elementname.linkDescription="text"<br />
When specifying a link target, add this to the URL:<br />
wcmfield.element.elementname.linkTarget=<br />
v _blank<br />
v _parent<br />
v _self<br />
v _top<br />
v targetname<br />
Save parameters<br />
You can add the following "save" parameters to a remote action tag.<br />
autoSave<br />
This is used to save a controllable. This happens in the background and is not displayed to users.<br />
For example:<br />
v wcmfield.autosave="true"<br />
saveValidate<br />
This parameter determines if warning and error messages resulting from the autosave will be<br />
displayed to the user. If set to "true", warning and error messages will be displayed to the user. If<br />
set to false, messages are suppressed. The default is true.<br />
For example:<br />
v &wcmfield.saveValidate="false"<br />
Adding comments to the item history<br />
When creating items that use a workflow with "Enter comment on approval" set to true, you can add a<br />
comment to the item history by adding comment="comment text" to the URL.<br />
For example:<br />
[plugin:RemoteAction action="edit" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
createDraft="true" comment="comment text"]<br />
Examples<br />
Open the versions view for an item:<br />
v Tag: [plugin:RemoteAction action="viewversions" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/<br />
ID1"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=viewversions<br />
&docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1<br />
Open the history view for an item:<br />
702 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Tag: [plugin:RemoteAction action="viewhistory" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/<br />
ID1"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=viewhistory<br />
&docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1<br />
Open a content item in read mode:<br />
v Tag: [plugin:RemoteAction action="read" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=read<br />
&docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1<br />
Open a content item in edit mode:<br />
v Tag: [plugin:RemoteAction action="edit" &docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=edit<br />
&docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1<br />
Move a content item up:<br />
v Tag: [plugin:RemoteAction action="move" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
moveDirection="1" pid="com.ibm.workplace.wcm.api.WCM_SiteArea/ID1"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=move<br />
&docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1&moveDirection=1<br />
&pid=com.ibm.workplace.wcm.api.WCM_SiteArea/ID1<br />
Move a site area down:<br />
v Tag: [plugin:RemoteAction action="move" docid="com.ibm.workplace.wcm.api.WCM_SiteArea/ID1"<br />
"moveDirection="-1" pid="com.ibm.workplace.wcm.api.WCM_SiteArea/ID1"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=move<br />
&docid=com.ibm.workplace.wcm.api.WCM_SiteArea/ID1&moveDirection=-1<br />
&pid=com.ibm.workplace.wcm.api.WCM_SiteArea/ID1<br />
Create a new content item with title of 'newcontent':<br />
v Tag: [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
wcmfield.content.title="newcontent"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=new<br />
&type=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>&wcmfield.content.title=newcontent<br />
To open a content item in edit mode and automatically change keywords:<br />
v Tag: [plugin:RemoteAction action="edit" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
wcmfield.content.keywords="keyword1" wcmfield.content.keywords="keyword2"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=edit<br />
&docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1&wcmfield.content.keywords=keyword1<br />
&wcmfield.content.keywords=keyword2<br />
To edit a content item, automatically change the keywords and use autosave to automatically save the<br />
content (no dialog opens):<br />
v Tag: [plugin:RemoteAction action="edit" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
wcmfield.content.keywords="keyword1" wcmfield.content.keywords="keyword2"<br />
wcmfield.autosave="true"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=edit<br />
&docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1&wcmfield.content.keywords=keyword1<br />
&wcmfield.content.keywords=keyword2&wcmfield.autosave=true<br />
Developing 703
To edit a content item, automatically save the item and prevent any validation exception from being<br />
displayed, use autosave with saveValidate=false:<br />
v Tag: [plugin:RemoteAction action="edit" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
wcmfield.content.keywords="keyword1" wcmfield.autosave="true" wcmfield.saveValidate="false"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=edit<br />
&docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1&wcmfield.content.keywords=keyword1<br />
&wcmfield.autosave=true&wcmfield.saveValidate=false<br />
To create a content item, set the name and use autosave to automatically save the content (no dialog<br />
opens). The authoring template used by the content item must have a workflow pre-selected:<br />
v Tag: [plugin:RemoteAction action="new" type="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>"<br />
atid="com.ibm.workplace.wcm.api.WCM_AuthoringTemplate/ID1"<br />
pid="com.ibm.workplace.wcm.api.WCM_SiteArea/ID2" wcmfield.content.name="newcontent"<br />
wcmfield.autosave="true" wcmfield.saveValidate="true"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=new<br />
&type=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong><br />
&atid=com.ibm.workplace.wcm.api.WCM_AuthoringTemplate/ID1<br />
&pid=com.ibm.workplace.wcm.api.WCM_SiteArea/ID2&wcmfield.content.name=newcontent<br />
&wcmfield.autosave=true&wcmfield.saveValidate=true<br />
To edit a content item and create a draft on the edit and set the history log comment:<br />
v Tag: [plugin:RemoteAction action="edit" docid="com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1"<br />
createDraft="true" comment="comment"]<br />
v Url: http:///wps/myportal/wcmAuthoringwcmAuthoringAction=edit<br />
&docid=com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/ID1&createDraft=true&comment=comment<br />
Creating a custom launch page<br />
You can configure an authoring portlet to use a launch page of your own design instead of the default<br />
user interface.<br />
A custom launch page can either be a JSP or HTML file. You use remote actions to call different views<br />
and functions from with the authoring portlet's user interface. You can also use the web content API to<br />
add other functions to your launch page. Once you have created a custom launch page, you then<br />
configure your authoring portlet to use the custom launch page instead of the default authoring portlet<br />
user interface.<br />
Storing JSP Files:<br />
JSP files can be located:<br />
v within the was_profile_root/installedApps/cellname/PA_WCM_Authoring_UI.ear/ilwwcmauthoring.war/jsp/html<br />
directory of your server where cellname is unique to your installation.<br />
v within any other web application running on portal. When referencing JSP files in another web<br />
application, use the following path: contextPath;jspPath<br />
For example: /wps/customapplication;/jsp/editor.jsp<br />
A custom launch page example<br />
This is a simple example of some code you can add to a JSP or HTML file, to allow users to create and<br />
view content items using remote actions.<br />
<br />
704 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<br />
<br />
An error occurred initializing the WCM workspace:<br />
<br />
<br />
<br />
Returning true renders the body markup defined in the plug-in tag. If false is returned, the body of<br />
the plug-in tag is skipped. If the plug-in tag has no body markup then the return value is ignored.<br />
3. Methods inherited from com.ibm.portal.Localized must also be implemented.<br />
public String getTitle(Locale displayLocale) {}<br />
This method returns the title for the rendering plugin that will be used to allow selection of<br />
the rendering plugin.<br />
public ListModel getLocales()<br />
This method returns a list of locales that are supported by this rendering plugin.<br />
public String getDescription(Locale p_arg0)<br />
This method returns a description of the rendering plugin.<br />
See the Javadoc documentation for further information.<br />
For example:<br />
package test;<br />
import java.io.IOException;<br />
import java.io.Writer;<br />
import java.util.ArrayList;<br />
import java.util.Iterator;<br />
import java.util.List;<br />
import java.util.Locale;<br />
import java.util.Map;<br />
import java.util.Set;<br />
import com.ibm.portal.ListModel;<br />
import com.ibm.portal.ModelException;<br />
import com.ibm.workplace.wcm.api.plugin.rendering.RenderingPlugin;<br />
import com.ibm.workplace.wcm.api.plugin.rendering.RenderingPluginException;<br />
import com.ibm.workplace.wcm.api.plugin.rendering.RenderingPluginModel;<br />
/**<br />
* A simple rendering plugin to demonstrate the use of the RenderingPlugin API.<br />
*/<br />
public class SimpleRenderingPlugin implements RenderingPlugin<br />
{<br />
/**<br />
* A simple list model holding locales.<br />
*/<br />
protected static class SimpleLocaleListModel implements ListModel<br />
{<br />
/** the list of locales of this list model */<br />
final List m_localeList = new ArrayList();<br />
/**<br />
* Constructs this simple list model holding the given locales.<br />
*<br />
* @param locales<br />
* the locales of this list model. May be null.<br />
*/<br />
public SimpleLocaleListModel(final Locale[] p_locales)<br />
{<br />
if (p_locales != null)<br />
{<br />
for(inti=0;i
}<br />
*<br />
* @see com.ibm.portal.ListModel#iterator()<br />
*/<br />
@Override<br />
public Iterator iterator() throws ModelException<br />
{<br />
return m_localeList.iterator();<br />
}<br />
/** a list model that only contains the English language locale */<br />
private static final ListModel ENGLISH_ONLY = new SimpleLocaleListModel(new Locale[]{Locale.ENGLISH});<br />
/*<br />
* (non-Javadoc)<br />
*<br />
* @see com.ibm.portal.Localized#getDescription(java.util.Locale)<br />
*/<br />
@Override<br />
public String getDescription(final Locale p_locale)<br />
{<br />
return "This is a simple rendering plugin.";<br />
}<br />
/*<br />
* (non-Javadoc)<br />
*<br />
* @see com.ibm.portal.Localized#getLocales()<br />
*/<br />
@Override<br />
public ListModel getLocales()<br />
{<br />
return ENGLISH_ONLY;<br />
}<br />
/*<br />
* (non-Javadoc)<br />
*<br />
* @see com.ibm.workplace.wcm.api.plugin.rendering#getName()<br />
*/<br />
@Override<br />
public String getName()<br />
{<br />
return "SimpleRenderingPlugin";<br />
}<br />
/*<br />
* (non-Javadoc)<br />
*<br />
* @see com.ibm.portal.Localized#getTitle(java.util.Locale)<br />
*/<br />
@Override<br />
public String getTitle(final Locale p_locale)<br />
{<br />
return "SimpleRenderingPlugin";<br />
}<br />
/*<br />
* (non-Javadoc)<br />
*<br />
* @see com.ibm.workplace.wcm.api.plugin.AuthoringPlugin#isShownInAuthoringUI()<br />
*/<br />
@Override<br />
public boolean isShownInAuthoringUI()<br />
{<br />
return false;<br />
}<br />
Developing 707
*<br />
* (non-Javadoc)<br />
*<br />
* @see<br />
* com.ibm.workplace.wcm.api.plugin.rendering.RenderingPlugin#render(com.ibm.workplace.wcm.api<br />
* .plugin.rendering.RenderingPluginModel)<br />
*/<br />
@Override<br />
public boolean render(final RenderingPluginModel p_model) throws RenderingPluginException<br />
{<br />
final Map params = p_model.getPluginParameters();<br />
// determine whether the inner contents of the plugin should actually be rendered<br />
final boolean renderBody;<br />
final List renderBodyList = params.get("renderbody");<br />
if (renderBodyList != null && renderBodyList.get(0).equals("false"))<br />
{<br />
renderBody = false;<br />
}<br />
else<br />
{<br />
renderBody = true;<br />
}<br />
// render the output of the plugin to the writer provided by the RenderingPluginModel<br />
final Writer writer = p_model.getWriter();<br />
try<br />
{<br />
writer.write("Simple RenderingPlugin");<br />
final Set keys = params.keySet();<br />
final Iterator iter = keys.iterator();<br />
while (iter.hasNext())<br />
{<br />
String key = iter.next();<br />
writer.write("" + key +"="+params.get(key));<br />
}<br />
writer.write("");<br />
}<br />
catch (IOException e)<br />
{<br />
e.printStackTrace();<br />
}<br />
}<br />
}<br />
return renderBody;<br />
Create a plugin.xml file<br />
A plugin.xml file is needed whether the deployment is done using a WAR or EAR, or using a loose jar. If<br />
deploying an application in a WAR or EAR, include the plugin.xml file in the application's "WEB-INF"<br />
folder. When using a jar, include the plugin.xml in the root of the jar.<br />
<br />
<br />
<br />
id="SimpleRenderingPlugin"><br />
<br />
<br />
<br />
v Each plug-in is represented by a single tag.<br />
v The value of the point attribute must be "com.ibm.workplace.wcm.api.RenderingPlugin".<br />
v Provide an ID value of your choice.<br />
v Specify the provider class for your plug-in.<br />
Naming conventions:<br />
If you create a plug-in application with the same names and IDs as an existing plug-in, the new plug-in<br />
may override the first. When creating plug-in applications ensure that the following are unique across<br />
your system:<br />
v The plug-in ID, plug-in name, and extension ID of the plugin.xml file.<br />
v The fully qualified class name plus path of all classes within the application.<br />
v The file path of any files within the application.<br />
Creating a custom workflow action class<br />
You can create custom workflow action classes to enable you to use custom workflow actions in a<br />
workflow.<br />
Creating the custom workflow action class<br />
1. Create a java class that implements the interface<br />
com.ibm.workplace.wcm.api.custom.CustomWorkflowAction . This class must implement the following<br />
methods:<br />
v public Date getExecuteDate(Document p_document) {} (This specifies when the custom action will<br />
be executed)<br />
v public CustomWorkflowActionResult execute(Document p_document) {} (This method contains<br />
the code that will run when the custom action is executed.)<br />
2. Implement execute()method . This method contains the code that will be executed against the<br />
supplied Document. This method must return a<br />
com.ibm.workplace.wcm.api.custom.CustomWorkflowActionResult object to indicate the result of the<br />
custom code through the use of com.ibm.workplace.wcm.api.custom.Directives.<br />
v A custom workflow action result object is created by first retrieving a reference to the<br />
<strong>Web</strong><strong>Content</strong>CustomWorkflowService object, and then calling the method<br />
web<strong>Content</strong>CustomWorkflowService.getCustomWorkflowService().createResult. Ifthe<br />
CustomWorkflowActionResult does not indicate a failure, changes to the document will be saved.<br />
See the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> Javadoc for further information. The Javadoc HTML files are located<br />
under the was_profile_root\installedApps\nodename\wcm.ear\ilwwcm.war\webinterface\ folder.<br />
v Also see the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> Javadoc for further information on valid directives.<br />
3. Create a custom workflow action factory class that implements the interface<br />
com.ibm.workplace.wcm.api.custom.CustomWorkflowActionFactory.<br />
Create a plugin.xml file<br />
A plugin.xml file is needed whether the deployment is done using a WAR or EAR, or using a loose jar. If<br />
deploying via an application in a WAR or EAR, include the plugin.xml file in the application's<br />
"WEB-INF" folder. When using a jar, include the plugin.xml in the root of the jar.<br />
<br />
provider-name="<strong>IBM</strong>"><br />
<br />
<br />
<br />
<br />
v The ID of each plugin must be unique. You must replace the plugin ID specified in this example,<br />
com.ibm.workplace.wcm.sample.customworkflowaction, with a different ID for each custom workflow you<br />
create.<br />
v Each custom workflow action factory is represented by a single tag.<br />
v The value of the point attribute must be "com.ibm.workplace.wcm.api.CustomWorkflowActionFactory".<br />
v Provide an id value of your choice.<br />
v Specify the provider class for your custom workflow action factory.<br />
Naming conventions:<br />
If you create a new plugin application with the same names and IDs as an existing plugin, the new<br />
plugin may override the first. When creating plugin applications ensure that the following are unique<br />
across your system:<br />
v The plugin ID, plugin name and extension ID of the plugin.xml file.<br />
v The fully qualified class name plus path of all classes within the application.<br />
v The file path of any files within the application.<br />
Creating a Text Provider class<br />
A text provider is used to provide localized text that can be used within web content item forms. For<br />
example, a text provider can be used to localize the field labels or help text within an authoring template<br />
so that each user sees the labels or help text in their own language.<br />
To use a text provider, you must create a text provider class and then register the text provider by<br />
deploying it on the server.<br />
1. Create a java class that implements the interface<br />
com.ibm.workplace.wcm.api.plugin.textprovider.TextProvider . This class must implement the following<br />
methods:<br />
public String getProviderName() {}<br />
This method returns the unique name of the text provider.<br />
public String getString(String key, Locale displayLocale) {}<br />
This method returns some translated text, given a key identifying the message and a locale.<br />
public Collection getProviderKeys() {}<br />
This method returns a list of keys used when accessing the text provider. These keys are<br />
displayed in the authoring UI when a user is configuring the text provider.<br />
public boolean isShownInAuthoringUI() {}<br />
This method allows you to prevent your text provider from appearing in the authoring UI.<br />
See the Javadoc documentation for further information.<br />
2. Methods inherited from com.ibm.portal.Localized must also be implemented.<br />
public String getTitle(Locale displayLocale) {}<br />
This method returns the title for the text provider that will be used to allow selection of the<br />
text provider.<br />
710 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
public ListModel getLocales()<br />
This method returns a list of locales that are supported by this text provider.<br />
public String getDescription(Locale p_arg0)<br />
This method returns a description of the text provider.<br />
See the Javadoc documentation for further information.<br />
3. A plugin.xml file is needed whether the deployment is done using a WAR or EAR, or using a loose<br />
jar. If deploying via an application in a WAR or EAR, include the plugin.xml file in the application's<br />
"WEB-INF" folder. When using a jar, include the plugin.xml in the root of the jar.<br />
<br />
<br />
<br />
<br />
<br />
<br />
v Each plug-in is represented by a single tag.<br />
v The value of the point attribute must be "com.ibm.workplace.wcm.api.TextProvider".<br />
v Provide an id value of your choice.<br />
v Specify the provider class for your plug-in.<br />
Naming conventions:<br />
If you create a new plugin application with the same names and IDs as an existing plugin, the new<br />
plugin may override the first. When creating plugin applications ensure that the following are unique<br />
across your system:<br />
v The plugin ID, plugin name and extension ID of the plugin.xml file.<br />
v The fully qualified class name plus path of all classes within the application.<br />
v The file path of any files within the application.<br />
Creating a file upload validation class<br />
A file upload validation plugin is invoked anytime a file is uploaded into <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. This<br />
includes uploading files into file resource, image and style sheet elements, and images uploaded into rich<br />
text or HTML elements. The plugin is called within the "validation" processing used by <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> when uploading files.<br />
To create a file upload validation plugin, you must create a file upload validation class and then register<br />
the file upload validation class by deploying it on the server.<br />
1. Create a java class that implements the interface<br />
com.ibm.workplace.wcm.api.extensions.validation.FileUploadValidationPlugin . This class must<br />
implement the following methods:<br />
public String getName()<br />
This method returns the unique name of the file upload validation plugin.<br />
public boolean validate(InputStream p_inptStream, FileUploadValidationContext p_context)<br />
This method throws the FileUploadValidationException.<br />
See the Javadoc documentation for further information.<br />
Developing 711
2. Implement validate()method. This method contains the code that will be executed when the plug-in is<br />
invoked when uploading a file. If validated, the file will continue to upload. If not validated then the<br />
file upload is stopped. You can display a message in the user interface by including the following<br />
code in validate method:<br />
throw new FileUploadValidationException( your own message );<br />
For example:<br />
package pers.smp.extension.test.validation;<br />
import java.io.InputStream;<br />
import java.util.logging.Logger;<br />
import com.ibm.workplace.wcm.api.extensions.validation.FileUploadValidationContext;<br />
import com.ibm.workplace.wcm.api.extensions.validation.FileUploadValidationException;<br />
import com.ibm.workplace.wcm.api.extensions.validation.FileUploadValidationPlugin;<br />
import com.ibm.workplace.wcm.services.validation.FileUploadValidationContextImpl;<br />
public class SMPValidation1 implements FileUploadValidationPlugin<br />
{<br />
private final long MAX_SIZE_IMAGES = 512 * 1024;<br />
private final long MAX_SIZE_FILES = 1024 * 1024;<br />
private static Logger s_log = Logger.getLogger(SMPValidation1.class.getName());<br />
public String getName()<br />
{<br />
return "SMPValidation1";<br />
}<br />
public boolean validate(InputStream p_inptStream, FileUploadValidationContext p_context) throws FileUploadValidationE<br />
{<br />
s_log.info("File Name :"+p_context.getFileName() );<br />
s_log.info("File Type :"+p_context.getMimeType() );<br />
s_log.info("File Size :"+p_context.getFileSize() );<br />
s_log.info("Document Type :"+p_context.getDocumentType() );<br />
boolean valid = true;<br />
String message = null;<br />
String mimeType = p_context.getMimeType();<br />
if ( mimeType != null && mimeType.startsWith( "image/" ) )<br />
{<br />
if ( ! (mimeType.equalsIgnoreCase( "image/gif") || mimeType.equalsIgnoreCase( "image/jpeg") ) )<br />
{<br />
throw new FileUploadValidationException( "Invalid image type :"+mimeType + " will only accept GIF and JPG<br />
}<br />
if ( p_context.getFileSize() > MAX_SIZE_IMAGES )<br />
{<br />
throw new FileUploadValidationException( "Image is too big 500K is maximum size allowed for images. Size is<br />
}<br />
}<br />
else<br />
{<br />
if ( p_context.getFileSize() > MAX_SIZE_FILES )<br />
{<br />
throw new FileUploadValidationException( "File is too big 1M is maximum size allowed for " + mimeType + ".<br />
}<br />
}<br />
}<br />
}<br />
return valid;<br />
712 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
3. A plugin.xml file is needed whether the deployment is done using a WAR or EAR, or using a loose<br />
jar. If deploying via an application in a WAR or EAR, include the plugin.xml file in the application's<br />
"WEB-INF" folder. When using a jar, include the plugin.xml in the root of the jar.<br />
<br />
<br />
<br />
<br />
<br />
<br />
v Each plug-in is represented by a single tag.<br />
v The value of the point attribute must be "com.ibm.workplace.wcm.api.FileUploadValidationPlugin".<br />
v Provide an id value of your choice.<br />
v Specify the provider class for your plug-in.<br />
Naming conventions:<br />
If you create a new plugin application with the same names and IDs as an existing plugin, the new<br />
plugin may override the first. When creating plugin applications ensure that the following are unique<br />
across your system:<br />
v The plugin ID, plugin name and extension ID of the plugin.xml file.<br />
v The fully qualified class name plus path of all classes within the application.<br />
v The file path of any files within the application.<br />
Creating a context processor class<br />
When configured, a context processor plug-in is invoked by the JSR 286 web content viewer portlet<br />
before rendering and allows the current context, such as the item to display, to be modified.<br />
To create a context processor plug-in, you must create a context processor class and then register the<br />
context processor class by deploying it on the server and selecting it from within a JSR 286 <strong>Web</strong> content<br />
viewer portlet.<br />
1. Create a Java class that implements the interface com.ibm.workplace.wcm.api.ContextProcessor. This<br />
class must implement the following method:<br />
/**<br />
* Processes the supplied ContextProcessorParams and updates parameters within<br />
* as necessary<br />
*<br />
* @param p_currentSession The current Http Session<br />
* @param p_contextProcessorParams The editable ContextProcessorParams object<br />
*/<br />
public void process(HttpSession p_currentSession, ContextProcessorParams p_contextProcessorParams);<br />
See the Javadoc for further information.<br />
2. Implement the process method. This method contains the code that is executed when the plug-in is<br />
invoked and allows you to modify the current context using the ContextProcessorParams object before<br />
the current context is rendered.<br />
3. A plugin.xml file is needed whether the deployment is done using a WAR or EAR, or using a loose<br />
jar. If deployed using an application in a WAR or EAR, include the plugin.xml file in the application<br />
"WEB-INF" folder. When using a jar, include the plugin.xml in the root of the jar.<br />
<br />
<br />
Developing 713
<br />
<br />
<br />
4. Edit the settings of the JSR 286 web content viewer portlet you want to associate with your context<br />
processor:<br />
a. Go to the "configuration" or "edit shared settings" view of a JSR 286 web content viewer portlet.<br />
b. Go to Advanced Options > Plugins<br />
c. Select a context processor plug-in.<br />
v Each plug-in is represented by a single tag.<br />
v The value of the point attribute must be "com.ibm.workplace.wcm.api.ContextProcessor".<br />
v Provide an ID value of your choice.<br />
v Specify the provider class for your plug-in.<br />
Naming conventions:<br />
If you create a plug-in application with the same names and IDs as an existing plug-in, the new plug-in<br />
may override the first. When creating plug-in applications ensure that the following are unique across<br />
your system:<br />
v The plug-in ID, plug-in name, and extension ID of the plugin.xml file.<br />
v The fully qualified class name plus path of all classes within the application.<br />
v The file path of any files within the application.<br />
Creating a content page resolution filter class<br />
A content page resolution filter is used to customize the behavior of the content page resolution filter<br />
chain. This can enable you to tailor the response to a web content request in several ways, including<br />
overriding the content item displayed or the portal page used to display a content item in the JSR 286<br />
web content viewer.<br />
The content page resolution filter chain is composed of filters that are based on the Intercepting Filter<br />
design pattern, which provides a mechanism for intercepting a request and manipulating the request and<br />
its response. When used with requests for web content, the content page resolution filter chain has<br />
default filters that process any URL parameters contained in the web content request and then determine<br />
which portal page has a matching web content mapping. The default filters occur at the end of the filter<br />
chain.<br />
You can customize the content page resolution filter chain by creating custom filters that are registered<br />
with the portal through the Eclipse plug-in framework with the extension ID<br />
com.ibm.workplace.wcm.api.<strong>Content</strong>PageResolutionFilter. The sequence of filters in the filter chain is<br />
specified by a weight value associated with each filter. To insert custom filters into the filter chain before<br />
the default filters, you can use the weight attribute in the plugin.xml file. If the weight attribute is not<br />
present, filter sequence is determined by the getFilterChainWeight method of each custom filter.<br />
Custom filters can perform various actions:<br />
v Modify parameters before calling the default filters.<br />
v Modify the result of the default filters.<br />
v Handle exceptions generated by the default filters.<br />
v Determine whether the default filters should be invoked at all.<br />
v Modify the content path that is used as input for the default filters.<br />
v Explicitly set a target page for displaying content.<br />
714 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
v Determine which web content page should be used, if the default filters find more than one matching<br />
web content page for the request.<br />
v Modify the presentation template selection.<br />
v Set HTTP response status codes.<br />
v Send redirects to external web resources.<br />
To use a content page resolution filter, you must create a content page resolution filter class and then<br />
register the filter by deploying it on the server.<br />
1. Create a java class that implements the interface<br />
com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilter. This class must implement the<br />
following methods:<br />
public int getFilterChainWeight() {}<br />
This method returns the weight applied to the content page resolution filter elements in the<br />
filter chain. The lower the weight, the earlier the filter is inserted into the chain. If the weight<br />
parameter is defined in the plugin.xml file, that value overrides the value returned by this<br />
method.<br />
public void resolve(<strong>Content</strong>PageResolutionRequest request, <strong>Content</strong>PageResolutionResponse<br />
response, <strong>Content</strong>PageResolutionFilterChain chain) {}<br />
This method is invoked during <strong>Content</strong>PageResolution processing. The response parameter<br />
enables you to modify the content item displayed, the portal page where the content is<br />
displayed, and the presentation template used to render the content item. The request follows<br />
the portal resolver interface but has an additional method to get the content item that has<br />
been addressed. The filter chain contains the subsequent filters that can be invoked if needed.<br />
See the Javadoc documentation for further information.<br />
2. A plugin.xml file is needed whether the deployment is done using a WAR or EAR, or using a loose<br />
jar. If deploying with an application in a WAR or EAR, include the plugin.xml file in the application's<br />
"WEB-INF" folder. When using a jar, include the plugin.xml in the root of the jar.<br />
<br />
<br />
<br />
<br />
<br />
<br />
When creating plug-ins, note the following:<br />
v Each plug-in is represented by a single tag.<br />
v The value of the extension point attribute must be<br />
com.ibm.workplace.wcm.api.<strong>Content</strong>PageResolutionFilter.<br />
v Provide an ID value of your choice.<br />
v Specify the filter class for your plug-in.<br />
v The weight parameter overrides the value of the getFilterChainWeight method<br />
Naming conventions:<br />
If you create a new plug-in application with the same names and IDs as an existing plug-in, the new<br />
plug-in may override the first. When creating plug-in applications ensure that the following are<br />
unique across your system:<br />
Developing 715
v The plug-in ID, plug-in name and extension ID of the plugin.xml file.<br />
v The fully qualified class name and path of all classes within the application.<br />
v The file path of any files within the application.<br />
Examples<br />
v The LocaleDependantSelectionFilter example performs the default page resolution and selects a target<br />
page from the candidate pages, according to the user's locale.<br />
package com.ibm.workplace.wcm.extension.resolution;<br />
import java.util.List;<br />
import java.util.Locale;<br />
import javax.naming.InitialContext;<br />
import javax.naming.NamingException;<br />
import com.ibm.portal.ObjectID;<br />
import com.ibm.portal.model.CorLocalizedContextHome;<br />
import com.ibm.portal.model.LocalizedContext;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilter;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilterChain;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionRequest;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionResponse;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.exceptions.<strong>Content</strong>PageResolutionException;<br />
public class LocaleDependantSelectionFilter implements <strong>Content</strong>PageResolutionFilter<br />
{<br />
CorLocalizedContextHome localizedContextHome;<br />
public LocaleDependantSelectionFilter()<br />
{<br />
try<br />
{<br />
InitialContext ctx = new InitialContext();<br />
localizedContextHome = (CorLocalizedContextHome) ctx.lookup(CorLocalizedContextHome.JNDI_NAME);<br />
}<br />
catch(NamingException e)<br />
{<br />
e.printStackTrace();<br />
}<br />
}<br />
public int getFilterChainWeight()<br />
{<br />
return 2;<br />
}<br />
public void resolve(<strong>Content</strong>PageResolutionRequest request, <strong>Content</strong>PageResolutionResponse response,<br />
<strong>Content</strong>PageResolutionFilterChain chain)<br />
throws <strong>Content</strong>PageResolutionException<br />
{<br />
// do standard resolution first<br />
chain.resolve(request, response);<br />
// check if more than one candidate pages<br />
List candidates = response.getCandidatePageIds();<br />
if (candidates.size() > 1)<br />
{<br />
LocalizedContext context = localizedContextHome.getLocalizedContext(request.getContext());<br />
Locale locale = context.getPreferredSupportedLocale();<br />
String lang = locale.getLanguage();<br />
// find page with matching unique name<br />
for (ObjectID pageId : candidates)<br />
{<br />
if (pageId.getUniqueName().endsWith("." + lang))<br />
{<br />
716 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
esponse.setPageID(pageId);<br />
break;<br />
}<br />
}<br />
}<br />
}<br />
}<br />
v The Change<strong>Content</strong>PathFilter example changes the content path and performs the default resolution on<br />
the new content path.<br />
package com.ibm.workplace.wcm.extension.resolution;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilter;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilterChain;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionRequest;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionResponse;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.exceptions.<strong>Content</strong>PageResolutionException;<br />
public class Change<strong>Content</strong>PathFilter implements <strong>Content</strong>PageResolutionFilter<br />
{<br />
public int getFilterChainWeight()<br />
{<br />
return 3;<br />
}<br />
public void resolve(<strong>Content</strong>PageResolutionRequest request, <strong>Content</strong>PageResolutionResponse response,<br />
<strong>Content</strong>PageResolutionFilterChain chain)<br />
throws <strong>Content</strong>PageResolutionException<br />
{<br />
// instead of england render UK<br />
if ("/countries/world/europe/england".equals(response.get<strong>Content</strong>Path()))<br />
{<br />
response.set<strong>Content</strong>Path("/countries/world/europe/uk");<br />
}<br />
chain.resolve(request, response);<br />
}<br />
}<br />
v The ResolveToSpecificPageFilter example resolves to a specific page. No default resolution is performed<br />
in this case.<br />
package com.ibm.workplace.wcm.extension.resolution;<br />
import java.util.Arrays;<br />
import javax.naming.InitialContext;<br />
import javax.naming.NamingException;<br />
import com.ibm.portal.ObjectID;<br />
import com.ibm.portal.identification.Identification;<br />
import com.ibm.portal.serialize.SerializationException;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilter;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilterChain;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionRequest;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionResponse;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.exceptions.<strong>Content</strong>PageResolutionException;<br />
public class ResolveToSpecificPageFilter implements <strong>Content</strong>PageResolutionFilter<br />
{<br />
private Identification identification;<br />
public ResolveToSpecificPageFilter()<br />
{<br />
try<br />
{<br />
InitialContext ctx = new InitialContext();<br />
identification = (Identification) ctx.lookup("portal:service/Identification");<br />
}<br />
catch (NamingException nx)<br />
{<br />
Developing 717
}<br />
}<br />
nx.printStackTrace();<br />
public int getFilterChainWeight()<br />
{<br />
return 4;<br />
}<br />
public void resolve(<strong>Content</strong>PageResolutionRequest request, <strong>Content</strong>PageResolutionResponse response, <strong>Content</strong>PageResolutionF<br />
{<br />
}<br />
}<br />
try<br />
{<br />
// always resolve to page with unique name my.default.page<br />
ObjectID pageId = identification.deserialize("my.default.page");<br />
response.setPageID(pageId);<br />
response.setCandidatePageIds(Arrays.asList(new ObjectID[]{pageId}));<br />
}<br />
catch (SerializationException e)<br />
{<br />
throw new <strong>Content</strong>PageResolutionException(e);<br />
}<br />
v The SetResponseCodePageResolutionFilter example checks for the requested web content item. If it<br />
does not exist, the code throws an exception that results in sending a 404 (Not found) HTTP response<br />
status code. If the content exists, resolution is delegated to other filters in the chain.<br />
package com.ibm.workplace.wcm.extension.resolution;<br />
import java.util.Arrays;<br />
import java.util.HashSet;<br />
import java.util.Iterator;<br />
import java.util.Locale;<br />
import java.util.Set;<br />
import javax.servlet.http.HttpServletResponse;<br />
import com.ibm.portal.ListModel;<br />
import com.ibm.portal.LocalizedStatus;<br />
import com.ibm.portal.ModelException;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilter;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilterChain;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionRequest;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionResponse;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.ResolvedItem;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.exceptions.<strong>Content</strong>PageResolutionException;<br />
public class SetResponseCodePageResolutionFilter implements <strong>Content</strong>PageResolutionFilter<br />
{<br />
public void resolve(<strong>Content</strong>PageResolutionRequest request, <strong>Content</strong>PageResolutionResponse response, <strong>Content</strong>PageResolution<br />
{<br />
if (!itemExists(request.getItem()))<br />
{<br />
// send 404<br />
throw new <strong>Content</strong>PageResolutionException(new <strong>Content</strong>NotFoundException());<br />
}<br />
else<br />
{<br />
// forward to the chain if the web content exists<br />
chain.resolve(request, response);<br />
}<br />
}<br />
private boolean itemExists(ResolvedItem item)<br />
718 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
{<br />
return (item.getItemID() != null) && (item.getItemPath() != null);<br />
}<br />
public int getFilterChainWeight()<br />
{<br />
return 1;<br />
}<br />
private static class <strong>Content</strong>NotFoundException extends Exception implements LocalizedStatus<br />
{<br />
private static final long serialVersionUID = 70L;<br />
private static final Set SUPPORTED_LOCALES = new HashSet(Arrays.asList(new Locale[] { Locale.<br />
private static final String MESSAGE = "The requested web content does not exist";<br />
public <strong>Content</strong>NotFoundException()<br />
{<br />
super(MESSAGE);<br />
}<br />
public int getStatus(<br />
{<br />
return HttpServletResponse.SC_NOT_FOUND;<br />
}<br />
public String getTitle(Locale locale)<br />
{<br />
return MESSAGE;<br />
}<br />
public String getDescription(Locale locale)<br />
{<br />
return MESSAGE;<br />
}<br />
public ListModel getLocales()<br />
{<br />
return new ListModel()<br />
{<br />
public Iterator iterator() throws ModelException<br />
{<br />
return SUPPORTED_LOCALES.iterator();<br />
}<br />
};<br />
}<br />
}<br />
}<br />
v The SendRedirectPageResolutionFilter example checks for the requested web content item. If the<br />
content does not exist, the code sends a redirect to http://www.ibm.com. If the content exists, the<br />
resolution is delegated to other filters in the chain.<br />
package com.ibm.workplace.wcm.extension.resolution;<br />
import java.io.UnsupportedEncodingException;<br />
import java.net.URI;<br />
import java.net.URISyntaxException;<br />
import java.net.URLEncoder;<br />
import com.ibm.portal.resolver.exceptions.ResolutionException;<br />
import com.ibm.portal.resolver.helper.CORResolutionService;<br />
import com.ibm.portal.state.exceptions.StateException;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilter;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionFilterChain;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionRequest;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.<strong>Content</strong>PageResolutionResponse;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.ResolvedItem;<br />
import com.ibm.workplace.wcm.api.extensions.resolution.exceptions.<strong>Content</strong>PageResolutionException;<br />
public class SendRedirectPageResolutionFilter implements <strong>Content</strong>PageResolutionFilter<br />
{<br />
// the URL to redirect to<br />
private static final String URL = "http://www.ibm.com";<br />
Developing 719
public void resolve(<strong>Content</strong>PageResolutionRequest request, <strong>Content</strong>PageResolutionResponse response, <strong>Content</strong>PageResolutionF<br />
{<br />
if (!itemExists(request.getItem()))<br />
{<br />
try<br />
{<br />
// encode to URL, this is important to prevent that the ’:’<br />
// character appears in the path<br />
String encodedURL = URLEncoder.encode(URL, "UTF-8");<br />
final URI redirectURI = new URI(com.ibm.portal.resolver.Constants.SCHEME_REDIRECT, encodedURL, null);<br />
CORResolutionService.SINGLETON.resolve(request.getResolved(), redirectURI, request.getVerb(), request.getResolutionPa<br />
} catch (UnsupportedEncodingException uenc)<br />
{<br />
// should never happens as long as UTF-8 is supported<br />
throw new <strong>Content</strong>PageResolutionException(uenc);<br />
} catch (URISyntaxException e)<br />
{<br />
throw new <strong>Content</strong>PageResolutionException(e);<br />
} catch (StateException e)<br />
{<br />
throw new <strong>Content</strong>PageResolutionException(e);<br />
} catch (ResolutionException e)<br />
{<br />
// do not catch the resolution exception<br />
// as this is used internally to trigger the redirect<br />
throw new <strong>Content</strong>PageResolutionException(e);<br />
}<br />
} else<br />
{<br />
chain.resolve(request, response);<br />
}<br />
}<br />
private boolean itemExists(ResolvedItem item)<br />
{<br />
return (item.getItemID() != null) && (item.getItemPath() != null);<br />
}<br />
public int getFilterChainWeight()<br />
{<br />
return 1;<br />
}<br />
}<br />
v The following example provides the plugin.xml file that registers the above sample filters.<br />
Registering all of the above filters in one system is not recommended. The filters perform overlapping<br />
operations and are also exclusive in some cases. To use one of the filters in your system, remove the<br />
other unused filters in the plugin.xml file before deploying the file.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
weight="1"/><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Related information:<br />
Intercepting Filter design pattern<br />
Deploying custom plug-in applications<br />
You must deploy your custom plug-in applications on your server before they can be used in your web<br />
content system.<br />
To ensure that the new web content class is available each time your server is started, register the ear file<br />
in the administrative console:<br />
1. Select Applications.<br />
2. Select New Application.<br />
3. Select New Enterprise Application.<br />
4. Browse for the ear file.<br />
5. Select next until you reach step 2. Map modules to servers.<br />
6. Select the tick box for the custom action module.<br />
7. In the Clusters and servers section, select <strong>Web</strong>Sphere_Portal and select Apply.<br />
8. Keep selecting Next until the end when you select Finish.<br />
9. The screen titled Installing is shown. Select Manage Applications.<br />
10. Locate and click the application you installed. The default name is the display name defined in the<br />
application.xml file in your ear file.<br />
11. Under Detail Properties select Startup behavior.<br />
12. Under General Properties modify the Startup order to be the same weight as "wcm" and select Apply.<br />
By default, the weight is 20.<br />
13. Select Save directly to master configuration.<br />
14. To immediately start the application you installed, select the application and click Start.<br />
To update an existing ear file:<br />
1. Select Applications.<br />
2. Select Application Types.<br />
3. Select <strong>Web</strong>Sphere enterprise applications.<br />
4. Search for the Application name.<br />
5. Select the tick box for the custom action application and click Update.<br />
Developing 721
6. Select Replace the entire application and browse for the ear file.<br />
7. Keep selecting Next until the end when you select Finish.<br />
8. The screen titled 'updating' is shown. Select Save to Master Configuration and then click save.<br />
Helper class samples for web content context<br />
You can create the helper classes PortletWCMContextHelper, PortalWCMContextHelper and<br />
WCMContextHelper from the sample code that is provided here to programmatically determine the<br />
current web content context. The context indicates a content item or site area that is rendered by a web<br />
content viewer.<br />
Important: These helper classes are not provided by default with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. Example<br />
code is provided here that you can take and use to implement the classes yourself.<br />
The helper classes can be used by custom themes or custom portlets that need to render information that<br />
is related to the current context.<br />
The web content viewer determines the context to be rendered by evaluating several conditions in the<br />
following order:<br />
1. Private render parameter<br />
2. path-info parameter<br />
3. Public render parameter<br />
4. Portlet configuration setting for the web content viewer<br />
5. <strong>Web</strong> content association defined for the page<br />
The viewer evaluates each condition in turn until it finds a valid context. As soon as the viewer finds a<br />
context, remaining conditions are not evaluated.<br />
Private render parameters and portlet configuration settings are visible only to the web content viewer.<br />
However, path-info parameters, public render parameters, and content associations are visible to all<br />
portlets on a page and to portal code (for example, in a theme).<br />
PortletWCMContextHelper<br />
Use the PortletWCMContextHelper class to determine the web content context from within a portlet.<br />
Preparation<br />
To use the PortletWCMContextHelper class, configure the portlet to receive a public render parameter<br />
and a path-info parameter. Update the portlet.xml file for the portlet, and add the following entries<br />
inside the tag:<br />
<br />
WCM public context<br />
PUBLIC_CONTEXT<br />
wcm:context<br />
<br />
<br />
Shared path-info parameter of <strong>Web</strong>Sphere Portal<br />
PATH_INFO<br />
wcm:path-info<br />
<br />
In addition, update the tag with the following lines:<br />
PUBLIC_CONTEXT<br />
PATH_INFO<br />
722 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Implementation<br />
After a new instance of the PortletWCMContextHelper is created, the portlet can invoke the<br />
getCurrentWCMContext method, passing in the parameters PortletRequest and PortletResponse:<br />
public String getCurrentWCMContext(PortletRequest, PortletResponse)<br />
This method returns a string that contains the content path that defines the current web content context.<br />
To determine the content path, the getCurrentWCMContext method performs the following checks:<br />
1. The method reads the value of the path-info public render parameter. The method constructs the<br />
content path from the path-info parameter and the content association of the current page, when<br />
these conditions are true:<br />
v The path-info parameter is present.<br />
v The friendly.pathinfo.enabled property is enabled in the portal configuration service.<br />
2. If the path-info parameter is not present or if the friendly.pathinfo.enabled property is disabled,<br />
the method reads the public render parameter. If the public render parameter is present, the method<br />
returns the value of this parameter.<br />
3. If no public render parameter is present, the method evaluates the current page for a default content<br />
association. The method then returns the path of the content item that is mapped to the page.<br />
Source of PortletWCMContextHelper<br />
/******************************************************************<br />
* Copyright <strong>IBM</strong> Corp. 2010, 2011 *<br />
******************************************************************/<br />
package com.ibm.portal.extension;<br />
import java.util.Map;<br />
import javax.naming.Context;<br />
import javax.naming.InitialContext;<br />
import javax.naming.NamingException;<br />
import javax.portlet.RenderRequest;<br />
import javax.portlet.RenderResponse;<br />
import com.ibm.portal.portlet.service.PortletServiceHome;<br />
import com.ibm.portal.portlet.service.PortletServiceUnavailableException;<br />
import com.ibm.portal.services.contentmapping.exceptions.<strong>Content</strong>MappingDataBackendException;<br />
import com.ibm.portal.state.PortletState<strong>Manager</strong>;<br />
import com.ibm.portal.state.accessors.exceptions.InvalidSelectionNodeIdException;<br />
import com.ibm.portal.state.accessors.exceptions.StateNotInRequestException;<br />
import com.ibm.portal.state.exceptions.CannotInstantiateAccessorException;<br />
import com.ibm.portal.state.exceptions.State<strong>Manager</strong>Exception;<br />
import com.ibm.portal.state.exceptions.UnknownAccessorTypeException;<br />
import com.ibm.portal.state.service.PortletState<strong>Manager</strong>Service;<br />
import com.ibm.workplace.wcm.api.exceptions.DocumentIdCreationException;<br />
import com.ibm.workplace.wcm.api.exceptions.DocumentRetrievalException;<br />
import com.ibm.workplace.wcm.api.exceptions.IllegalDocumentTypeException;<br />
import com.ibm.workplace.wcm.api.exceptions.OperationFailedException;<br />
import com.ibm.workplace.wcm.api.exceptions.ServiceNotAvailableException;<br />
/**<br />
* Helper class to determine the current WCM context. This class can only be used from portlet code.<br />
* From portal code (e.g. theme) please use PortalWCMContextHelper instead.<br />
*/<br />
public class PortletWCMContextHelper extends WCMContextHelper {<br />
private final PortletState<strong>Manager</strong>Service state<strong>Manager</strong>Service;<br />
/**<br />
* Initializes the PortletWCMContextHelper.<br />
*<br />
* @throws NamingException<br />
* @throws PortletServiceUnavailableException<br />
*/<br />
Developing 723
public PortletWCMContextHelper() throws NamingException, PortletServiceUnavailableException {<br />
}<br />
// this initialization needs to be done only once<br />
final Context ctx = new InitialContext();<br />
PortletServiceHome psh = (PortletServiceHome) ctx.lookup(PortletState<strong>Manager</strong>Service.JNDI_NAME);<br />
state<strong>Manager</strong>Service = psh.getPortletService(PortletState<strong>Manager</strong>Service.class);<br />
/**<br />
* Gets the WCM context of the current page. It checks path info, public render parameter and<br />
* content mapping in this order. A WCM context defined as private render parameter or<br />
* preference of the <strong>Web</strong> <strong>Content</strong> Viewer portlet is NOT returned.<br />
*<br />
* @param request PortletRequest<br />
* @param response PortletResponse<br />
*<br />
* @return String representation of a content path.<br />
*<br />
* @throws State<strong>Manager</strong>Exception<br />
* @throws IllegalDocumentTypeException<br />
* @throws DocumentRetrievalException<br />
* @throws DocumentIdCreationException<br />
* @throws OperationFailedException<br />
* @throws ServiceNotAvailableException<br />
* @throws <strong>Content</strong>MappingDataBackendException<br />
* @throws StateNotInRequestException<br />
* @throws InvalidSelectionNodeIdException<br />
* @throws CannotInstantiateAccessorException<br />
* @throws UnknownAccessorTypeException<br />
*/<br />
}<br />
public String getCurrentWCMContext(final RenderRequest request, final RenderResponse response)<br />
throws State<strong>Manager</strong>Exception, UnknownAccessorTypeException, CannotInstantiateAccessorException,<br />
InvalidSelectionNodeIdException, StateNotInRequestException, <strong>Content</strong>MappingDataBackendException,<br />
ServiceNotAvailableException, OperationFailedException, DocumentIdCreationException,<br />
DocumentRetrievalException, IllegalDocumentTypeException {<br />
String contentPath = null;<br />
Map publicParameter = request.getPublicParameterMap();<br />
// check path info<br />
if (publicParameter.containsKey("PATH_INFO")) {<br />
final String[] pathInfo = publicParameter.get("PATH_INFO");<br />
if (pathInfo != null && pathInfo.length > 0) {<br />
final PortletState<strong>Manager</strong> portletState<strong>Manager</strong> = state<strong>Manager</strong>Service.getPortletState<strong>Manager</strong>(request, response);<br />
String contentMapping = get<strong>Content</strong>Mapping(portletState<strong>Manager</strong>, portletState<strong>Manager</strong>.getStateHolder());<br />
contentPath = assemble<strong>Content</strong>Path(contentMapping, pathInfo);<br />
}<br />
}<br />
if (contentPath == null) {<br />
// check public WCM context<br />
contentPath = request.getParameter("PUBLIC_CONTEXT");<br />
if (contentPath == null) {<br />
// check content mapping<br />
final PortletState<strong>Manager</strong> portletState<strong>Manager</strong> = state<strong>Manager</strong>Service.getPortletState<strong>Manager</strong>(request, response);<br />
contentPath = get<strong>Content</strong>Mapping(portletState<strong>Manager</strong>, portletState<strong>Manager</strong>.getStateHolder());<br />
}<br />
}<br />
return contentPath;<br />
}<br />
PortalWCMContextHelper<br />
Use the PortalWCMContextHelper class to determine the web content context from within portal code,<br />
such as a theme.<br />
724 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
To use the PortalWCMContextHelper class, create an instance of the helper class and invoke the<br />
getCurrentWCMContext method, passing in the parameters HttpServletRequest and<br />
HttpServletResponse:<br />
public String getCurrentWCMContext(HttpServletRequest, HttpServletResponse)<br />
This method returns a string that contains the content path that defines the current web content context.<br />
To determine the content path, the getCurrentWCMContext method performs the following checks:<br />
1. The method reads the value of the path-info public render parameter. The method constructs the<br />
content path from the path-info parameter and the content association of the current page, when<br />
these conditions are true:<br />
v The path-info parameter is present.<br />
v The friendly.pathinfo.enabled property is enabled in the portal configuration service.<br />
2. If the path-info parameter is not present or if the friendly.pathinfo.enabled property is disabled,<br />
the method reads the public render parameter. If the public render parameter is present, the method<br />
returns the value of this parameter.<br />
3. If no public render parameter is present, the method evaluates the current page for a default content<br />
association. The method then returns the path of the content item that is mapped to the page.<br />
Source of PortalWCMContextHelper<br />
/******************************************************************<br />
* Copyright <strong>IBM</strong> Corp. 2010, 2011 *<br />
******************************************************************/<br />
package com.ibm.portal.extension;<br />
import java.util.Map;<br />
import javax.naming.Context;<br />
import javax.naming.InitialContext;<br />
import javax.naming.NamingException;<br />
import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;<br />
import javax.xml.namespace.QName;<br />
import com.ibm.portal.MetaData;<br />
import com.ibm.portal.ModelException;<br />
import com.ibm.portal.ObjectID;<br />
import com.ibm.portal.content.<strong>Content</strong>MetaDataModel;<br />
import com.ibm.portal.content.<strong>Content</strong>Model;<br />
import com.ibm.portal.content.<strong>Content</strong>Node;<br />
import com.ibm.portal.model.<strong>Content</strong>MetaDataModelHome;<br />
import com.ibm.portal.model.<strong>Content</strong>ModelHome;<br />
import com.ibm.portal.services.contentmapping.exceptions.<strong>Content</strong>MappingDataBackendException;<br />
import com.ibm.portal.state.StateHolder;<br />
import com.ibm.portal.state.accessors.StateAccessor;<br />
import com.ibm.portal.state.accessors.StateAccessorFactory;<br />
import com.ibm.portal.state.accessors.exceptions.StateNotInRequestException;<br />
import com.ibm.portal.state.accessors.portlet.PortletAccessorFactory;<br />
import com.ibm.portal.state.accessors.portlet.SharedStateAccessor;<br />
import com.ibm.portal.state.exceptions.CannotInstantiateAccessorException;<br />
import com.ibm.portal.state.exceptions.StateException;<br />
import com.ibm.portal.state.exceptions.UnknownAccessorTypeException;<br />
import com.ibm.portal.state.service.PortalState<strong>Manager</strong>ServiceHome;<br />
import com.ibm.portal.state.service.State<strong>Manager</strong>Service;<br />
import com.ibm.workplace.wcm.api.exceptions.DocumentIdCreationException;<br />
import com.ibm.workplace.wcm.api.exceptions.DocumentRetrievalException;<br />
import com.ibm.workplace.wcm.api.exceptions.IllegalDocumentTypeException;<br />
import com.ibm.workplace.wcm.api.exceptions.OperationFailedException;<br />
import com.ibm.workplace.wcm.api.exceptions.ServiceNotAvailableException;<br />
/**<br />
* Helper class to determine the current WCM context. This class can only be used from portal code.<br />
* From portlet code please use PorteltWCMContextHelper instead.<br />
*/<br />
Developing 725
public class PortalWCMContextHelper extends WCMContextHelper {<br />
/** QName of the shared render parameter that holds the WCM public context */<br />
static final QName PUBLIC_WCM_CONTEXT_PARAM_QNAME =<br />
new QName("http://www.ibm.com/xmlns/prod/datatype/content", "context");<br />
/** QName of the shared render parameter that holds the path info */<br />
static final QName PUBLIC_PATH_INFO_QNAME =<br />
new QName("http://www.ibm.com/xmlns/prod/websphere/portal/publicparams", "path-info");<br />
/**<br />
* Page metadata key that controls the sharing scope for public render<br />
* parameter of portlets on this page<br />
*/<br />
static final String PARAM_SHARING_SCOPE_KEY = "param.sharing.scope";<br />
private final PortalState<strong>Manager</strong>ServiceHome state<strong>Manager</strong>ServiceHome;<br />
private final <strong>Content</strong>ModelHome contentModelHome;<br />
private final <strong>Content</strong>MetaDataModelHome contentMetaDataModelHome;<br />
/**<br />
* Initializes the PortalWCMContextHelper.<br />
*<br />
* @throws NamingException<br />
*/<br />
public PortalWCMContextHelper() throws NamingException {<br />
// this initialization needs to be done only once.<br />
final Context ctx = new InitialContext();<br />
state<strong>Manager</strong>ServiceHome =<br />
(PortalState<strong>Manager</strong>ServiceHome) ctx.lookup(PortalState<strong>Manager</strong>ServiceHome.JNDI_NAME);<br />
contentModelHome = (<strong>Content</strong>ModelHome) ctx.lookup(<strong>Content</strong>ModelHome.JNDI_NAME);<br />
contentMetaDataModelHome = (<strong>Content</strong>MetaDataModelHome) ctx.lookup(<strong>Content</strong>MetaDataModelHome.JNDI_NAME);<br />
}<br />
/**<br />
* Gets the WCM context of the current page. It checks path info, public WCM context render parameter<br />
* and content mapping in this order. A WCM context defined as private render parameter or<br />
* preference of the <strong>Web</strong> <strong>Content</strong> Viewer portlet is NOT returned.<br />
*<br />
* @param request HttpServletRequest<br />
* @param response HttpServletResponse<br />
*<br />
* @return String representation of a content path.<br />
*<br />
* @throws StateException<br />
* @throws IllegalDocumentTypeException<br />
* @throws DocumentRetrievalException<br />
* @throws DocumentIdCreationException<br />
* @throws OperationFailedException<br />
* @throws ServiceNotAvailableException<br />
* @throws <strong>Content</strong>MappingDataBackendException<br />
* @throws ModelException<br />
*/<br />
public String getCurrentWCMContext(final HttpServletRequest request, final HttpServletResponse response)<br />
throws StateException, <strong>Content</strong>MappingDataBackendException, ServiceNotAvailableException,<br />
OperationFailedException, DocumentIdCreationException, DocumentRetrievalException,<br />
IllegalDocumentTypeException, ModelException {<br />
String contentPath = null;<br />
final State<strong>Manager</strong>Service state<strong>Manager</strong>Service =<br />
state<strong>Manager</strong>ServiceHome.getPortalState<strong>Manager</strong>Service(request, response);<br />
final StateHolder currentState = getCurrentPortalState(request, state<strong>Manager</strong>Service);<br />
final <strong>Content</strong>Model contentModel =<br />
contentModelHome.get<strong>Content</strong>ModelProvider().get<strong>Content</strong>Model(request, response);<br />
final <strong>Content</strong>MetaDataModel metaDataModel =<br />
contentMetaDataModelHome.get<strong>Content</strong>MetaDataModelProvider().get<strong>Content</strong>MetaDataModel(request, response);<br />
// find out public render parameter scope<br />
final ObjectID currentPage = getCurrentPageID(state<strong>Manager</strong>Service, currentState);<br />
final <strong>Content</strong>Node page = contentModel.getLocator().findByID(currentPage);<br />
726 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
final MetaData metadata = metaDataModel.getMetaData(page);<br />
final Object scope = metadata.getValue(PARAM_SHARING_SCOPE_KEY);<br />
String publicRenderScope;<br />
if (scope != null) {<br />
publicRenderScope = scope.toString();<br />
} else {<br />
publicRenderScope = SharedStateAccessor.KEY_GLOBAL_PUBLIC_RENDER_PARAMETERS;<br />
}<br />
}<br />
// load public render parameter<br />
final PortletAccessorFactory portletAccFct =<br />
state<strong>Manager</strong>Service.getAccessorFactory(PortletAccessorFactory.class);<br />
final SharedStateAccessor sharedStateAcc =<br />
portletAccFct.getSharedStateAccessor(publicRenderScope, currentState);<br />
if (sharedStateAcc != null) {<br />
try {<br />
final Map sharedRenderParams = sharedStateAcc.getParameters();<br />
// check path info first.<br />
if (sharedRenderParams.containsKey(PUBLIC_PATH_INFO_QNAME)) {<br />
final String[] pathInfo = sharedRenderParams.get(PUBLIC_PATH_INFO_QNAME);<br />
if (pathInfo != null && pathInfo.length > 0) {<br />
String contentMapping = get<strong>Content</strong>Mapping(state<strong>Manager</strong>Service, currentState);<br />
contentPath = assemble<strong>Content</strong>Path(contentMapping, pathInfo);<br />
}<br />
}<br />
// if there is no path info check the public WCM context.<br />
if (contentPath == null && sharedRenderParams.containsKey(PUBLIC_WCM_CONTEXT_PARAM_QNAME)) {<br />
final String[] values = sharedRenderParams.get(PUBLIC_WCM_CONTEXT_PARAM_QNAME);<br />
if (values != null && values.length > 0) {<br />
contentPath = values[0];<br />
}<br />
}<br />
} finally {<br />
sharedStateAcc.dispose();<br />
}<br />
}<br />
if (contentPath == null) {<br />
// check for a content mapping<br />
contentPath = get<strong>Content</strong>Mapping(state<strong>Manager</strong>Service, currentState);<br />
}<br />
return contentPath;<br />
/**<br />
* Gets the current portal state.<br />
*<br />
* @param request HttpServletRequest<br />
* @param state<strong>Manager</strong>Service State<strong>Manager</strong>Service, entry point to the portal state API<br />
*<br />
* @return the current portal state<br />
*<br />
* @throws UnknownAccessorTypeException<br />
* @throws CannotInstantiateAccessorException<br />
* @throws StateNotInRequestException<br />
*/<br />
private StateHolder getCurrentPortalState(final HttpServletRequest request,<br />
final State<strong>Manager</strong>Service state<strong>Manager</strong>Service) throws UnknownAccessorTypeException,<br />
CannotInstantiateAccessorException, StateNotInRequestException {<br />
StateHolder result = null;<br />
final StateAccessorFactory stateAccFac =<br />
(StateAccessorFactory) state<strong>Manager</strong>Service.getAccessorFactory(StateAccessorFactory.class);<br />
final StateAccessor stateAcc = stateAccFac.getStateAccessor();<br />
try {<br />
result = stateAcc.getStateHolder(request);<br />
} finally {<br />
stateAcc.dispose();<br />
Developing 727
}<br />
}<br />
}<br />
return result;<br />
WCMContextHelper<br />
The WCMContextHelper helper class is an abstract class that is used by the PortalWCMContextHelper<br />
class and the PortletWCMContextHelper class.<br />
The WCMContextHelper class provides three methods:<br />
getCurrentPageID<br />
This method uses the State API to determine the currently selected page and returns the object ID<br />
of the page.<br />
get<strong>Content</strong>Mapping<br />
This method uses the <strong>Content</strong> Mapping Service to retrieve the content item that is associated with<br />
the current page. The association always contains the ID of the mapped content. After<br />
determining the content ID, the method uses the <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> API to convert the<br />
ID to a content path. The method returns the content path of the mapped item.<br />
assemble<strong>Content</strong>Path<br />
This method takes the path-info parameter, which has multiple values, and the content<br />
association of the current page. The method creates the web content context by appending all<br />
elements of the path-info parameter to the content mapping. The method then returns the result,<br />
which is the content path that defines the web content context.<br />
Source of WCMContextHelper<br />
/******************************************************************<br />
* Copyright <strong>IBM</strong> Corp. 2010, 2011 *<br />
******************************************************************/<br />
package com.ibm.portal.extension;<br />
import javax.naming.Context;<br />
import javax.naming.InitialContext;<br />
import javax.naming.NamingException;<br />
import com.ibm.portal.ObjectID;<br />
import com.ibm.portal.services.contentmapping.<strong>Content</strong>Mapping;<br />
import com.ibm.portal.services.contentmapping.<strong>Content</strong>MappingInfo;<br />
import com.ibm.portal.services.contentmapping.<strong>Content</strong>MappingInfoHome;<br />
import com.ibm.portal.services.contentmapping.exceptions.<strong>Content</strong>MappingDataBackendException;<br />
import com.ibm.portal.state.StateHolder;<br />
import com.ibm.portal.state.accessors.exceptions.InvalidSelectionNodeIdException;<br />
import com.ibm.portal.state.accessors.selection.SelectionAccessor;<br />
import com.ibm.portal.state.accessors.selection.SelectionAccessorFactory;<br />
import com.ibm.portal.state.exceptions.CannotInstantiateAccessorException;<br />
import com.ibm.portal.state.exceptions.UnknownAccessorTypeException;<br />
import com.ibm.portal.state.service.State<strong>Manager</strong>Service;<br />
import com.ibm.workplace.wcm.api.DocumentId;<br />
import com.ibm.workplace.wcm.api.<strong>Web</strong><strong>Content</strong>Service;<br />
import com.ibm.workplace.wcm.api.Workspace;<br />
import com.ibm.workplace.wcm.api.exceptions.DocumentIdCreationException;<br />
import com.ibm.workplace.wcm.api.exceptions.DocumentRetrievalException;<br />
import com.ibm.workplace.wcm.api.exceptions.IllegalDocumentTypeException;<br />
import com.ibm.workplace.wcm.api.exceptions.OperationFailedException;<br />
import com.ibm.workplace.wcm.api.exceptions.ServiceNotAvailableException;<br />
/**<br />
* Abstract class containing helper methods to determine the current WCM context.<br />
* This class can not be used directly. When in portal code please use PortalWCMContextHelper,<br />
* when in portlet code please use PortletWCMContextHelper.<br />
*/<br />
public abstract class WCMContextHelper {<br />
728 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
private final <strong>Content</strong>MappingInfoHome contentMappingInfoHome;<br />
private final <strong>Web</strong><strong>Content</strong>Service web<strong>Content</strong>Service;<br />
/**<br />
* Initializes the WCMContextHelper.<br />
*<br />
* @throws NamingException<br />
*/<br />
public WCMContextHelper() throws NamingException {<br />
// this initialization needs to be done only once.<br />
final Context ctx = new InitialContext();<br />
contentMappingInfoHome = (<strong>Content</strong>MappingInfoHome) ctx.lookup(<strong>Content</strong>MappingInfoHome.JNDI_NAME);<br />
web<strong>Content</strong>Service = (<strong>Web</strong><strong>Content</strong>Service) ctx.lookup("portal:service/wcm/<strong>Web</strong><strong>Content</strong>Service");<br />
}<br />
/**<br />
* Gets the default content mapping of the currently selected page.<br />
*<br />
* @param state<strong>Manager</strong>Service State<strong>Manager</strong>Service, entry point to the portal state API<br />
* @param state the current portal state<br />
*<br />
* @return String representation of the content path that is mapped to the page.<br />
*<br />
* @throws InvalidSelectionNodeIdException<br />
* @throws CannotInstantiateAccessorException<br />
* @throws UnknownAccessorTypeException<br />
* @throws <strong>Content</strong>MappingDataBackendException<br />
* @throws OperationFailedException<br />
* @throws ServiceNotAvailableException<br />
* @throws DocumentIdCreationException<br />
* @throws IllegalDocumentTypeException<br />
* @throws DocumentRetrievalException<br />
*/<br />
protected String get<strong>Content</strong>Mapping(final State<strong>Manager</strong>Service state<strong>Manager</strong>Service, final StateHolder state)<br />
throws UnknownAccessorTypeException, CannotInstantiateAccessorException,<br />
InvalidSelectionNodeIdException, <strong>Content</strong>MappingDataBackendException, ServiceNotAvailableException,<br />
OperationFailedException, DocumentIdCreationException, DocumentRetrievalException,<br />
IllegalDocumentTypeException {<br />
final ObjectID currentPage = getCurrentPageID(state<strong>Manager</strong>Service, state);<br />
//get the default mapping for the current page<br />
final <strong>Content</strong>MappingInfo cmInfo = contentMappingInfoHome.get<strong>Content</strong>MappingInfo(currentPage);<br />
final <strong>Content</strong>Mapping cm = cmInfo.getDefault<strong>Content</strong>Mapping();<br />
String contentPath = null;<br />
if (cm != null) {<br />
final String contentID = cm.get<strong>Content</strong>ID();<br />
//find the content path to the ID<br />
final Workspace workspace = web<strong>Content</strong>Service.getRepository().getWorkspace();<br />
final DocumentId docID = workspace.createDocumentId(contentID);<br />
contentPath = workspace.getPathById(docID, true, true);<br />
}<br />
return contentPath;<br />
}<br />
/**<br />
* Gets the ID of the currently selected page.<br />
*<br />
* @param state<strong>Manager</strong>Service State<strong>Manager</strong>Service, entry point to the portal state API<br />
* @param state the current portal state<br />
*<br />
* @return Object ID of the currently selected page<br />
*<br />
* @throws CannotInstantiateAccessorException<br />
* @throws UnknownAccessorTypeException<br />
* @throws InvalidSelectionNodeIdException<br />
*/<br />
protected ObjectID getCurrentPageID(final State<strong>Manager</strong>Service state<strong>Manager</strong>Service, final StateHolder state)<br />
throws UnknownAccessorTypeException, CannotInstantiateAccessorException,<br />
Developing 729
}<br />
InvalidSelectionNodeIdException {<br />
ObjectID result = null;<br />
final SelectionAccessorFactory selectionAccFct = state<strong>Manager</strong>Service<br />
.getAccessorFactory(SelectionAccessorFactory.class);<br />
final SelectionAccessor selectionAcc = selectionAccFct.getSelectionAccessor(state);<br />
try {<br />
result = selectionAcc.getSelection();<br />
} finally {<br />
selectionAcc.dispose();<br />
}<br />
return result;<br />
}<br />
/**<br />
* Assembles a proper content path that resembles ’library/site/sitearea/content’. The method<br />
* takes care of placing path separators where necessary. The returned content path does not<br />
* contain path separators as first or as last character.<br />
*<br />
* @param contentMapping<br />
* The content mapping of the current page. Must not be null.<br />
* @param pathInfo<br />
* The value of the path-info public render parameter for the current page. Must not be<br />
* null.<br />
* @return A fully-qualified content path.<br />
*/<br />
protected String assemble<strong>Content</strong>Path(final String contentMapping, final String[] pathInfo) {<br />
final StringBuilder result = new StringBuilder();<br />
// add the context mapping of the page w/o trailing forward slash<br />
if (contentMapping.charAt(contentMapping.length() - 1) == ’/’) {<br />
result.append(contentMapping, 0, contentMapping.length() - 1);<br />
} else {<br />
result.append(contentMapping);<br />
}<br />
// add all parts of path-info separated by a forward slashes<br />
for (final String pathInfoFragment : pathInfo) {<br />
if (pathInfoFragment != null && pathInfoFragment.length() > 0) {<br />
// add leading forward slash before each fragment<br />
result.append(’/’);<br />
// add the path-info fragment<br />
result.append(pathInfoFragment);<br />
}<br />
}<br />
return result.toString();<br />
}<br />
Displaying data from external sources<br />
You display data from external sources using the same methods as you would when creating a website.<br />
Displaying data<br />
You can display content from external sources using standard Java tag libraries and a JSP element. Java<br />
code using standard Java APIs or tag libraries can be used to display and format data from databases,<br />
LDAP repositories, or send email.<br />
If using a rendering portlet to display web content on a portal page, you can also use other <strong>IBM</strong><br />
<strong>Web</strong>Sphere Portal portlets on the same portal page to display data.<br />
730 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<strong>Web</strong> page aggregation<br />
<strong>Content</strong> from external websites and <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> can be displayed together on a portal<br />
page by using standard <strong>Web</strong>Sphere Portal portlets for displaying content from external websites. Please<br />
refer to the web Page portlet and web clipping portlet sections of this Information Center for information<br />
about creating and configuring these portlets.<br />
This functionality is only available when displaying content in <strong>Web</strong>Sphere Portal. These portlets are not<br />
accessible from the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> servlet, though standard Java API or tag libraries may be used<br />
with a JSP element to achieve the same result.<br />
Creating websites for different localities<br />
Although websites that automatically display content for different localities or languages are not directly<br />
supported by <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>, it is possible to maintain separate libraries within <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> for different localities.<br />
Creating libraries and search collections for different localities<br />
When creating a multi-locale solution, it is recommended that you do the following:<br />
v Create a separate library for each locality.<br />
v Create another library for any content that will be shared across localities.<br />
v Create a separate search collection for each locality.<br />
Note: If a language does not exist in the list of languages available when creating a library, you can add<br />
that language to the list of supported <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> languages. See "Language Support" in the<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> information center for further information.<br />
Naming consistency<br />
It is recommended that the same names are given to corresponding items in each library. This will<br />
simplify the navigation between localities as only the library name will be different in URLs pointing to<br />
the same content in different localities.<br />
For example, only the library name will be different for content displayed in French and German<br />
localities:<br />
v http://host/wps/wcm/connect/frenchlibrary/sitearea/content<br />
v http://host/wps/wcm/connect/germanlibrary/sitearea/content<br />
Maintaining content in different localities<br />
At present, <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> does not manage the synchronization of content between localities.<br />
A workflow can be used to assist with the synchronization of content between localities by using the joint<br />
approval feature. You can add a stage to a workflow that would require joint approval from a member in<br />
a group representing each locality. You would configure this stage to send an email to notify each<br />
joint-approver that an item has been updated. Each joint-approver would not approve the item until they<br />
had updated the same item in their locality to match the changes in the primary locality.<br />
Developing 731
Enabling Java messaging services for web content<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> provides support for the notification of events such as item state changes, or<br />
services starting and stopping. These notifications can be delivered as messages to the Java messaging<br />
service.<br />
There are three classes of events that can be delivered as messages to the Java messaging service:<br />
Item events:<br />
v Item created<br />
v Item updated<br />
v Item moved<br />
v Item deleted<br />
Syndication events:<br />
v Starting<br />
v Stopping<br />
Pre-render events:<br />
v Starting<br />
v Stopping<br />
To enable Java messaging services for web content:<br />
1. Configure the messaging services parameters in the WCM MessagingService service using the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server administration console.<br />
2. Run the following command from the wp_profile_root/ConfigEngine directory:<br />
Windows<br />
ConfigEngine.bat create-wcm-jms-resources -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DuseRemoteEndPoints=true/false<br />
UNIX ./ConfigEngine.sh create-wcm-jms-resources -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DuseRemoteEndPoints=true/false<br />
i ConfigEngine.sh create-wcm-jms-resources -DPortalAdminId=username<br />
-DPortalAdminPwd=password -DuseRemoteEndPoints=true/false<br />
Note: An administrator user name and password is not required if you have already specified the<br />
portal administrator username and password using the PortalAdminId and PortalAdminPwd settings<br />
in the wkplc.properties file.<br />
Note: The "-DuseRemoteEndPoints" parameter is only used on clustered systems. If set to true, the<br />
task will use all node end points on the current setup. If set to "false", the task will use the end points<br />
of the current node.<br />
3. Restart <strong>Web</strong>Sphere Portal.<br />
Working with <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> Integrator<br />
The <strong>Web</strong> <strong>Content</strong> Integrator is a solution for integrating externally managed <strong>Web</strong> content with<br />
<strong>Web</strong>Sphere Portal. Through the use of standard content syndication feed technologies based on RSS 2.0,<br />
the <strong>Web</strong> <strong>Content</strong> Integrator provides a loosely-coupled mechanism for transferring published content and<br />
metadata to the portal after they have been approved in the source system. Once the content and<br />
metadata have been transferred to the portal, it is possible to use the built-in content management<br />
features of <strong>Web</strong>Sphere Portal to secure, personalize, and display the content to users.<br />
To use the <strong>Web</strong> <strong>Content</strong> Integrator you have to:<br />
732 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
1. create a feed on your source system using the <strong>Web</strong> <strong>Content</strong> Integrator feed format specification.<br />
2. configure <strong>Web</strong>Sphere Portal to consume the feed.<br />
Feed format specification<br />
RSS, or Really Simple Syndication, is an XML-based format that is widely used for syndicating content<br />
from sources such as <strong>Web</strong> sites and blogs to readers who have subscribed to the feeds. The input to the<br />
<strong>Web</strong> <strong>Content</strong> Integrator is a content feed which complies with the RSS 2.0 format. The core feed format is<br />
relatively simple, with only a limited number of elements that need to be specified for each item in the<br />
feed. However, the RSS 2.0 specification allows the base format to be extended using XML namespaces to<br />
support additional functionality. In order to enable a deeper level of control over how items are created<br />
in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>, an RSS extension has been defined which contains elements that map to many<br />
of the attributes of the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> object model.<br />
Related concepts:<br />
“<strong>Web</strong> content feed management” on page 555<br />
To access a feed you have created on your source server, you must create a feed configuration.<br />
Feed format overview<br />
RSS 2.0 is a dialect of XML, and all RSS files must comply with the XML 1.0 specification as published by<br />
the World Wide <strong>Web</strong> Consortium (W3C). RSS feed files typically have file extensions of either .rss or<br />
.xml. The <strong>Web</strong> <strong>Content</strong> Integrator does not impose any file naming conventions on the feed producer.<br />
RSS 2.0 feed file format<br />
The most commonly used media type options are "text/xml" and "application/rss+xml". The choice of<br />
media type does impact how the <strong>Web</strong> <strong>Content</strong> Integrator is able to determine the character encoding of<br />
the feed. If the character encoding cannot be determined correctly, the <strong>Web</strong> <strong>Content</strong> Integrator will<br />
produce errors when parsing the feed. Therefore it is important to choose an appropriate media type for<br />
your environment.<br />
Following the XML prolog, an RSS 2.0 file begins with a single element. This element has one<br />
required attribute, "version", which must be set to "2.0". The file must also contain a single <br />
element which contains a number of sub-elements that provide some metadata about the feed as a whole.<br />
The element must contain one or more elements. The elements in turn contain<br />
sub-elements which provide information about the content that is being syndicated. For example:<br />
<br />
<br />
<br />
Sample Feed<br />
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
News Item Two<br />
http://www.ibm.com/news/two.htm<br />
<br />
This is a summary of the second news article<br />
<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
<br />
News Item One<br />
http://www.ibm.com/news/one.htm<br />
<br />
This is a summary of the first news article.<br />
<br />
Developing 733
Tue, 31 Oct 2006 10:30:00 EST<br />
<br />
<br />
<br />
Note: If non-ascii data is used in a feed, then encoding="UTF-8" must be specified in the feed: <br />
Channel-level Elements<br />
Each RSS feed file must contain only one channel element. There are a number of allowable sub-elements<br />
of the channel which provide some metadata about the channel itself. The following elements are either<br />
required or used by the <strong>Web</strong> <strong>Content</strong> Integrator.<br />
title This element is used to provide the name of the feed. This element is required by the RSS 2.0<br />
specification but is not used by the <strong>Web</strong> <strong>Content</strong> Integrator.<br />
link This element contains a URL that points to the <strong>Web</strong> page containing the feed. This element is<br />
required by the RSS 2.0 specification but is not used by the <strong>Web</strong> <strong>Content</strong> Integrator.<br />
description<br />
This element contains a brief description of the content of the channel. This element is required<br />
by the RSS 2.0 specification but is not used by the <strong>Web</strong> <strong>Content</strong> Integrator.<br />
lastBuildDate<br />
This element contains a date and time stamp representing the last time the content of the feed<br />
was changed. This date, as well as any others in the feed, must conform to the RFC 822 format.<br />
This is an optional element according to the RSS 2.0 specification, however some feed reader<br />
applications may depend on it. In certain cases the <strong>Web</strong> <strong>Content</strong> Integrator will store the value in<br />
the lastBuildDate element and then pass it back to the feed producer on the next request as a way<br />
of indicating which version of the feed it has already syndicated.<br />
Item-level Elements<br />
For the purposes of the <strong>Web</strong> <strong>Content</strong> Integrator, each item in the feed represents an item type. The<br />
following item types can be created or updated via the feed:<br />
v <strong>Content</strong> items<br />
v Site Areas<br />
v Taxonomies<br />
v Categories<br />
v Component<br />
The following sub-elements are either required or used by the <strong>Web</strong> <strong>Content</strong> Integrator:<br />
title The value of this element will be stored in the Name field of <strong>Web</strong> content items. For content<br />
items this will become part of the URL to the content page. As this will be used in the Name<br />
field of <strong>Web</strong> content items, the title can contain only alphanumeric characters (a-z, A-Z, 0-9),<br />
spaces, and the following characters: $-_.!(),This is a required sub-element.<br />
link This is the URL to the source content. In some cases it will be used as the base URL from which<br />
any relative links embedded in the content are resolved.<br />
description<br />
The value of this element will be stored in the Description field of <strong>Web</strong> content items. Although<br />
the RSS specification allows entity-encoded or escaped HTML to be placed in this element, the<br />
Description field in <strong>Web</strong> content items is not designed to store HTML. For the purposes of the<br />
<strong>Web</strong> <strong>Content</strong> Integrator this element must only contain plain text.<br />
734 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
pubDate<br />
The value of this element must be an RFC 822 time and date stamp representing the time that the<br />
item was added to, or updated in, the feed. The <strong>Web</strong> <strong>Content</strong> Integrator will use this date in<br />
combination with the element to determine whether or not it has already processed the<br />
item. Each time an item is updated via the feed the value of the in the feed entry will<br />
be updated as well to indicate that something has changed. This is a required sub-element.<br />
guid The element must contain an ID to uniquely identify the item. This will often be a unique<br />
ID from the source content management system. The <strong>Web</strong> <strong>Content</strong> Integrator will maintain a<br />
mapping of this ID to the item's internal <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> ID. This is necessary in order to<br />
be able to correctly update or delete items that already exist in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. This field<br />
is case sensitive and can contain any string of characters up to a maximum 256 characters in<br />
length. The isPermaLink attribute will be ignored. This is a required element.<br />
category<br />
Each element will contain a hierarchical meta data tag that describes the content. The<br />
value of this element will be translated into taxonomy and category items in <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>. If the category tree specified in the element does not already exist in <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> it will be created automatically by the <strong>Web</strong> <strong>Content</strong> Integrator when the feed<br />
entry is processed. The RSS 2.0 specification defines an optional domain attribute for the category<br />
element. Feed producers can use this attribute to store the name of the <strong>Web</strong> content library where<br />
the category tree is to be created. This element only applies to content items. A single <br />
may contain multiple category elements. As this will be used in the Name field of <strong>Web</strong> content<br />
taxonomy and category items, the title can contain only alphanumeric characters (a-z, A-Z, 0-9),<br />
spaces, and the following characters: $-_.!(),This is a required sub-element.<br />
author According to the RSS 2.0 specification this element contains the author's e-mail address. The<br />
specification only allows a single element per item. Generally this will be the author of<br />
the content item in the source content management system. The <strong>Web</strong> <strong>Content</strong> Integrator will<br />
attempt to resolve the e-mail address into the common name of a portal user and then store the<br />
name of that user in the author field the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> item. If this element is not<br />
present in the feed, or if the e-mail address cannot be resolved, then the name of the system user<br />
will stored in the author field of the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> item instead.<br />
RSS Namespace Extension for <strong>Web</strong> content<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items contain a set of controls which are used to store information for various<br />
purposes. The elements in this namespace roughly map to the fields that are available on those controls.<br />
Depending on the type of the item, it may or may not contain certain controls so some of the elements in<br />
the namespace are only relevant to specific item types. All of the elements in this namespace are<br />
sub-elements of , none are used at the level.<br />
Adding the custom namespace definition to the feed<br />
The first requirement is to add the namespace reference to the element at the top of the feed.<br />
The URL of the namespace is specified using the following tag:<br />
<br />
This is a fixed property value that the feed parser uses as the key to identify elements which belong to<br />
the custom <strong>Web</strong> <strong>Content</strong> Integrator namespace.<br />
For example:<br />
<br />
<br />
<br />
Sample Feed<br />
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
Developing 735
News Item Two<br />
http://www.ibm.com/news/two.htm<br />
<br />
This is a summary of the second news article<br />
<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<strong>Content</strong><br />
<br />
<br />
<br />
The namespace label "ibmwcm" can be changed so long as the label specified in the namespace<br />
declaration matches the label used on the extended elements in the feed.<br />
Process Control Elements<br />
These elements are used to provide the <strong>Web</strong> <strong>Content</strong> Integrator with some information about how to<br />
handle the data contained within the .<br />
action<br />
This element indicates the action to be performed on the item represented by the .<br />
Table 173. action element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
All<br />
All<br />
"add", "update", or "delete".<br />
None<br />
None<br />
None<br />
None<br />
Example:<br />
update<br />
itemType<br />
The itemType element indicates the type of item represented by the feed entry. These correspond to the<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> item types that can be created or updated via the feed. In some cases the value of<br />
this element is combined with the value in the element to determine which <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> item type to create.<br />
Table 174. itemType element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Details for this element:<br />
All<br />
All<br />
"siteArea" for site areas.<br />
"content" for content items.<br />
"component" for components.<br />
"category" for taxonomies and categories.<br />
736 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 174. itemType element (continued)<br />
Element parameters:<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
None<br />
None<br />
None<br />
None<br />
Example:<br />
Site Area<br />
siteArea + any other value for or the lack of an e<br />
Taxonomy<br />
category + /<br />
Category<br />
category + any other value for or the lack of an e<br />
Component<br />
component<br />
<strong>Content</strong><br />
content<br />
Location Control Elements<br />
These elements are used to provide the <strong>Web</strong> <strong>Content</strong> Integrator with some information about an item's<br />
relative location.<br />
library<br />
You must specify a default <strong>Web</strong> content library name when configuring a task to consume an input feed.<br />
The <strong>Web</strong> <strong>Content</strong> Integrator will perform all operations within that library including creating new <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong> items, searching for existing versions of items, and searching for any associated design<br />
artifacts such as authoring templates and workflows. You can also override this setting so that a single<br />
feed can be used to create content in multiple libraries.<br />
There are three ways that <strong>Web</strong> <strong>Content</strong> Integrator will check if a value was specified in this element:<br />
v If the library specified in the library element matches an existing <strong>Web</strong> content library, all operations<br />
during the processing of this feed entry will be processed within the context of the library specified in<br />
the library element.<br />
v If no library element is present in the feed entry, or if the library element is present but no value was<br />
specified then the default library from the task configuration is used.<br />
v If a value is specified in the library element but no matching <strong>Web</strong> content library is found, then an<br />
error message will be logged and the feed entry will not be processed.<br />
Table 175. library element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Details for this element:<br />
All<br />
None<br />
The name of an existing <strong>Web</strong> content library.<br />
None<br />
None<br />
None<br />
Developing 737
Table 175. library element (continued)<br />
Element parameters:<br />
Optional sub-elements<br />
Details for this element:<br />
None<br />
Example:<br />
LibraryName<br />
path<br />
The path element is used to indicate the hierarchical path to the <strong>Web</strong> content item. For site areas and<br />
content items, this element contains the parent site area path. For categories, the value is the parent<br />
category path.<br />
Site areas and categories can only have a single path element. If more than one path element is specified,<br />
only the first will be used. <strong>Content</strong> items can have multiple parents, so multiple path elements can be<br />
used. The first path element is used as the main content item and the following path elements will be<br />
treated as content links. An optional "library" parameter can be specified for path elements referring to<br />
linked content located on a different library from the main content item.<br />
New items will be added to the end of the current list of items within <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
Table 176. path element<br />
Element parameters:<br />
Details for this element:<br />
Applies to item types<br />
siteArea, Category, <strong>Content</strong><br />
Required for item types<br />
Site Areas and Taxonomies.<br />
Allowable Values All values should start with a leading forward slash "/"<br />
character. For site area and taxonomy items the value<br />
should be just a single forward slash "/".<br />
Required Attributes<br />
None<br />
Optional Attributes<br />
"library"<br />
Required sub-elements<br />
Optional sub-elements<br />
Contains the name of a library where the site path<br />
resides. This attribute is used where linked content reside<br />
on a different library from the main content. This<br />
attribute is ignored on the first path element listed in the<br />
feed entry.<br />
None<br />
None<br />
Examples:<br />
/<br />
/<strong>IBM</strong>/Products<br />
/Intranet/Home/News<br />
738 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
createLinks<br />
This is used to specify which parent items to link to when creating content items.<br />
Table 177. createLinks element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
<strong>Content</strong><br />
None<br />
The createLinks element is a container for readability and<br />
has no attributes or expected values.<br />
None<br />
None<br />
parentGuid<br />
The parentGuid element should contain the<br />
unique ID of another item in the feed which<br />
describes the parent item.<br />
None<br />
Examples:<br />
<br />
8234ad23fb29<br />
<br />
The Orphan Container<br />
If no valid parents or paths are specified in the feed then the item will be placed into an orphan<br />
container until it is able to be updated with a valid path. The <strong>Web</strong> <strong>Content</strong> Integrator will automatically<br />
create an orphans container in each <strong>Web</strong> content library as it is needed. For site areas and content items,<br />
the orphan container will be a site area path names "WCI/Orphans". For categories, the orphan container<br />
will be a taxonomy and category path with the name "WCI/Orphans". The name of the orphan<br />
containers can be controlled through a setting in the WCMConsumerPlugin.properties file.<br />
children<br />
The children element is used to specify the children of the current item. The value of this element should<br />
be the GUID of another entry in the feed which describes a child of the current item.<br />
The referenced child item must be of an appropriate type. For site areas, the children must be site areas<br />
or content items. For taxonomies and categories, the children must be categories. If the type is not valid,<br />
the parent item will still be added or updated, but the child reference will not be created.<br />
Multiple childGuid sub-elements can be contained within the children element. If multiple children are<br />
specified, they will be added in the order in which they are listed in the feed. This allows the feed<br />
producer to control the order in which site areas and content items are linked to their parent site area<br />
which can be useful for setting up navigation displays.<br />
There are two attributes of the children element that control how the children specified in the feed get<br />
combined with any children which may already be contained by the parent item. The action attribute<br />
controls whether or not the child list in the feed will replace the existing list of children. If the value of<br />
that attribute is set to "add" then the children specified in the feed will be combined with the existing list<br />
of children. Any other value, including an empty string or the absence of this attribute, will cause the list<br />
of children specified in the feed to completely replace the pre-existing list.<br />
Developing 739
The position attribute is only relevant when the action attribute is set to "add". This attribute controls<br />
whether the children specified in the feed are added to the start or to the end of the pre-existing child<br />
list. If this attribute is not specified, the children will be added to the end of the pre-existing list. If the<br />
children element is not present in the feed then the pre-existing child list will be left intact.<br />
Site areas and categories can only have one immediate parent, any pre-existing parent relationships will<br />
be removed prior to adding them as a child of this item. As content items can have multiple parents,<br />
adding a content item as a child of this item does not remove it from any of its other parents<br />
Table 178. children element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
siteArea, Category.<br />
None<br />
The children element is just a container for readability, it<br />
has no expected values.<br />
None<br />
action<br />
The action attribute can have a value of "add" or<br />
"replace". These values indicate whether to<br />
replace children that are already existing or to<br />
add to them.<br />
position<br />
This attribute can have the value "start" or<br />
"end". These values indicate where the children<br />
will be placed in sibling order as they are<br />
processed.<br />
childGuid<br />
The childGuid element should contain the<br />
unique ID of another item in the feed which<br />
describes the child item.<br />
None<br />
Examples:<br />
<br />
8234cb51df43<br />
<br />
default<strong>Content</strong><br />
The default<strong>Content</strong> element only applies to site areas. It allows the feed producer to specify which<br />
content item will be used as the default content for a site area. If this element is missing, has a blank<br />
value, or cannot be resolved, then the default content of the site area will be cleared.<br />
Table 179. default<strong>Content</strong> element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Details for this element:<br />
siteArea.<br />
None<br />
Value should be the GUID of another item in the feed<br />
which describes a content item.<br />
None<br />
None<br />
740 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 179. default<strong>Content</strong> element (continued)<br />
Element parameters:<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
None<br />
None<br />
Examples:<br />
8234cb5<br />
templateMap<br />
The templateMap element only applies to site areas. It allows the feed producer to specify the template<br />
maps to be used when rendering content that is contained within the designated site area. Use multiple<br />
instances of the templateMap element to create multiple template mappings on a site area.<br />
When performing an update of an existing site area, the following steps will be executed for each<br />
element specified in the feed:<br />
1. Get the names of the authoring and presentation templates specified in the templateMap element.<br />
2. Attempt to locate an authoring template that matches the name specified in the feed.<br />
3. If a matching authoring template item cannot be located, log an error and start processing the next<br />
templateMap element.<br />
4. Attempt to locate a presentation template that matches the name specified in the feed.<br />
5. If a matching presentation template cannot be located, log an error and start processing the next<br />
templateMap element.<br />
6. Check if the site area already contains a mapping for the specified authoring template:<br />
a. If so, check whether it maps to the same presentation template as specified in the feed;<br />
1) If so, go to the next templateMap element.<br />
2) If not, remove the mapping and replace it with one to the specified presentation template.<br />
b. If not, create a new mapping of the specified authoring template to the specified presentation<br />
template.<br />
7. Process the next templateMap element<br />
The WCM APIs don't provide a mechanism to get a complete list of template mappings that exist for a<br />
given site area. As a result, it is not possible to remove a template mapping via the feed. Once a mapping<br />
has been set on a site area it can be updated via the feed but can only be removed manually through the<br />
WCM authoring portlet.<br />
Table 180. templateMap element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Details for this element:<br />
siteArea.<br />
None<br />
This element does not take any values. The data is<br />
specified in the attributes.<br />
Developing 741
Table 180. templateMap element (continued)<br />
Element parameters:<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
authoring<br />
The value of this attribute must be a string that<br />
exactly matches the name of an existing<br />
authoring template.<br />
presentation<br />
The value of this attribute must be a string that<br />
exactly matches the name of an existing<br />
presentation template.<br />
None<br />
None<br />
None<br />
Examples:<br />
<br />
<br />
Identity control elements<br />
Most identification fields in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items map directly to core RSS elements; maps<br />
to the name field, maps to the description field, and maps to the authors field.<br />
Other identification fields can be populated using the following identity control elements.<br />
displayTitle<br />
The displayTitle element allows the feed producer to specify a separate value for the Display Title field<br />
in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. If this element is not present in the feed entry, <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> will<br />
automatically set the value of the Display Title field to match the Name field when the item is saved.<br />
Table 181. displayTitle element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
All<br />
None<br />
A string to be used as the Display Title in <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>. Unlike the Name field, this field can contain<br />
double-byte and non-ASCII characters.<br />
None<br />
None<br />
None<br />
None<br />
Example:<br />
<br />
Fourth Quarter Results Press Release<br />
<br />
owner<br />
The owner element provides a mechanism to set the value of the Owners field via the feed. Multiple<br />
owner elements can be specified. Each owner element should contain the common name of a single<br />
742 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<strong>Web</strong>Sphere Portal user or group. If the <strong>Web</strong> <strong>Content</strong> Integrator is unable to resolve a specified name to an<br />
actual user or group then that user or group will not be added to the Owners field but all other<br />
processing will continue as normal.<br />
Table 182. owner element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Details for this element:<br />
All<br />
None<br />
[all users]<br />
[all authenticated portal users]<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
The common name of any valid <strong>Web</strong>Sphere Portal user<br />
or group<br />
None<br />
None<br />
None<br />
None<br />
Example:<br />
[all authenticated portal users]<br />
jsmith<br />
Profile Control Elements<br />
Taxonomies and category fields are populated using the RSS element. To populate the<br />
Keywords field, a keywords element is required.<br />
keywords<br />
The keywords element should contain a comma-delimited list of metadata tags that describe the content.<br />
The list will be stored as-is in the Keywords field of content items.<br />
Table 183. keywords element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
<strong>Content</strong><br />
None<br />
A comma-delimited list of keywords in plain text format.<br />
None<br />
None<br />
None<br />
None<br />
Example:<br />
software,testing<br />
The authoringTemplate element<br />
The authoringTemplate element is used to specify the authoring template that will be applied to the<br />
content item. The value of this element should be the name of an existing authoring template.<br />
Developing 743
authoringTemplate<br />
If the authoring template is located in a different library from the content item, you can specify the<br />
library name as well. If no library is specified, the <strong>Web</strong> <strong>Content</strong> Integrator will search the library that was<br />
specified in the element. If no element is present, the <strong>Web</strong> <strong>Content</strong><br />
Integrator will search the default library specified in the task configuration.<br />
Note: Once a content item has been created, it is not possible to change its authoring template. Therefore,<br />
when processing an update, if the authoringTemplate specified in the feed entry does not match the name<br />
of the authoring template that was originally used to create the content item the <strong>Web</strong> <strong>Content</strong> Integrator<br />
will generate an error message.<br />
Table 184. authoringTemplate element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
<strong>Content</strong><br />
None<br />
The name of an existing authoring template, or the name<br />
of an existing library and authoring template separated<br />
by a forward slash. For example:<br />
v News-AT<br />
v TmpltLib/News-AT<br />
None<br />
None<br />
None<br />
None<br />
Example:<br />
News<br />
TmpltLib/News<br />
Element control element<br />
The element control element is used to populate elements stored in components, site areas and content<br />
items.<br />
Element overview<br />
The <strong>Web</strong> <strong>Content</strong> Integrator uses the following business logic to process each component element in the<br />
feed entry:<br />
1. It checks whether the component site area or content item contains a field whose name matches the<br />
value in the feed element's name attribute. This is a case-sensitive comparison so the names must<br />
match exactly.<br />
2. If a matching field is found, it checks whether the data type matches what was specified in the feed<br />
element's sub-element.<br />
3. If both the name and data type match, the element in the site area or content item will be updated to<br />
match the data contained the feed element.<br />
4. If an element is found which matches the feed element's name, but not its data type, the <strong>Web</strong> <strong>Content</strong><br />
Integrator will remove the old field from the site area or content item and attempt to replace it with a<br />
new field that matches the data type specified in the feed.<br />
5. If no matching field can be found on the content, the <strong>Web</strong> <strong>Content</strong> Integrator will attempt to create a<br />
new element.<br />
744 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Note: When creating elements in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> using an authoring portlet, it is possible to<br />
specify a number of field validation criteria such as the maximum size of a text field or the allowable<br />
range of a date field. These are validated during the save operation. If the data in the field does not meet<br />
the validation criteria the entire save operation will fail, meaning that none of the changes in the feed<br />
entry will be applied. The <strong>Web</strong> <strong>Content</strong> Integrator does not have the ability to check that the data in the<br />
feed element is valid prior to attempting the save operation. Therefore, if you elect to implement<br />
validations on your authoring templates, it is important for the feed producer to insure that the content is<br />
valid during the generation of the feed.<br />
Text element<br />
Table 185. text element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
Site areas and content items<br />
None.<br />
A text component should contain a plain text value.<br />
name<br />
None<br />
type<br />
value<br />
None<br />
The value of this attribute should match the<br />
name of an existing text element in a site area or<br />
content item.<br />
The value of this sub-element must be "text".<br />
This value is not case sensitive.<br />
The value of this sub-element should be plain<br />
text.<br />
Example:<br />
<br />
text<br />
New Product Released<br />
<br />
HTML element<br />
Table 186. html element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Details for this element:<br />
HTML components, site areas and content items<br />
HTML components.<br />
The value of the value sub-element should be HTML<br />
which will be stored in the corresponding HTML<br />
element. The HTML can either be entity-encoded or<br />
contained within a CDATA element. Alternatively, the<br />
feed producer can provide a URL to an HTML file whose<br />
contents will be retrieved by the <strong>Web</strong> <strong>Content</strong> Integrator<br />
name<br />
None<br />
The value of this attribute should match the<br />
name of an existing HTML element in a site<br />
area or content item.<br />
Developing 745
Table 186. html element (continued)<br />
Element parameters:<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
type<br />
value<br />
source<br />
None<br />
The value of this sub-element must be "html".<br />
Used when adding HTML markup that is either<br />
entity-encoded or contained within a CDATA<br />
element.<br />
Used with a fully qualified URL to an HTML<br />
file. When the <strong>Web</strong> <strong>Content</strong> Integrator processes<br />
the feed it will retrieve the file and store its<br />
contents in the HTML element in the site area or<br />
content item.<br />
Examples:<br />
<br />
html<br />
<br />
<strong>Copyright 2006</strong><br />
<br />
<br />
<br />
html<br />
<br />
Copyright 2006]]><br />
<br />
<br />
<br />
html<br />
<br />
http://sourcecms.yourco.com/pages/footer.htm<br />
<br />
<br />
Rich text element<br />
Table 187. Rich text element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Details for this element:<br />
Site areas and content items<br />
None<br />
The value of the value sub-element should be HTML<br />
which will be stored in the corresponding rich text<br />
element. The HTML can either be entity-encoded or<br />
contained within a CDATA element.<br />
name<br />
None<br />
The value of this attribute should match the<br />
name of an existing rich text element in a site<br />
area or content item.<br />
746 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 187. Rich text element (continued)<br />
Element parameters:<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
type<br />
value<br />
None<br />
The value of this sub-element must be "rich<br />
text". These values are not case sensitive.<br />
The value of this sub-element should be HTML<br />
markup that is either entity-encoded or<br />
contained within a CDATA element.<br />
Examples:<br />
<br />
rich text<br />
<br />
<p>This is the content<p/p><br />
<br />
<br />
<br />
rich text<br />
<br />
This is the content]]><br />
<br />
<br />
File resource element<br />
Table 188. File resource element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Details for this element:<br />
File resource components, site areas and content items<br />
File resource components.<br />
The value should be a fully qualified URL that points to<br />
the binary file which is to be uploaded into file resource<br />
element.<br />
name<br />
None<br />
type<br />
source<br />
The value of this attribute should match the<br />
name of an existing file resource element in a<br />
site area or content item.<br />
The value of this sub-element must be "file".<br />
These values are not case sensitive.<br />
The value should be a fully qualified URL that<br />
points to the binary file which is to be uploaded<br />
into a file resource element.<br />
Note: If the URL contains non-ascii charactors,<br />
the non-ascii characters must be encoded. For<br />
example: http://server:port/wps/wcm/%E4<br />
%B8%AD%E6%96%87/%E7%BB%84%E4%BB<br />
%B6.pdf<br />
Developing 747
Table 188. File resource element (continued)<br />
Element parameters:<br />
Optional sub-elements<br />
Details for this element:<br />
fileName<br />
The value of this sub-element should be the file<br />
name and extension to be applied to the file<br />
attachment when added to the file resource<br />
element. If this sub-element is present in the<br />
feed entry then its value will be used as the file<br />
name of the attachment in <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> regardless of what the name of the file<br />
was on the source server. This is useful if the<br />
URL to the binary file does not include the file<br />
name as is the case with some content<br />
management systems. If the fileName<br />
sub-element is not present in the feed then the<br />
<strong>Web</strong> <strong>Content</strong> Integrator will attempt to<br />
determine the file name from the URL in the<br />
value sub-element by taking all of the characters<br />
following the last forward slash in the URL.<br />
Examples:<br />
<br />
file<br />
<br />
http://sourcecms.yourco.com/files/plan.doc<br />
<br />
<br />
<br />
file<br />
<br />
http://sourcecms.yourco.com/files/plan.doc<br />
<br />
MktgPlan.doc<br />
<br />
Image element<br />
Table 189. Image element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Details for this element:<br />
Image components, site areas and content items<br />
Image components.<br />
The value should be a fully qualified URL that points to<br />
the binary file which is to be uploaded into image<br />
element.<br />
name<br />
None<br />
The value of this attribute should match the<br />
name of an existing image element in a site area<br />
or content item.<br />
748 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 189. Image element (continued)<br />
Element parameters:<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
type<br />
source<br />
The value of this sub-element must be "image".<br />
These values are not case sensitive.<br />
The value should be a fully qualified URL that<br />
points to the binary file which is to be uploaded<br />
into an image element.<br />
Note: If the URL contains non-ascii charactors,<br />
the non-ascii characters must be encoded. For<br />
example: http://server:port/wps/wcm/%E4<br />
%B8%AD%E6%96%87/%E7%BB%84%E4%BB<br />
%B6.jpg<br />
fileName<br />
The value of this sub-element should be the file<br />
name and extension to be applied to the file<br />
attachment when added to the image element. If<br />
this sub-element is present in the feed entry<br />
then its value will be used as the file name of<br />
the attachment in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong><br />
regardless of what the name of the file was on<br />
the source server. This is useful if the URL to<br />
the binary file does not include the file name as<br />
is the case with some content management<br />
systems. If the fileName sub-element is not<br />
present in the feed then the <strong>Web</strong> <strong>Content</strong><br />
Integrator will attempt to determine the file<br />
name from the URL in the value sub-element by<br />
taking all of the characters following the last<br />
forward slash in the URL.<br />
Examples:<br />
<br />
image<br />
<br />
http://sourcecms.yourco.com/images/logo.gif<br />
<br />
<br />
<br />
image<br />
<br />
http://sourcecms.yourco.com/images/logo.gif<br />
<br />
yourco_logo.doc<br />
<br />
Date element<br />
Table 190. date element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Details for this element:<br />
Date and time components, site areas and content items<br />
Date and time components.<br />
A date or time value to be stored in a date and time<br />
element.<br />
Developing 749
Table 190. date element (continued)<br />
Element parameters:<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
name<br />
None<br />
type<br />
value<br />
format<br />
The value of this attribute should match the<br />
name of an existing date and time element in a<br />
site area or content item.<br />
The value of this sub-element must be "date".<br />
This value is not case sensitive.<br />
The value of this sub-element should be a date<br />
and time value in the RFC 822 format.<br />
This allows the feed producer to specify the<br />
format of the date or time. A value of "date" will<br />
cause the date and time element to be set to<br />
only display the date portion of the data.<br />
Likewise, a value of "time" will only display the<br />
time portion of the data. Any other value, or the<br />
absence of this sub-element, will result in the<br />
both portions of the data being displayed. The<br />
values for this sub-element are not case<br />
sensitive.<br />
Example:<br />
<br />
date<br />
<br />
Thu, 14 Apr 1966 15:15:00 EDT<br />
<br />
date<br />
<br />
Link element<br />
Table 191. link element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Details for this element:<br />
Link components, site areas and content items<br />
Link components.<br />
This component contains the information that is required<br />
to configure a link element. There are a number of<br />
optional sub-elements that can be used to set the various<br />
parameters of the Link field.<br />
name<br />
None<br />
The value of this attribute should match the<br />
name of an existing link element in a site area<br />
or content item.<br />
750 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 191. link element (continued)<br />
Element parameters:<br />
Required sub-elements<br />
Details for this element:<br />
type<br />
format<br />
value<br />
The value of this sub-element must be "link".<br />
This value is not case sensitive.<br />
v<br />
v<br />
v<br />
ExternalLink: creates a link to a URL external<br />
to your <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system.<br />
Managed<strong>Content</strong>: creates a link to another<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> item.<br />
ExistingLink: creates a link to a pre-existing<br />
link component<br />
The value of this sub-element depends on what<br />
was specified in the "format" sub-element:<br />
v ExternalLink: a URL.<br />
v<br />
v<br />
Managed<strong>Content</strong>: the GUID of an existing<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> item.<br />
ExistingLink: the GUID of an existing link<br />
component.<br />
Developing 751
Table 191. link element (continued)<br />
Element parameters:<br />
Optional sub-elements<br />
Details for this element:<br />
linkText<br />
This sub-element allows the feed producer to<br />
specify what will be rendered between the and portions of the anchor tag.<br />
Possible values include:<br />
v a plain text string<br />
v<br />
v<br />
a string of HTML markup that is either<br />
entity-encoded or enclosed in a CDATA tag<br />
the GUID of a feed entry that describes an<br />
image component<br />
A required type attribute indicates which of the<br />
above value types to use. It can be set to "text",<br />
"html", or "imageGuid".<br />
If the linkText sub-element is not included in the<br />
feed, the link text default to the value set in<br />
either "ExternalLink", "Managed<strong>Content</strong>" or<br />
"ExistingLink".<br />
linkDescription<br />
This sub-element provides a mechanism to<br />
specify a description for the link element. If this<br />
sub-element is not present, the description on<br />
the link element will default to the value of the<br />
description of the site area or content item.<br />
linkTarget<br />
The sub-element is used to set the target<br />
browser window where the link will be<br />
displayed when it is clicked. Allowable values<br />
are: "none", "_blank", "_top", "_self", "_parent",<br />
and "{NEW_WINDOW_NAME}". If this element<br />
is not present in the feed the link target will<br />
default to "none" meaning that the link will<br />
open in the same browser window as the page<br />
containing it.<br />
queryString<br />
If present, the value of this sub-element will be<br />
appended to the generated HREF of the link.<br />
This value should be encapsulated in a CDATA<br />
tag to prevent parsing problems.<br />
additionalAttributes<br />
The value of this sub-element will be inserted<br />
into the tag as additional HTML attributes.<br />
allowClear<br />
This sub-element controls whether the value in<br />
the link element can be deleted. It should be set<br />
to either "true" or "false". It defaults to "true" if<br />
this element is not present in the feed.<br />
752 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Simple Link to external URL for <strong>IBM</strong>.com<br />
<br />
link<br />
http://www.ibm.com<br />
ExternalLink<br />
<strong>IBM</strong><br />
<br />
Expanded link to external URL for <strong>IBM</strong>.com<br />
<br />
link<br />
http://www.ibm.com/search<br />
ExternalLink<br />
RSS Feed Format Resources<br />
Search for RSS Feed Format<br />
<br />
_blank<br />
class="extLink"<br />
<br />
Simple link to a file resource component<br />
<br />
link<br />
63000001<br />
Managed<strong>Content</strong><br />
290df293e20a<br />
true<br />
<br />
Simple Link to another content item<br />
<br />
link<br />
80220102<br />
Managed<strong>Content</strong><br />
Marketing Plan]]><br />
<br />
Number element<br />
Table 192. number element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
Number components, site areas and content items<br />
Number components.<br />
A numeric value to be stored in a number element.<br />
name<br />
None<br />
type<br />
value<br />
format<br />
The value of this attribute should match the<br />
name of an existing number element in a site<br />
area or content item.<br />
The value of this sub-element must be<br />
"number". This value is not case sensitive.<br />
A numeric value to be stored in a number<br />
element.<br />
This allows the feed producer to specify the<br />
format for the number element. For example, if<br />
a value of "integer" is specified, then only data<br />
in the format of whole numbers will be<br />
imported.<br />
Developing 753
Example:<br />
<br />
number<br />
34082<br />
integer<br />
<br />
Option selection element<br />
Table 193. option selection element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
Site areas and content items<br />
None<br />
This component contains a list of values that will be set<br />
as the selected options in an option selection element.<br />
name<br />
None<br />
type<br />
The value of this attribute should match the<br />
name of an existing option selection element in<br />
a site area or content item.<br />
The value of this sub-element must be "option".<br />
This value is not case sensitive.<br />
optionType<br />
This is used to define the type of option<br />
selection element.<br />
v<br />
v<br />
Specify user when referencing from a list of<br />
user defined options.<br />
Specify taxonomy when referencing options<br />
from an existing taxonomy.<br />
You can only specify one option type per option<br />
selection element. If no option type is defined,<br />
"user" will be used by default.<br />
selectedCategory<br />
This is used with the option type of "taxonomy"<br />
and is used to specify the path to a category<br />
you want to use in the option selection element.<br />
You can use as many selectedCategory elements<br />
as you require.<br />
If the taxonomy exists in a different library from<br />
the option selection element, you can also<br />
specify the library name. For example:<br />
<br />
Days/Monday<br />
You must specify the name of each category and<br />
taxonomy you want to reference. If they do not<br />
exist, they will be created when the feed is<br />
processed.<br />
selectedOption<br />
This is used with the option type of "user" and<br />
is used to specify a list of user defined options.<br />
You can use as many selectedOption elements<br />
as you require.<br />
754 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Example 1:<br />
Selecting a single category where the category is in the same library as the item. In this example<br />
"Days" is the name of a taxonomy and "Monday" is the name of a category.<br />
<br />
option<br />
taxonomy<br />
Days/Monday<br />
< /ibmwcm:element><br />
Example 2:<br />
Selecting multiple categories where the categories are in the same library as the item.<br />
<br />
option<br />
taxonomy<br />
Days/Monday<br />
Days/Tuesday<br />
< ;/ibmwcm:element><br />
Example 3:<br />
Selecting a single category where the category is in a different library to the item.<br />
<br />
option<br />
taxonomy<br />
Days/Monday<br />
<br />
Example 4:<br />
Selecting a user defined option. In this example "False" is an option defined by a user on the<br />
Authoring Template for an item.<br />
<br />
option<br />
user<br />
False<br />
<br />
Component reference element<br />
Table 194. component reference element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
Site areas and content items<br />
None<br />
This component contains the GUID of a component.<br />
name<br />
None<br />
type<br />
value<br />
None<br />
The value of this attribute should match the<br />
name of an existing component reference<br />
element in a site area or content item.<br />
The value of this sub-element must be<br />
"reference". This value is not case sensitive.<br />
This component contains the GUID of a<br />
component.<br />
Example:<br />
Developing 755
reference<br />
29bc2daf3289<br />
<br />
User selection element<br />
Table 195. user selection element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
User selection components, site areas and content items<br />
User selection components.<br />
A list of names of users to be selected in a user selection<br />
element.<br />
name<br />
None<br />
type<br />
value<br />
None<br />
The value of this attribute should match the<br />
name of an existing user selection element in a<br />
site area or content item.<br />
The value of this sub-element must be<br />
"userSelect". This value is not case sensitive.<br />
The value of this sub-element should be a<br />
comma-separated list of user names. When<br />
processed the <strong>Web</strong> <strong>Content</strong> Integrator will<br />
attempt to resolve each name to a valid portal<br />
user. If a name cannot be resolved it will be<br />
skipped.<br />
Example:<br />
<br />
userSelect<br />
wpsadmin,John Smith<br />
<br />
Style sheet element<br />
Table 196. style sheet element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Details for this element:<br />
Style sheet components<br />
Style sheet components<br />
A URL that points to a CSS file which will be uploaded<br />
into a style sheet component.<br />
None<br />
None<br />
type<br />
source<br />
The value of this sub-element must be<br />
"styleSheet". This value is not case sensitive.<br />
A URL that points to a CSS file which will be<br />
uploaded into the style sheet component.<br />
756 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 196. style sheet element (continued)<br />
Element parameters:<br />
Optional sub-elements<br />
Details for this element:<br />
format<br />
This sub-element is used to specify the type of<br />
the style sheet. Valid options are: "preferred",<br />
"alternate", and "persistent". If this sub-element<br />
is not present in the feed, or if any value other<br />
than the ones listed above is specified, the type<br />
will default to "preferred".<br />
mediaType<br />
This sub-element specifies the media type of the<br />
style sheet. Valid values are: "all", "aural",<br />
"braille", "handheld", "print", "projection",<br />
"screen", "tty", "tv", and "unspecified". If the<br />
mediaType sub-element is not present in the<br />
feed, or if any value other than the ones listed<br />
above is specified, the media type will default to<br />
"unspecified".<br />
cssTitle<br />
The value of this sub-element should be a string<br />
which will be set as the value of the title<br />
attribute when the link to the CSS file is<br />
rendered.<br />
Example:<br />
<br />
styleSheet<br />
http://www.yourco.com/styles/news.css<br />
alternate<br />
print<br />
<br />
Workflow control elements<br />
Workflow elements allow you to specify workflow related parameters when creating content items that<br />
use a workflow.<br />
Workflow element<br />
This element specifies the workflow name and stage in which a content item should be created. The<br />
value in the name attribute must match that of an existing workflow.<br />
If the workflow is located in a different library from the content item, you can specify the library name as<br />
well. If no library is specified, the <strong>Web</strong> <strong>Content</strong> Integrator will search the library that was specified in the<br />
element. If no element is present, the <strong>Web</strong> <strong>Content</strong> Integrator will<br />
search the default library specified in the task configuration.<br />
Table 197. workflow element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Details for this element:<br />
<strong>Content</strong> items<br />
None<br />
Workflow name and related workflow stage.<br />
Developing 757
Table 197. workflow element (continued)<br />
Element parameters:<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
The name of an existing workflow, or the library and<br />
name of an existing library and workflow separated by a<br />
forward slash. For example:<br />
v 3-Stage-Workflow<br />
v Library1/3-Stage-Workflow<br />
None<br />
workflowStage<br />
The value of this sub-element should be the<br />
name of a workflow stage that is included in the<br />
named workflow.<br />
None<br />
Examples:<br />
<br />
Live<br />
<br />
<br />
Live<br />
<br />
Date elements<br />
This element is used to specify an RFC 822 formatted date which will be used as the date of one of the<br />
date fields in the content item.<br />
Table 198. Date elements<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Details for this element:<br />
<strong>Content</strong> items<br />
None<br />
publishDate<br />
Used to set the published date of an item. If this<br />
element is not present in the , the value<br />
in the element will be used to set<br />
the publish date of the content item. This<br />
requires a publish action to have been included<br />
in a workflow stage in the specified workflow.<br />
expirationDate<br />
Used to set the expiry date of an item. This<br />
requires an expire action to have been included<br />
in a workflow stage in the specified workflow.<br />
genDateOne and genDateTwo<br />
Used to populate the general date fields of an<br />
item.<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
An RFC 822 formatted date.<br />
None<br />
None<br />
758 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 198. Date elements (continued)<br />
Element parameters:<br />
Optional sub-elements<br />
Details for this element:<br />
None<br />
Examples:<br />
<br />
Fri, 31 Oct 2008 15:32:00 EST<br />
<br />
<br />
Sun, 1 Nov 2009 12:00:00 EST<br />
<br />
<br />
Wed, 1 Nov 2006 09:30:00 EST<br />
<br />
<br />
Thu, 2 Nov 2006 09:30:00 EST<br />
<br />
additionalViewer element<br />
This element allows the additional viewers field to be populated via the feed. It should contain the<br />
common name of a single user or group that is to be added to the field. To specify multiple users and<br />
groups, use multiple additionalViewer elements.<br />
Table 199. additionalViewer element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Details for this element:<br />
<strong>Content</strong> items<br />
None<br />
Allowable Values v [all users]<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
v [all authenticated portal users]<br />
v The common name of any valid portal user or group.<br />
None<br />
None<br />
None<br />
None<br />
Examples:<br />
[all users]<br />
Sales<br />
jsmith<br />
Security control elements<br />
The security control element is used to set access controls on the item being created.<br />
Developing 759
access element<br />
The access element provides a mechanism to set the access controls on <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items via<br />
the feed. A feed entry can contain multiple access sub-elements. Each access element should contain the<br />
common name of a single, valid, portal user or group. The users and groups specified in the access<br />
element are added to the system defined security fields on the <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items.<br />
Table 200. access element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Details for this element:<br />
<strong>Content</strong><br />
None<br />
Allowable Values v [all users]<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
v<br />
v<br />
[all authenticated portal users]<br />
The common name of any valid portal user or group.<br />
None<br />
type<br />
This attribute allows the feed producer to<br />
specify the exact access level that should be<br />
granted to the user or group. The allowable<br />
values for the type attribute correspond to the<br />
access levels available in <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>:<br />
"user", "contributor", "editor" and "manager". If<br />
the type attribute is not specified, "user" access<br />
will be applied.<br />
inheritance<br />
You can specify whether inheritance will be<br />
enabled or disabled by adding either<br />
inheritance="enabled" or<br />
inheritance="disabled". If not specified, the<br />
default or current inheritance setting for an item<br />
will be used.<br />
None<br />
Examples:<br />
<br />
[all users]<br />
<br />
<br />
Sales<br />
<br />
Association control element<br />
The association element is used to create an association between two or more separate content items. It is<br />
used to support some content item relationships that are not native to <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> but which<br />
are found in some other <strong>Web</strong> content management systems. One example would be a technical journal<br />
article which needs to include some data from one or more author biography content items.<br />
An association element is tied to a text element. The value of the element in the feed is a<br />
comma-delimited list of GUIDs which represent the other external content items that are to be associated<br />
with the text element. When the <strong>Web</strong> <strong>Content</strong> Integrator processes the feed, it will attempt to resolve the<br />
760 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
GUIDs with the corresponding <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items. A custom JSP component is then used in the<br />
presentation template to locate the linked content items at render time and display them in the context of<br />
the container content item.<br />
Since this type of linkage is not a natural feature of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> it relies on a custom JSP<br />
component for its implementation and there are some restrictions related to using an association element:<br />
v As <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> DocumentIds are used to create the association to the other content items,<br />
the format of the DocumentId is not guaranteed to be constant from version to version so there is some<br />
risk that the linkages could break following a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> upgrade or migration<br />
v The referential integrity of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> does not apply to association element links.<br />
Table 201. association element<br />
Element parameters:<br />
Applies to item types<br />
Required for item types<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Details for this element:<br />
<strong>Content</strong><br />
None<br />
A list of GUIDs that map to other feed entries which are<br />
linked to associated content items.<br />
name<br />
None<br />
type<br />
The value of this attribute should match the<br />
name of an existing text element.<br />
The value of this sub-element must be<br />
"association". It is not case sensitive.<br />
Optional sub-elements<br />
value<br />
None<br />
The value of this sub-element should be a<br />
comma-delimited list of GUIDs that point to the<br />
feed entries which are linked to associated<br />
content items.<br />
Example:<br />
<br />
association<br />
234ed298cf,7023bc23f1e<br />
<br />
Handling embedded links<br />
From time to time, the content being retrieved by the <strong>Web</strong> <strong>Content</strong> Integrator will contain embedded<br />
links to images, files and other content within the feed. You can use the link tag in your feed to represent<br />
embedded links so that they are converted into links to other <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items that are<br />
created when the feed is processed.<br />
There are three types of embedded links that can be processed: images, files, and content. In all cases, the<br />
link tag must include a GUID that points to another item in the feed which describes the target item.<br />
<strong>Content</strong> links<br />
In this example, the following feed content contains a link to another <strong>Web</strong> page:<br />
<br />
Press Release<br />
<br />
Developing 761
To ensure that the embedded link is converted into a link to a related content item being created when<br />
the feed is processed, you add the following code to your feed. It contains a GUID to the HTML file also<br />
being processed by the <strong>Web</strong> <strong>Content</strong> Integrator:<br />
<br />
Press Release<br />
This is some text.<br />
]]><br />
When the content of the feed is saved within <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>, a link to a content item is added to<br />
the content.<br />
<br />
Press Release<br />
This is some text.<br />
<br />
Example feed:<br />
<br />
<br />
<br />
Sample Feed<br />
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
News Item Two<br />
http://www.ibm.com/news/two.htm<br />
<br />
This is a summary of the second news article<br />
<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
80000001<br />
add<br />
content<br />
News<br />
/Portal/News<br />
<br />
Live<br />
<br />
<br />
rich text<br />
<br />
<br />
some content link<br />
This is some text.<br />
]]><br />
<br />
<br />
<br />
<br />
Announcment1<br />
http://cmsserver.ibm.com/news/one.htm<br />
This is an announcment press release.<br />
Tue, 31 Oct 2006 10:11:00 EST<br />
80000002<br />
add<br />
<strong>Content</strong><br />
Press Release<br />
/Portal/Press<br />
<br />
Live<br />
<br />
<br />
rich text<br />
This is some more text.<br />
762 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<br />
<br />
<br />
File links<br />
In this example, the following feed content contains a link to a PDF file:<br />
<br />
Product Spec<br />
This is some text.<br />
<br />
To ensure that the embedded link is converted into a link to a related file resource component being<br />
created when the feed is processed, you add the following code to your feed. It contains a GUID to the<br />
PDF file also being processed by the <strong>Web</strong> <strong>Content</strong> Integrator:<br />
<br />
Product Spec<br />
This is some text.<br />
]]><br />
When the content of the feed is saved within <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>, a component tag is added to the<br />
content.<br />
<br />
Product Spec<br />
This is some text.<br />
<br />
Example feed:<br />
<br />
<br />
<br />
Sample Feed<br />
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
News Item Two<br />
http://www.ibm.com/news/two.htm<br />
<br />
This is a summary of the second news article<br />
<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
80000001<br />
add<br />
<strong>Content</strong><br />
News<br />
/Portal/News<br />
<br />
Live<br />
<br />
<br />
rich text<br />
<br />
<br />
some file link<br />
This is some text.<br />
]]><br />
<br />
<br />
<br />
Developing 763
Product Spec<br />
http://cmsserver.ibm.com/files/spec.pdf<br />
This is the product spec document.<br />
Tue, 31 Oct 2006 10:11:00 EST<br />
50000002<br />
add<br />
component<br />
<br />
file<br />
<br />
http://cmsserver.ibm.com/files/spec.pdf<br />
<br />
<br />
<br />
<br />
<br />
Image links<br />
In this example, the following feed content contains a link to an image file:<br />
<br />
<br />
This is some text.<br />
<br />
To ensure that the embedded image link is converted into a link to a related image component being<br />
created when the feed is processed, you add the following code to your feed. It contains a GUID to the<br />
image file also being processed by the <strong>Web</strong> <strong>Content</strong> Integrator:<br />
<br />
<br />
This is some text.<br />
]]><br />
When the content of the feed is saved within <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>, a component tag is added to the<br />
content.<br />
<br />
<br />
This is some text.<br />
<br />
Example feed:<br />
<br />
<br />
<br />
Sample Feed<br />
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
News Item Two<br />
http://www.ibm.com/news/two.htm<br />
<br />
This is a summary of the second news article<br />
<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
80000001<br />
add<br />
<strong>Content</strong><br />
News<br />
/Portal/News<br />
<br />
764 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Live<br />
<br />
<br />
rich text<br />
<br />
<br />
<br />
This is some text.<br />
]]><br />
<br />
<br />
<br />
<br />
My Logo<br />
http://cmsserver.ibm.com/images/mylogo.gif<br />
This is our logo image.<br />
Tue, 31 Oct 2006 10:21:00 EST<br />
50000001<br />
add<br />
component<br />
<br />
image<br />
<br />
http://cmsserver.ibm.com/images/mylogo.gif<br />
<br />
<br />
<br />
<br />
<br />
Automatic image tag processing<br />
The <strong>Web</strong> <strong>Content</strong> Integrator has an optional feature which can be used in place of the tag. If enabled, the <strong>Web</strong> <strong>Content</strong> Integrator will automatically parse the values of any html or rich text<br />
elements and search for HTML tags embedded within the content. If any are found, the <strong>Web</strong><br />
<strong>Content</strong> Integrator will attempt to retrieve the referenced image file, create an image component, and<br />
then re-write the reference so that it points to the new image component.<br />
This feature can be enabled by editing the disable.img.proc setting in the<br />
WCMConsumerPlugin.properties file and setting it to "false". Automatic image tag processing is disabled<br />
by default.<br />
If enabled:<br />
v only the content being imported into HTML elements and components or Rich Text elements and<br />
components will be processed.<br />
v all image references matching the pattern “
Note: If non-ascii data is used in a feed, then encoding="UTF-8" must be specified in the feed: <br />
Site area feed<br />
<br />
<br />
<br />
Sample Feed<br />
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
News<br />
http://www.ibm.com/news/index.htm<br />
This is a Site Area.<br />
20000001<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
jsample@ibm.com<br />
add<br />
siteArea<br />
/SiteAreaName<br />
jsample<br />
80000002<br />
<br />
20000011<br />
80000002<br />
<br />
<br />
[all users]<br />
<br />
<br />
<br />
Taxonomy feed<br />
<br />
<br />
<br />
Sample Feed<br />
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
Audience<br />
http://www.ibm.com/index.htm<br />
This is the top-level Taxonomy.<br />
30000001<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
jsample@ibm.com<br />
add<br />
category<br />
/<br />
jsample<br />
[all users]<br />
<br />
<br />
<br />
Category feed<br />
<br />
<br />
<br />
Sample Feed<br />
766 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
Employees<br />
http://www.ibm.com/index.htm<br />
This is a second-level Category.<br />
40000001<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
jsample@ibm.com<br />
add<br />
category<br />
/Audience<br />
<br />
30000001<br />
<br />
jsample<br />
<br />
40000011<br />
<br />
[all users]<br />
<br />
<br />
<br />
Component feed<br />
<br />
<br />
<br />
Sample Feed<br />
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
<strong>IBM</strong> Footer<br />
http://www.ibm.com/files/footer.htm<br />
This is a shared chunk of HTML.<br />
53000001<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
jsample@ibm.com<br />
add<br />
component<br />
jsample<br />
<br />
html<br />
<br />
Copyright 2006 International Business Machines, Inc.<<br />
<br />
<br />
[all users]<br />
<br />
<br />
<br />
<strong>Content</strong> feed<br />
<br />
<br />
<br />
Sample Feed<br />
http://www.ibm.com/feeds/sample.rss<br />
An example RSS Feed<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
<br />
Developing 767
Release 2.0 Announcement<br />
http://www.ibm.com/news/Rel2Announce.htm<br />
This is a content item.<br />
80000001<br />
Tue, 31 Oct 2006 10:31:00 EST<br />
jsample@ibm.com<br />
/Audience/Employees<br />
/Audience/Customers<br />
add<br />
content<br />
News<br />
/SiteAreaName/News<br />
<br />
20000001<br />
<br />
jsample<br />
software,content management<br />
<br />
Live<br />
<br />
<br />
Wed, 1 Nov 2006 06:00:00 EST<br />
<br />
<br />
Sun, 31 Dec 2006 23:59:00 EST<br />
<br />
Fri, 15 Dec 2006 09:00:00 EST<br />
All Dealers<br />
<br />
text<br />
Release 2.0 Ships Today<br />
<br />
<br />
text<br />
<br />
The long anticipated Release 2.0 of our flagship product became generally available earlier today.<br />
<br />
<br />
<br />
rich text<br />
<br />
Suspendisse posuere commodo turpis.<br />
Vivamus nunc nulla, volutpat in, luctus a, facilisis eu, mi.]]><br />
<br />
<br />
<br />
image<br />
<br />
http://cmsserver.ibm.com/images/rel20box.gif<br />
<br />
<br />
[all users]<br />
<br />
<br />
<br />
RSS Namespace Extension for the Feed Service<br />
The RSS namespace extension is used to exchange control information between the feed producer and<br />
consumer applications.<br />
To implement this namespace, specify the element as follows:<br />
<br />
768 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
The input feeds only need to include this namespace in certain scenarios where control information is<br />
going to be passed in the feed itself rather than in the HTTP headers.<br />
The Handshake Protocol<br />
In many <strong>Web</strong> <strong>Content</strong> Integrator implementations the input content feeds are produced by an application<br />
which generates them dynamically in response to requests from the feed consumer application. In those<br />
cases it is useful for the consumer to be able to indicate to the producer application which versions of a<br />
feed the Consumer has already seen so that the producer can make some intelligent decisions about what<br />
to include in the next feed.<br />
The handshake protocol consists of the exchange of two feed attributes: a Last Modified Date, and an<br />
arbitrary Entity Tag. The values of both of these attributes are managed exclusively by the producer. The<br />
consumer simply receives the values from the producer, stores them, and passes them back unchanged on<br />
the next request. These attributes can be passed in one of two ways:<br />
1. As HTTP header fields:<br />
v Requests from the consumer contain:<br />
If-Modified-Since : {last-modified_value}<br />
If-None-Match: {etag_value}<br />
v Responses from the producer contain:<br />
ETag: {etag_value}<br />
Last-Modified: {last-modified_value}<br />
2. As elements in the feed and query string parameters:<br />
v Requests from the consumer are in the form:<br />
http://cmsserver.example.org/ProducerAppetag={etag_value}&lastMod={last-modified_value}<br />
v Feeds sent back from the producer contain the following channel-level elements:<br />
{last-modified_value}<br />
{etag_value}<br />
How the handshake works<br />
1. The consumer makes its first request to the producer. This request does not contain any special header<br />
fields.<br />
2. The producer receives the request, and since there were no special headers, it responds with a feed<br />
that contains items which represent all transactions that have occurred up to that point. Before<br />
sending the response it sets the Last-Modified header to the current time and the ETag header to a<br />
value that enables the producer identify this specific instance of the feed.<br />
Last-Modified: Thu, 7 Sep 2006 12:00:00 GMT<br />
ETag: ABC0011<br />
3. The consumer receives the response, processes the feed, and stores the Last-Modified and ETag values<br />
only if the feed was processed successfully.<br />
4. The next time the consumer is triggered, it again makes a request to the producer for the transaction<br />
feed. This time it sets the If-Modified-Since header to the Last-Modified date it received on the last<br />
request and the If-None-Match field to the value of the ETag it received on the last request.<br />
If-Modified-Since: Thu, 7 Sep 2006 12:00:00 GMT<br />
If-None-Match: ABC0011<br />
5. The producer receives the request, and checks the values of the header fields. It then uses its own<br />
internal logic to generate a new feed which only contains changes that occurred since the last feed it<br />
sent to this consumer. It sends back a feed with the following header values:<br />
Last-Modified: Thu, 7 Sep 2006 13:00:00 GMT<br />
ETag: ABC0032<br />
6. The consumer receives the response, processes the feed, and updates its stored values for the<br />
Last-Modified date and ETag.<br />
Developing 769
Ideally, if no changes have occurred since the last time the consumer requested the feed, the producer<br />
should respond with an HTTP 304 (Not Modified) response code. This will signal the consumer that there<br />
are no changes and thus that it does not need to attemp to parse the feed and do the subsequent<br />
processing. However, if the producer is unable to implement this feature it won't affect any of the other<br />
processing.<br />
The consumer will always send a request containing the Etag label of the last transaction feed it<br />
successfully received. In this case the producer application will be responsible for re-sending any entries<br />
that might have been missed due to a communication failure between the servers.<br />
Results Feeds<br />
When feed processing is initiated via a call to the feed service servlet, the <strong>Web</strong> <strong>Content</strong> Integrator will<br />
respond with an output feed. The first entry in this feed will contain status information for the feed as a<br />
whole. Each of the subsequent entries in the output feed will correspond to an item that was in the input<br />
feed. These latter entries will contain status information about the results of processing each item. Feed<br />
producers could use this information to attempt to automatically recover from certain types of errors.<br />
Each entry in the output feed will have the following general format:<br />
<br />
Results for: [INPUT_TITLE]<br />
[INPUT_LINK]<br />
[CREATION_TIME_OF_OUTPUT_FEED_ENTRY]<br />
[INPUT_GUID]<br />
[ OK | WARN | ERROR | FAIL ]<br />
<br />
[MESSAGE_TEXT]<br />
[MESSAGE_TEXT]<br />
[WCM_DOCUMENT_ID]<br />
[LIST_OF_PROGRESS_MESSAGES]<br />
<br />
Channel-level Elements<br />
The following element should be a direct child of the feed's element since it applies to the<br />
feed as a whole rather than to an individual item in the feed.<br />
etag<br />
Some producer applications are not able to manipulate the HTTP headers to set the handshake data. In<br />
order to support those applications, there is an alternative method which entails passing the same<br />
information directly in the feed using the RSS element as well as a custom namespace<br />
element, .<br />
Table 202. etag element<br />
Element parameters:<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
A string value that represents some meaningful label for<br />
the specific instance of the feed.<br />
None<br />
None<br />
None<br />
None<br />
Example:<br />
ABC0012<br />
770 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Item-level Elements<br />
The following elements are applied at the level since they contain information that is specific to<br />
each individual feed entry. These elements are only used in the output feed. They have no meaning in<br />
the context of an input feed.<br />
resultCode<br />
Table 203. resultCode element<br />
Element parameters:<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
This element will have one of the following values<br />
depending on what happened when the input feed entry<br />
was processed:<br />
OK<br />
WARN<br />
ERROR<br />
FAIL<br />
None<br />
None<br />
None<br />
None<br />
The entry was processed completely with no<br />
warnings or errors.<br />
The entry was processed completely but one or<br />
more warnings were logged.<br />
One or more error messages were logged. The<br />
entry may not have been saved in <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong>.<br />
The content item could not be saved or<br />
updated.<br />
Example:<br />
OK<br />
WARN<br />
resultMsg<br />
Table 204. resultMsg element<br />
Element parameters:<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
Each instance of this element will contain the details of a<br />
warning or error message.<br />
level<br />
code<br />
None<br />
None<br />
None<br />
The value of this attribute indicates the severity<br />
of the message. Allowable values are: "WARN"<br />
and "ERROR".<br />
This attribute should hold the error code that is<br />
associated with the message.<br />
Examples:<br />
Developing 771
Default <strong>Content</strong> GUID does not point to a content item. Default content set to null.<br />
<br />
<br />
A WCMException was thrown when attempting to move the content.<br />
<br />
documentId<br />
Table 205. documentId element<br />
Element parameters:<br />
Allowable Values<br />
Required Attributes<br />
Optional Attributes<br />
Required sub-elements<br />
Optional sub-elements<br />
Details for this element:<br />
This element contains the ID that was generated by <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong>.<br />
None<br />
None<br />
None<br />
None<br />
Example:<br />
<br />
com.ibm.workplace.wcm.api.WCM_<strong>Content</strong>/Connections Announcement/f6f60a00498c0d759ee9ffe695695374/PUBLISHED<br />
<br />
Using <strong>Web</strong>DAV with <strong>Web</strong> content<br />
With <strong>Web</strong>DAV for <strong>IBM</strong> <strong>Web</strong>Sphere Portal, you can use standard operating system tools to create, modify,<br />
and delete <strong>Web</strong> content rather than the standard authoring portlet.<br />
Before you can use <strong>Web</strong>DAV with <strong>Web</strong> content, you will need to set up a <strong>Web</strong>DAV client. After your<br />
client is set up, you can access the <strong>Web</strong> content libraries with <strong>Web</strong>DAV using the following URL:<br />
http://server:port/portal_context_root/mycontenthandler/dav/content/libraries/<br />
For example:<br />
http://www.example.com:10039/wps/mycontenthandler/dav/content/libraries/<br />
By leveraging tools like file system explorers, <strong>Web</strong>DAV enables you to work with your <strong>Web</strong> content items<br />
through familiar, everyday actions. Here are a few examples:<br />
v You can create components or presentation templates simply by dragging a file into a corresponding<br />
folder.<br />
v You can perform actions on several items at once. For example, you can create five images at the same<br />
time by dragging five image files into the image component folder. This creates five separate image<br />
components, and for each image component the file name is used for the component's name and title.<br />
v Modifying items is also straightforward through a <strong>Web</strong>DAV client. For example, you can open a<br />
presentation template using your preferred HTML editor, make changes to it, and then save the<br />
changes. The <strong>Web</strong>DAV client takes care of accessing the <strong>Web</strong> content library, downloading the<br />
template, and then uploading the changes.<br />
In addition to modifying the actual content of an item, you can also modify any item's metadata or access<br />
control settings by modifying XML files that define the item's metadata and access control characteristics.<br />
You can also drag an existing XML file into the appropriate folder, enabling you to easily set the same<br />
data for different items.<br />
772 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
You can create, modify, or delete the following items: libraries, taxonomies, categories, site areas, folders,<br />
components, and presentation templates.<br />
Note: Be aware that the following features are not supported when using <strong>Web</strong>DAV with <strong>Web</strong> content:<br />
v <strong>Content</strong> items, with the exception of managing metadata and access control<br />
v Authoring templates, with the exception of managing metadata and access control<br />
v Nested items within site areas<br />
v Server-side copy and move<br />
v Unauthenticated users<br />
v Exporting of <strong>Web</strong> content libraries with <strong>Web</strong>DAV to be imported into another <strong>Web</strong> content server<br />
When using <strong>Web</strong>DAV with <strong>Web</strong> content, be aware of the following considerations.<br />
Locked item support<br />
Locking or unlocking an item through <strong>Web</strong>DAV will lock or unlock the item in <strong>Web</strong> <strong>Content</strong><br />
<strong>Manager</strong> and the JCR database. Because some items are represented by multiple files and folders,<br />
locking or unlocking one of these files causes locking or unlocking of the other associated files at<br />
the same time. If you lock an item, folders and files related to the content of the item, its<br />
metadata, and its access control settings are also locked.<br />
Workflow support<br />
There is no representation of a workflow itself in the <strong>Web</strong>DAV tree, but if a file is part of a<br />
workflow and the workflow indicates that the file is in a state that allows users to modify it,<br />
<strong>Web</strong>DAV will allow you to modify the file as well.<br />
File names and file type suffixes<br />
Files representing data items are always named exactly like the corresponding content item. For<br />
example if you have an image component named myImage, the corresponding image file is also<br />
named myImage, without any suffix indicating the file type, such as .gif or .jpg. This can<br />
sometimes cause a problem when opening the file through <strong>Web</strong>DAV because the appropriate<br />
application for editing the file cannot be chosen automatically. To account for this, you can either<br />
rename the component itself to include the file type (for example, myImage.gif), or you can<br />
manually start the editing application and open the file from within the client.<br />
Missing items<br />
If an item no longer displays or can no longer be modified, this could be due to a changed state<br />
for the item in the <strong>Web</strong> content server where the item is stored. For example creating or<br />
modifying an item on the server could lead to a changed state that prevents you from accessing<br />
this item with <strong>Web</strong>DAV, depending on how workflow is set up. Expiration is another reason an<br />
item's state might change and so affect whether you can access the item with <strong>Web</strong>DAV.<br />
Configuring a HTTP server front end<br />
When you use an HTTP server front end to work with <strong>Web</strong>DAV, you need to set Accept content<br />
for all requests to true for the <strong>Web</strong> server plugin in the <strong>Web</strong>Sphere Application Server<br />
administrative console under <strong>Web</strong> servers > webserver1 > Plug-in properties > Request and<br />
response.<br />
<strong>Web</strong> content items in the <strong>Web</strong>DAV tree<br />
The <strong>Web</strong>DAV tree containing your <strong>Web</strong> content items begins at the <strong>Web</strong>DAV root /libraries/, which<br />
displays all libraries to which you have access. All <strong>Web</strong> content items within the libraries are organized<br />
with folders and files.<br />
Items that do not pertain to content, such as site areas or categories, are represented as folders that only<br />
contain the item's metadata folder and any child items like other site areas or categories. No data files are<br />
present.<br />
Developing 773
sites<br />
- wcm.siteArea.siteArea1<br />
- meta-data<br />
- wcm.siteArea.siteArea1.1<br />
- meta-data<br />
- wcm.siteArea.siteArea1.1.1<br />
- meta-data<br />
- wcm.siteArea.siteArea1.1.2<br />
- meta-data<br />
- wcm.siteArea.siteArea2<br />
- meta-data<br />
Data-oriented items like image components or presentation templates are represented as files so you can<br />
manipulate them with drag and drop operations. The corresponding metadata for the item is managed<br />
the same way as for the non-data items but in separate subfolders within the metadata folder.<br />
wcm.comps.image<br />
image1.jpg<br />
image2.jpg<br />
- meta-data<br />
- wcm.comp.image1.jpg<br />
- wcm.comp.image2.jpg<br />
In addition to folders that represent actual <strong>Web</strong> content items, there are folders in the <strong>Web</strong>DAV tree to<br />
structure the data or to allow for better scalability. For each library there are folders for components,<br />
presentation templates, sites, and taxonomies.<br />
libraries<br />
- wcm.library.my_library<br />
- authoringTemplates<br />
- components<br />
- presentationTemplates<br />
- sites<br />
- taxonomies<br />
- wcm.library.contentlibrary<br />
- components<br />
- presentationTemplates<br />
- sites<br />
- taxonomies<br />
Within the components folder there are subfolders for the component types for better scalability and<br />
management of the different types of components..<br />
libraries<br />
- wcm.library.my_library<br />
- components<br />
- wcm.comps.authoring.tools<br />
- wcm.comps.component.references<br />
- wcm.comps.data.and.time<br />
- wcm.comps.federated.content<br />
- wcm.comps.file<br />
- wcm.comps.html<br />
- wcm.comps.image<br />
- wcm.comps.jsp<br />
- wcm.comps.link<br />
- wcm.comps.menu<br />
- wcm.comps.navigator<br />
- wcm.comps.number<br />
- wcm.comps.page.navigation<br />
- wcm.comps.personalization<br />
- wcm.comps.richt.text<br />
- wcm.comps.search<br />
- wcm.comps.short.text<br />
- wcm.comps.style.sheet<br />
774 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
- wcm.comps.taxonomy<br />
- wcm.comps.text<br />
- wcm.comps.user.name<br />
- wcm.comps.user.selection<br />
To organize your authoring templates, presentation templates, and components, you can create custom<br />
<strong>Web</strong> content folders. These <strong>Web</strong> content folders are represented as folders in <strong>Web</strong>DAV and contain a set<br />
of component types structured in the same way as the root components folder. Here an example of a<br />
component folder structure:<br />
- components<br />
- CustomComponentFolder1<br />
- wcm.comps.authoring.tools<br />
- wcm.comps.component.references<br />
- wcm.comps.data.and.time<br />
- wcm.comps.federated.content<br />
- wcm.comps.file<br />
.<br />
.<br />
.<br />
- wcm.comps.user.selection<br />
- CustomComponentFolder2<br />
- wcm.comps.authoring.tools<br />
- wcm.comps.component.references<br />
- wcm.comps.data.and.time<br />
- wcm.comps.federated.content<br />
- wcm.comps.file<br />
.<br />
.<br />
.<br />
- wcm.comps.user.selection<br />
- wcm.comps.authoring.tools<br />
- wcm.comps.component.references<br />
- wcm.comps.data.and.time<br />
- wcm.comps.federated.content<br />
- wcm.comps.file<br />
.<br />
.<br />
.<br />
- wcm.comps.user.selection<br />
Metadata and access control for <strong>Web</strong> content items in <strong>Web</strong>DAV<br />
<strong>Web</strong>DAV uses XML files to represent metadata and access control information for a <strong>Web</strong> content item.<br />
You can make changes to an item's metadata and access control settings by modifying these files, and<br />
you can specify settings for multiple files by copying the XML files to their appropriate locations in the<br />
<strong>Web</strong>DAV tree.<br />
Metadata<br />
An item's metadata is represented by the meta-data.xml file, which describes identification information<br />
for the item, including the name and title for the item and the list of authors and owners associated with<br />
the item.<br />
Here is a sample meta-data.xml file:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Developing 775
<br />
<br />
<br />
<br />
<br />
Access control<br />
An item's access control information is represented by the following files:<br />
v access-control-system.xml: Contains access control settings for the system specified by the<br />
administrator.<br />
v access-control-user.xml: Contains access control settings defined by the user.<br />
In addition to these item-specific files, the access-control.xml file is provided for folders that represent<br />
resource types, like the components folder, and contains access control settings for the resource type.<br />
Here is a sample access-control.xml file for resource access control settings:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Here is a sample access-control-system.xml file for an item's administrator-defined access control<br />
settings:<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Here is a sample access-control-user.xml file for an item's user-defined access control settings:<br />
<br />
<br />
<br />
<br />
776 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Related tasks:<br />
“Managing metadata and access control settings for authoring templates with <strong>Web</strong>DAV” on page 782<br />
With <strong>Web</strong>DAV you can change the metadata information for an authoring portlet or update the<br />
template's access control settings.<br />
Creating taxonomies and categories with <strong>Web</strong>DAV<br />
Taxonomies and categories are profiling methods used to group content items, and you can work with<br />
taxonomies and categories directly through <strong>Web</strong>DAV. Taxonomies and categories are represented in<br />
<strong>Web</strong>DAV as folders, and you can set up your taxonomy by creating and nesting folders.<br />
All taxonomies and categories for a given library are listed under the taxonomies folder for that library.<br />
taxonomies<br />
- wcm.taxonomy.taxonomy1<br />
- meta-data<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.category.category1<br />
- meta-data<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.category.category1.1<br />
- meta-data<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.category.category1.2<br />
- meta-data<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.taxonomy.taxonomy2<br />
- meta-data<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
access-control.xml<br />
To create a new taxonomy or category for your library, create a new folder using with the wcm.taxonomy<br />
prefix or the wcm.category prefix. Taxonomies can only be created under the generic taxonomies folder,<br />
while categories can be created in either a wcm.taxonomy.* folder or a wcm.category.* folder.<br />
Important: Some <strong>Web</strong>DAV clients create a folder with a default name, such as New Folder, and as soon<br />
as you enter the name of the new folder, the client sends a request to rename the already created folder.<br />
Because taxonomy and category folders require a corresponding prefix for creation, this client behavior<br />
does not work. If your <strong>Web</strong>DAV client uses this method to create new folders, you can first create the<br />
new taxonomy or category folder locally and then copy it into the <strong>Web</strong>DAV tree.<br />
Deleting taxonomies and categories: To delete taxonomies or categories simply delete the corresponding<br />
folder. Note that taxonomies or categories containing categories cannot be deleted until you have also<br />
Developing 777
first deleted the child items. Also if a category is still being referenced by another item, it cannot be<br />
deleted until you have first removed the corresponding references using the authoring portlet.<br />
Managing content with site areas in <strong>Web</strong>DAV<br />
Site areas are used to organize content items in your <strong>Web</strong> content system. In <strong>Web</strong>DAV site areas are<br />
represented as folders, and you can set up your site structure by creating and nesting folders. A content<br />
items within a site area is represented as a folder containing the metadata and access control settings for<br />
the content item.<br />
All site areas and content items for a given library are listed under the sites folder for that library.<br />
sites<br />
- wcm.siteArea.siteArea1<br />
- meta-data<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.siteArea.siteArea1.1<br />
- meta-data<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.content.content1.1.1<br />
- meta-data<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.siteArea.siteArea1.2<br />
- meta-data<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
access-control.xml<br />
Note: Support for content items is limited to modifying the metadata and access control settings. You<br />
cannot create or delete content items using <strong>Web</strong>DAV.<br />
To create a new site area for your library, create a new folder using with the wcm.siteArea prefix.<br />
Important: Some <strong>Web</strong>DAV clients create a folder with a default name, such as New Folder, and as soon<br />
as you enter the name of the new folder, the client sends a request to rename the already created folder.<br />
Because site area folders require a corresponding prefix for creation, this client behavior does not work. If<br />
your <strong>Web</strong>DAV client uses this method to create new folders, you can first create the new site area folder<br />
locally and then copy it into the <strong>Web</strong>DAV tree.<br />
Deleting site areas: To delete site areas simply delete the corresponding folder. Note that site areas<br />
containing site areas or content items cannot be deleted until you have also first deleted the child items.<br />
To delete child content items before deleting a site area, you must use the authoring portlet rather than<br />
<strong>Web</strong>DAV.<br />
Creating components with <strong>Web</strong>DAV<br />
Components are used to store elements in your <strong>Web</strong> content system, and you can use <strong>Web</strong>DAV to create<br />
and manage components. Each component type is represented as a folder in <strong>Web</strong>DAV, with individual<br />
components being represented as files in the appropriate component folder.<br />
All components for a given library are listed as folders under the components folder for that library.<br />
Within the components folder, you can also create custom folders that you can use to organize your<br />
components. Like the root components folder, custom folders contain folders for each type of component.<br />
778 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
libraries<br />
- wcm.library.my_library<br />
- components<br />
- CustomComponentFolder1<br />
- wcm.comps.authoring.tools<br />
- wcm.comps.component.references<br />
- wcm.comps.data.and.time<br />
.<br />
.<br />
.<br />
- wcm.comps.user.selection<br />
- CustomComponentFolder2<br />
- wcm.comps.authoring.tools<br />
- wcm.comps.component.references<br />
- wcm.comps.data.and.time<br />
.<br />
.<br />
.<br />
- wcm.comps.user.selection<br />
- wcm.comps.authoring.tools<br />
- wcm.comps.component.references<br />
- wcm.comps.data.and.time<br />
- wcm.comps.federated.content<br />
- wcm.comps.file<br />
- wcm.comps.html<br />
- wcm.comps.image<br />
- wcm.comps.jsp<br />
- wcm.comps.link<br />
- wcm.comps.menu<br />
- wcm.comps.navigator<br />
- wcm.comps.number<br />
- wcm.comps.page.navigation<br />
- wcm.comps.personalization<br />
- wcm.comps.rich.text<br />
- wcm.comps.search<br />
- wcm.comps.short.text<br />
- wcm.comps.style.sheet<br />
- wcm.comps.taxonomy<br />
- wcm.comps.text<br />
- wcm.comps.user.name<br />
- wcm.comps.user.selection<br />
access-control.xml<br />
Components are data-oriented items and represented as files and metadata folders.<br />
libraries<br />
- wcm.library.my_library<br />
- components<br />
- wcm.comps.authoring.tools<br />
- wcm.comps.component.references<br />
- wcm.comps.data.and.time<br />
- wcm.comps.federated.content<br />
- wcm.comps.file<br />
- wcm.comps.html<br />
- wcm.comps.image<br />
image1.jpg<br />
image2.jpg<br />
- meta-data<br />
- wcm.comp.image1.jpg<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.comp.image2.jpg<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.comps.jsp<br />
Developing 779
- wcm.comps.link<br />
- wcm.comps.menu<br />
- wcm.comps.navigator<br />
.<br />
.<br />
.<br />
- wcm.comps.user.selection<br />
access-control.xml<br />
Important: Although displayed in <strong>Web</strong>DAV, the following components cannot be created or modified<br />
through <strong>Web</strong>DAV and are represented by empty files:<br />
v Authoring tools<br />
v Component references<br />
v Federated content<br />
v JSP<br />
v Menu<br />
v Navigator<br />
v Page navigation<br />
v Personalization<br />
v Search<br />
v Taxonomy<br />
v User name<br />
v User selection<br />
To make changes to these components, you must use the authoring portlet.<br />
Link component limitation: Currently link components are not fully supported by <strong>Web</strong>DAV. The<br />
<strong>Web</strong>DAV file representing the link component contains only the URL of the link itself but no other<br />
information, such as the link text. For example, if you use <strong>Web</strong>DAV to modify a link component<br />
containing an HTML representation of lotus software and change the<br />
URL to www.ibm.com, the link text will still be rendered as lotus software, because that information<br />
cannot be modified with <strong>Web</strong>DAV.<br />
To create components for your library, drag one or more files into the appropriate component type folder.<br />
When you create a new component in this way, the object's file name is used as the name and title of the<br />
new component, and the file's content is stored as the component's data. In addition the user<br />
authenticated with the <strong>Web</strong>DAV client is specified as the author and owner of the new component.<br />
For example, you could drag an HTML file into the wcm.comps.html folder for a new HTML component<br />
or into the wcm.comps.rich.text folder for a new rich text element.<br />
Important: Placing an incompatible file into a component type folder (for example, putting a JPEG file<br />
into the wcm.comps.html folder) can cause errors during component creation and might result in an<br />
unusable component.<br />
Updating components: To update an existing component, you can simply replace the corresponding file<br />
in the <strong>Web</strong>DAV tree with a new file that has the same name. For example you can place myCoolPic.jpg<br />
into the image components folder that already contains myCoolPic.jpg, and the component will<br />
automatically be updated with the new file's content. If you place a file with a different name, a new<br />
component with that name is created.<br />
780 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Creating presentation templates in <strong>Web</strong>DAV<br />
With <strong>Web</strong>DAV you can create and maintain presentation templates to define the layout and appearance<br />
characteristics of <strong>Web</strong> pages used to display content. You can also create nested image components for<br />
use with the presentation templates. Presentation templates are stored in a folder with nested image<br />
components in an associated folder.<br />
All presentation templates for a given library are listed under the presentationTemplates folder for that<br />
library. Because they are data-oriented items, presentation templates are represented as files and<br />
meta-data folders. Nested image components are stored in a folder named after its associated<br />
presentation template–for example, template_name_files.<br />
libraries<br />
- wcm.library.my_library<br />
- presentationTemplates<br />
template1.html<br />
myTemplate.html<br />
- meta-data<br />
- wcm.presentationTemplate.template1.html<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.presentationTemplate.myTemplate.html<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
access-control.xml<br />
- template1.html_files<br />
nested_image.jpg<br />
- myTemplate.html_files<br />
1. To create presentation templates for your library, drag one or more files into the<br />
presentationTemplates folder. When you create a new presentation template in this way, the object's<br />
file name is used as the name and title of the new template, and the file's content is stored as the<br />
template's data. In addition the user authenticated with the <strong>Web</strong>DAV client is specified as the author<br />
and owner of the new template.<br />
Important: Placing an incompatible file into the presentationTemplates folder (for example, a JPEG<br />
file) can cause errors during template creation and might result in an unusable presentation template.<br />
Deleting presentation templates: To delete a presentation template simply delete the corresponding<br />
file. If the presentation template is being referenced by another item, such as a site area, it cannot be<br />
deleted until you have first removed the corresponding references using the authoring portlet.<br />
Updating presentation templates: To update an existing presentation template, you can simply<br />
replace the corresponding file in the <strong>Web</strong>DAV tree with a new file that has the same name. For<br />
example you can place myTemplate.html into the presentationTemplates folder, replacing the<br />
myTemplate.html file that is already there, and the presentation template will automatically be<br />
updated with the new file's content. If you place a file with a different name, a new template with<br />
that name is created.<br />
2. Create any nested image components for your presentation template by adding the image files to the<br />
template_name_files folder for your template. For example, if your template is template1.html, you<br />
would add the image files to the template1.html_files folder.<br />
Note: When you add an image to the nested components folder, a temporary image is created<br />
initially, and the image is only permanently added to the list of nested components when a reference<br />
to that image is added to the presentation template's HTML code. This is done to prevent orphaned<br />
components within the presentation template.<br />
3. If you have added a nested image component, update the presentation template's HTML code to<br />
reference the component according to the relative <strong>Web</strong>DAV path to the component.<br />
Developing 781
For example, to reference a nested image component, you would update the template1.html file with<br />
the following code:<br />
<br />
To reference a standard image component, you would use HTML code similar to the following<br />
example:<br />
<br />
Managing metadata and access control settings for authoring<br />
templates with <strong>Web</strong>DAV<br />
With <strong>Web</strong>DAV you can change the metadata information for an authoring portlet or update the<br />
template's access control settings.<br />
All authoring templates for a given library are listed under the authoringTemplates folder for that library.<br />
Because they are data-oriented items, authoring templates are represented as files and meta-data folders.<br />
libraries<br />
- wcm.library.my_library<br />
- authoringTemplates<br />
auth_template1.html<br />
myAuthTemplate.html<br />
- meta-data<br />
- wcm.presentationTemplate.auth_template1.html<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
- wcm.presentationTemplate.myAuthTemplate.html<br />
access-control-system.xml<br />
access-control-user.xml<br />
meta-data.xml<br />
access-control.xml<br />
Note: You cannot modify the authoring template itself in <strong>Web</strong>DAV. To make changes to the authoring<br />
template, use the authoring portlet.<br />
1. To change the access control settings for an authoring template, edit the access-control-system.xml<br />
file for administrator settings or the access-control-user.xml file for user-defined settings.<br />
2. To change the metadata for an authoring template, edit the meta-data.xml file for the authoring<br />
template.<br />
Related concepts:<br />
“Metadata and access control for <strong>Web</strong> content items in <strong>Web</strong>DAV” on page 775<br />
<strong>Web</strong>DAV uses XML files to represent metadata and access control information for a <strong>Web</strong> content item.<br />
You can make changes to an item's metadata and access control settings by modifying these files, and<br />
you can specify settings for multiple files by copying the XML files to their appropriate locations in the<br />
<strong>Web</strong>DAV tree.<br />
782 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Troubleshooting<br />
To help you resolve problems, use diagnostic tools such as <strong>IBM</strong> Support Assistant and tracing to capture<br />
system errors.<br />
Tools for troubleshooting and diagnostics<br />
A number of tools and resources are available to help you troubleshoot issues and resolve problems that<br />
users might encounter while using <strong>IBM</strong> <strong>Web</strong>Sphere Portal. If you need further assistance, you can use the<br />
tools described here to identify and collect information to help <strong>IBM</strong> Support determine the underlying<br />
cause of a problem.<br />
<strong>IBM</strong> Support Assistant<br />
<strong>IBM</strong> Support Assistant (ISA) provides quick access to product, education, and support resources that can<br />
help you answer questions and resolve problems with <strong>IBM</strong> software products on your own, without<br />
needing to contact <strong>IBM</strong> Support. Different product-specific plug-ins let you customize <strong>IBM</strong> Support<br />
Assistant for the particular products you have installed. <strong>IBM</strong> Support Assistant can also collect system<br />
data, log files, and other information to help <strong>IBM</strong> Support determine the cause of a particular problem.<br />
<strong>IBM</strong> Support Assistant is a utility to be installed on an administrator's workstation, not directly onto the<br />
<strong>Web</strong>Sphere Portal or <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> server system itself. The memory and resource requirements<br />
for the Assistant could negatively impact the server's performance. The included portable diagnostic<br />
components are designed for minimal impact to the normal operation of a server.<br />
You can use <strong>IBM</strong> Support Assistant to help you in the following ways:<br />
v To search through <strong>IBM</strong> and non-<strong>IBM</strong> knowledge and information sources across multiple <strong>IBM</strong> products<br />
to answer a question or solve a problem<br />
v To find additional information through product-specific <strong>Web</strong> resources; including product and support<br />
home pages, customer news groups and forums, skills and training resources and information about<br />
troubleshooting and commonly asked questions<br />
v To extend your ability to diagnose product-specific problems with targeted diagnostic tools available<br />
via the Support Assistant<br />
v To simplify collection of diagnostic data to help you and <strong>IBM</strong> resolve your problems (collecting either<br />
general or product/symptom-specific data)<br />
v To help in reporting of problem incidents to <strong>IBM</strong> Support through a customized on-line interface,<br />
including the ability to attach the diagnostic data referenced above or any other information to new or<br />
existing incidents<br />
Finally, you can use the built-in Updater facility to obtain support for additional software products and<br />
capabilities as they become available.<br />
To set up <strong>IBM</strong> Support Assistant for use with <strong>Web</strong>Sphere Portal, first install <strong>IBM</strong> Support Assistant using<br />
the files provided on the <strong>Web</strong>Sphere Portal Setup disc (or in the downloaded install image). For detailed<br />
information on system requirements, installing, and running <strong>IBM</strong> Support Assistant, see QuickStart.html<br />
in the appropriate platform subdirectory located on the W-8 CD (for example, W-8\isa\windows or<br />
W-8\isa\linux). Next, use <strong>IBM</strong> Support Assistant to locate and install any product updates. You can also<br />
choose to install plug-ins available for other <strong>IBM</strong> software in your environment, including <strong>Web</strong>Sphere<br />
Portal and <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. More information and the latest version of the <strong>IBM</strong> Support<br />
Assistant are available from the <strong>IBM</strong> Support Assistant <strong>Web</strong> page at www.ibm.com/software/support/isa/.<br />
783
Data collection and symptom analysis<br />
There are two methods for collecting data and analyzing symptoms for problem determination scenarios.<br />
The first method is <strong>IBM</strong> Support Assistant Lite for <strong>Web</strong>Sphere Portal, which provides automatic data<br />
collection and symptom analysis support for problem determination scenarios. This tool collects and<br />
analyzes information pertinent to a problem scenario to help identify the origin of the problem being<br />
encountered. The second method is running a task that can collect and optionally send the data for you.<br />
<strong>IBM</strong> Support Assistant Lite reduces the amount of time it takes to reproduce a problem with the proper<br />
Reliability, Availability, and Serviceability (RAS) tracing levels set (trace levels are set automatically by the<br />
tool) and performs symptom analysis to streamline problem determination. If you need further assistance,<br />
<strong>IBM</strong> Support Assistant Lite also reduces the effort required to send the appropriate log information to<br />
<strong>IBM</strong> Support.<br />
<strong>IBM</strong> Support Assistant Lite can also create and deploy aspect-enabled JAR files to enable additional<br />
troubleshooting. After reproducing the problem, you can use <strong>IBM</strong> Support Assistant Lite to remove the<br />
aspect-enabled JAR files, replace them with the original version, and collect the LOG file. For detailed<br />
instructions, see the User Guide that comes with <strong>IBM</strong> Support Assistant Lite.<br />
If you do not want to install <strong>IBM</strong> Support Assistant Lite, you can implement an aspect-enabled jar file<br />
manually.<br />
Choose one of the following methods to collect data:<br />
784 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 206. Data collection methods<br />
Method<br />
<strong>IBM</strong> Support Assistant Lite<br />
Description<br />
Perform the following steps:<br />
1. Download <strong>IBM</strong> Support Assistant Lite for <strong>Web</strong>Sphere<br />
Portal.<br />
2. Extract the .zip file anywhere on the portal server.<br />
3. Go to the ISALite directory that was created when<br />
you completed the previous step.<br />
4. To collect data, run the following script:<br />
Windows GUI: runISALite.bat<br />
AIX ® SolarisLinux GUI: runISALite.sh<br />
Windows command line: runISALiteConsole.bat<br />
AIXSolarisLinux command line:<br />
runISALiteConsole.sh<br />
5. Select the Problem Type. For example, for a portal<br />
logon problem, select <strong>Web</strong>Sphere Portal > Security<br />
and Administration > Portal Login Problem.<br />
6. Specify the collection file. The filename must include<br />
the path and .zip extension.<br />
7. Click Collect Data and answer the remaining<br />
prompts.<br />
Tip: To have the <strong>IBM</strong> Support Assistant Lite<br />
automatically FTP the logs to <strong>IBM</strong> so that a manual<br />
transfer is not necessary, simply choose the required<br />
FTP option when prompted.<br />
8. If you did not automatically FTP your results, locate<br />
the collection file specified in step 6, above. To<br />
manually FTP your results, follow the instructions in<br />
"Exchanging information with <strong>IBM</strong> Technical Support<br />
for problem determination" below.<br />
For detailed instructions, see the <strong>IBM</strong> Support Assistant<br />
Lite for <strong>Web</strong>Sphere Portal tool User's Guide.<br />
Troubleshooting 785
Table 206. Data collection methods (continued)<br />
Method<br />
wpcollector tool<br />
Description<br />
Perform the following steps:<br />
1. If the support team has requested tracing, enable it<br />
now as instructed and then re-create the problem. If<br />
no tracing is requested, skip to the next step.<br />
2. Open a command prompt and change to the<br />
wp_profile_root/PortalServer/bin/ directory.<br />
Attention: You must run the wpcollector task from<br />
the wp_profile_root/PortalServer/bin/ directory. If<br />
you run the task from a different directory, the task<br />
fails.<br />
3. Run the following script to collect data:<br />
v Windows: wpcollector.bat<br />
v AIXSolarisLinux: wpcollector.sh<br />
v <strong>IBM</strong> i: wpcollector.sh<br />
Tip: The wpcollector script can automatically FTP<br />
the logs to <strong>IBM</strong> so that you don't need to manually<br />
transfer them. To begin the collection and FTP the<br />
results to <strong>IBM</strong> correctly, use the -Dpmr=pmr_number<br />
parameter to identify the collection with your PMR<br />
(Problem Management Record) number. Format the<br />
number using either periods or commas. For<br />
example: wpcollector.bat -Dpmr=12345.xxx.000<br />
To collect files for the Deployment <strong>Manager</strong> profile,<br />
use the -Ddmgr.root=dmgr_root parameter either<br />
alone or in conjunction with -Dpmr=pmr_number.<br />
4. If you did not automatically FTP your results, locate<br />
the wp.mustgather.zip file or the<br />
pmr-wp.mustgather-timestamp.zip file in the<br />
wp_profile_root/filesForAutoPD/ directory. Follow the<br />
instructions in "Exchanging information with <strong>IBM</strong><br />
Technical Support for problem determination" to<br />
manually FTP your results.<br />
Manual creation of aspect-enabled JAR files<br />
<strong>IBM</strong> Support Assistant Lite is the preferred way to create and deploy aspect-enabled JAR files for<br />
troubleshooting because the tool automates the process for you. If you do not want to install <strong>IBM</strong><br />
Support Assistant Lite, or you are running on a platform that does not support <strong>IBM</strong> Support Assistant<br />
Lite, you can manually create your own aspect-enabled JAR files using either the aspect source files that<br />
ship with <strong>IBM</strong> <strong>Web</strong>Sphere Portal, or aspect source files provided by <strong>IBM</strong> Support.<br />
1. Set up AspectJ as follows:<br />
a. Download the latest version of AspectJ from the Eclipse <strong>Web</strong> site.<br />
b. To install AspectJ, run the command shown below:<br />
java -jar aspect_enabled_jar_filename<br />
2. Make the following changes:<br />
a. Set the CLASSPATH environment variable to include Aspect-Home\aspectjrt.jar where<br />
Aspect-Home is the directory where you installed AspectJ.<br />
b. Set the PATH environment variable to include Aspect-Home\bin.<br />
c. Modify the AspectJ compiler batch file Aspect-Home\bin\ajc.bat to use -Xmx1500M instead of<br />
-XmX64M.<br />
786 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
3. To create an aspect-enabled JAR file, run the following command on a single line:<br />
ajc -inpath full path to jar file<br />
-sourceroots full path of directory that contains the aspect source file<br />
-extdirs full path of directory that will contain the built JAR file<br />
-outjar aspect_enabled_jar_file<br />
Note: Contact <strong>IBM</strong> Support for the values that you must specify for -inpath, -sourceroots,<br />
-extdirs, and -outjar.<br />
4. To implement an aspect-enabled JAR file:<br />
a. Go to the directory that contains the JAR file that you want to replace.<br />
b. Copy the JAR file to a backup location.<br />
c. Replace the specified JAR file with the aspect-enabled version.<br />
5. Restart the server.<br />
6. Set any necessary trace levels.<br />
7. Reproduce the problem that you want to troubleshoot.<br />
8. Collect the LOG files.<br />
9. Replace the aspect-enabled JAR file with the backup copy of the original JAR file.<br />
10. Reset the trace levels.<br />
11. Restart the server.<br />
Portal version and history information<br />
You can use the <strong>IBM</strong> <strong>Web</strong>Sphere Portal version and history information tools to gather information about<br />
your portal installation. This information can be useful when you need a snapshot of your portal<br />
installation specifics, for example when you contact customer support. This information is automatically<br />
included in the automated data collection that is available when you use the <strong>IBM</strong> Support Assistant Lite<br />
for <strong>Web</strong>Sphere Portal.<br />
Version information<br />
The portal version information tool is located in the following directory:<br />
v UNIX: wp_profile_root/PortalServer/bin<br />
v <strong>IBM</strong> i: wp_profile_root/PortalServer/bin<br />
v Windows: wp_profile_root\PortalServer\bin<br />
You invoke the tool by using the following command:<br />
v UNIX: ./WPVersionInfo.sh<br />
v <strong>IBM</strong> i: WPVersionInfo.sh<br />
v Windows: WPVersionInfo.bat<br />
You can also generate a report in html format by executing the genVersionReport tool<br />
v UNIX: ./genVersionReport.sh<br />
v <strong>IBM</strong> i: genVersionReport.sh<br />
v Windows: genVersionReport.bat<br />
History information<br />
The History information tool can be used to gather installation history for the <strong>Web</strong>Sphere Portal product.<br />
The History information tool is located in the following directory:<br />
v UNIX: wp_profile_root/PortalServer/bin<br />
v <strong>IBM</strong> i: wp_profile_root/PortalServer/bin<br />
Troubleshooting 787
v Windows: wp_profile_root\PortalServer\bin<br />
The History information tool can be invoked using the following:<br />
v UNIX: ./WPHistoryInfo.sh<br />
v <strong>IBM</strong> i: WPHistoryInfo.sh<br />
v Windows: WPHistoryInfo.bat<br />
You can also generate a report in HTML format by executing the genHistoryReport tool:<br />
v UNIX: ./genHistoryReport.sh<br />
v <strong>IBM</strong> i: genHistoryReport.sh<br />
v Windows: genHistoryReport.bat<br />
Logging and tracing<br />
If you are experiencing a problem, you might want to enable tracing and then re-create the problem to<br />
capture more log information. You can enable logging and tracing for software that is shipped with<br />
<strong>Web</strong>Sphere Portal. Enabling tracing makes log output more verbose. For example, you can enable tracing<br />
within <strong>Web</strong>Sphere Application Server to obtain information about application servers and other<br />
processes.<br />
Refer to the MustGather data collection lists used in troubleshooting various problems in <strong>Web</strong>Sphere<br />
Portal and <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>. Collecting MustGather data early, even before opening a PMR,<br />
helps <strong>IBM</strong> Product Support quickly determine if:<br />
v Symptoms match known problems (rediscovery).<br />
v There is a non-defect problem that can be identified and resolved.<br />
v There is a defect that identifies a workaround to reduce severity.<br />
v Locating the root cause can speed development of a code fix.<br />
Simplify this process even more by using the <strong>IBM</strong> Support Assistant Lite for <strong>Web</strong>Sphere Portal to<br />
automate the collection of the diagnostic data needed to troubleshoot most of these situations. You can<br />
use the information gathered to help solve your own problems or to report an issue to <strong>IBM</strong> Product<br />
Support.<br />
Links to important <strong>Web</strong>Sphere Portal tracing questions<br />
How do I turn on <strong>Web</strong>Sphere Portal trace logging<br />
See “Trace logging” on page 793 for information.<br />
What are the different trace settings and where are the logged<br />
See “<strong>Web</strong>Sphere Portal run-time logs” for information.<br />
How do I change the location of my logs<br />
See “Changing the log file name and location” on page 794<br />
<strong>Web</strong>Sphere Portal run-time logs<br />
If tracing is enabled, <strong>IBM</strong> <strong>Web</strong>Sphere Portal generates a log file during run time that contains messages<br />
and trace information.<br />
The default run-time log file is:<br />
v Windows: wp_profile_root\logs\<strong>Web</strong>Sphere_Portal\trace.log<br />
v AIX Linux Solaris: wp_profile_root/logs/<strong>Web</strong>Sphere_Portal/trace.log<br />
v i (UserData): wp_profile_root/logs/<strong>Web</strong>Sphere_Portal/trace.log<br />
788 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
See the topic on system event logging for details on how to configure logging and for information on the<br />
grammar of the "trace string" configuration key.<br />
The following table describes trace loggers for particular situations and problem symptoms. Enabling the<br />
trace loggers can slow down <strong>Web</strong>Sphere Portal.<br />
Note: The trace strings beginning with com.ibm.wps.* are extensions in the <strong>IBM</strong> portlet API.<br />
Table 207. Trace loggers<br />
Area of concern When to use Trace string Additional comments<br />
Access Control<br />
Enable this tracer if you<br />
want permissions for<br />
resources to be explained in<br />
detail, need to verify the<br />
correctness of a permission,<br />
or need to isolate a defect<br />
in access control.<br />
com.ibm.wps.ac.*=all The traces are easier to<br />
evaluate while <strong>Web</strong>Sphere<br />
Portal usage is low.<br />
Important: Enabling this<br />
logger creates very large<br />
log files.<br />
Authentication<br />
Command<br />
Composition Model<br />
Credential Vault<br />
Database<br />
Engine<br />
General<br />
Use to turn on all<br />
command trace loggers.<br />
Enable these messages if<br />
you want to get more<br />
information on how pages<br />
are constructed, need to<br />
verify page lists displayed<br />
on <strong>Web</strong>Sphere Portal for<br />
correctness, or need to<br />
isolate an error in the<br />
<strong>Web</strong>Sphere Portal<br />
aggregation component.<br />
Deals with generated SQL<br />
statements and the internal<br />
flow in the <strong>Web</strong>Sphere<br />
Portal database layer.<br />
Use to enable all engine<br />
trace loggers.<br />
com.ibm.wps.engine.*=all:<br />
com.ibm.wps.services.puma.*=all:<br />
com.ibm.wps.puma.*=all:<br />
com.ibm.wps.auth.*=all:<br />
com.ibm.wps.sso.*=all:<br />
com.ibm.wps.um.*=all:<br />
com.ibm.wps.services.authentication.*=all<br />
com.ibm.wps.commands.*=all<br />
com.ibm.wps.model.*=all: The traces are easier to<br />
com.ibm.wps.composition.*=all evaluate while <strong>Web</strong>Sphere<br />
Portal usage is low.<br />
Important: Enabling this<br />
logger creates very large<br />
log files.<br />
com.ibm.wps.sso.credentialvault.*=all:<br />
com.ibm.wps.command.credentialvault.*=all:<br />
com.ibm.wps.portletservice.credentialvault.*=all:<br />
com.ibm.wps.services.credentialvault.*=all:<br />
com.ibm.portal.portlet.service.credentialvault.*=all<br />
com.ibm.wps.datastore.*=all: Important: Enabling this<br />
com.ibm.wps.services.datastore.*=all logger will create very large<br />
log files.<br />
com.ibm.wps.engine.*=all<br />
com.ibm.wps.*=all<br />
Note: If you want to use<br />
general tracing but do not<br />
want render times to be<br />
displayed for such portlets,<br />
you must selectively<br />
disable tracing using the<br />
following trace string:<br />
When general tracing is<br />
enabled and parallel portlet<br />
rendering is turned on,<br />
portlets that are configured<br />
to be rendered in parallel<br />
will display the render time<br />
as part of the portlet<br />
content.<br />
com.ibm.wps.pe.PortletRenderTimeLoggingHelper=info<br />
Troubleshooting 789
Table 207. Trace loggers (continued)<br />
Area of concern When to use Trace string Additional comments<br />
Mail Service<br />
Use to diagnose problems com.ibm.wps.services.mail.*=all<br />
with the Mail Service.<br />
Mapping URLs<br />
Use to diagnose problems<br />
with the user-defined<br />
mappings of URLs<br />
com.ibm.wps.mappingurl.*=all:<br />
com.ibm.wps.command.mappingurl.*=all<br />
Personalization<br />
<strong>Web</strong>Sphere Portal Search<br />
<strong>Web</strong>Sphere Portal Search<br />
<strong>Web</strong>Sphere Portal Search<br />
<strong>Web</strong>Sphere Portal Search<br />
<strong>Web</strong>Sphere Portal Search<br />
<strong>Web</strong>Sphere Portal Search<br />
Portlet Container<br />
Portlet Environment<br />
Portlet Load Monitoring<br />
Deployment<br />
Portlets<br />
Use to turn on all<br />
<strong>Web</strong>Sphere Portal Search<br />
messages.<br />
Enable to obtain messages<br />
about URLs that are<br />
discovered by the crawler<br />
but could not be fetched<br />
and indexed for different<br />
reasons.<br />
Enable to obtain messages<br />
about the crawling process.<br />
Enable to obtain messages<br />
about failures that happen<br />
during a crawl.<br />
Enable to obtain messages<br />
about the indexing process.<br />
Enable to obtain messages<br />
about failures that happen<br />
during the indexing<br />
process.<br />
Use to diagnose problems<br />
with Portlet Load<br />
Monitoring (PLM).<br />
Use to diagnose problems<br />
with portlets.<br />
com.ibm.websphere.personalization.*=all:<br />
When Personalization is<br />
com.ibm.dm.pzn.ui.*=all installed outside of a<br />
<strong>Web</strong>Sphere Portal server,<br />
Personalization will log<br />
using <strong>Web</strong>Sphere<br />
Application Server tracing<br />
with the same trace strings.<br />
com.ibm.portal.search=all<br />
For detailed information<br />
refer to Logging and<br />
tracing in Portal Search.<br />
com.ibm.portal.search.notIndexed=all For detailed information<br />
refer to Logging and<br />
tracing in Portal Search.<br />
com.ibm.portal.search.crawler=all For detailed information<br />
refer to Logging and<br />
tracing in Portal Search.<br />
com.ibm.portal.search.crawler.failure=all<br />
For detailed information<br />
refer to Logging and<br />
tracing in Portal Search.<br />
com.ibm.portal.search.index=all For detailed information<br />
refer to Logging and<br />
tracing in Portal Search.<br />
com.ibm.portal.search.index.failure=all<br />
For detailed information<br />
refer to Logging and<br />
tracing in Portal Search.<br />
com.ibm.wps.pe.pc.*=all:<br />
org.apache.jetspeed.portlet.Portlet=all:<br />
javax.portlet.Portlet=all<br />
com.ibm.wps.pe.ext.*=all:<br />
com.ibm.wps.pe.factory.*=all:<br />
com.ibm.wps.pe.om.*=all:<br />
com.ibm.wps.pe.util.*=all<br />
com.ibm.wps.pe.pc.waspc.plm.*=all:<br />
com.ibm.wps.command.plm.*=all<br />
com.ibm.wps.pe.mgr.*=all:<br />
com.ibm.wps.services.deployment.*=all:<br />
com.ibm.wps.command.applications.*=all:<br />
com.ibm.wps.command.portlets.*=all<br />
com.ibm.wps.portlets.*=all: Enables tracing for all<br />
org.apache.jetspeed.portlet.PortletLog=all<br />
portlets. Therefore, place<br />
the suspect portlet on a<br />
separate page for testing.<br />
790 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 207. Trace loggers (continued)<br />
Area of concern When to use Trace string Additional comments<br />
Scripting Interface<br />
Use this trace string to<br />
diagnose problems with the<br />
Portal Scripting Interface,<br />
or with application<br />
interface scripting, and the<br />
execution of such scripts.<br />
com.ibm.wps.scripting.*=allThe traces are easier to<br />
evaluate while <strong>Web</strong>Sphere<br />
Portal usage is low.<br />
Note: Enabling this logger<br />
can create large log files<br />
fast.<br />
Selfcare<br />
Services: EventBroker<br />
Services: Finder<br />
Services: Loader<br />
ServicesNaming<br />
ServicesNavigator<br />
ServicesRegistry<br />
Services<br />
SSO<br />
WSRP administration<br />
WSRP Consumer<br />
WSRP Producer<br />
Use to diagnose problems<br />
with user registration and<br />
profile editing.<br />
Use for debugging the<br />
resolution of file names.<br />
Use to trace the dynamic<br />
class loading performed by<br />
this service.<br />
Use to debug the lookup of<br />
objects by the naming<br />
service.<br />
Use to diagnose problems<br />
with parts of page<br />
aggregation and display.<br />
Use to view the policies of<br />
the internal portlet object<br />
caching and watch it reload<br />
its content.<br />
Use for switching on<br />
tracing for all services.<br />
Use to turn on all SSO<br />
tracer loggers.<br />
Use to diagnose problems<br />
occurring during the<br />
administration of <strong>Web</strong><br />
Services for Remote Portlets<br />
(WSRP) with <strong>Web</strong>Sphere<br />
Portal.<br />
Use to diagnose problems<br />
occurring during the use of<br />
WSRP with <strong>Web</strong>Sphere<br />
Portal as a Consumer.<br />
Use to diagnose problems<br />
occurring during the use of<br />
WSRP with <strong>Web</strong>Sphere<br />
Portal as a Producer.<br />
com.ibm.wps.services.puma.*=all: Use this logger if there are<br />
com.ibm.wps.puma.*=all: errors in the sign-up, Edit<br />
com.ibm.wps.um.*=all My Profile, and the Manage<br />
Users and Groups portlets.<br />
com.ibm.wps.services.registry.EventHandlerRegistry=all:<br />
com.ibm.wps.services.events.*=all<br />
com.ibm.wps.services.finder.*=all<br />
com.ibm.wps.services.Service<strong>Manager</strong>=all<br />
com.ibm.wps.services.naming.*=all<br />
com.ibm.wps.services.navigator.*=all<br />
com.ibm.wps.services.registry.*=all<br />
com.ibm.wps.services.*=all<br />
com.ibm.wps.sso.*=all<br />
com.ibm.wps.command.wsrp.*=all:<br />
com.ibm.wps.wsrp.cmd.*=all<br />
com.ibm.wps.wsrp.consumer.*=all<br />
com.ibm.wps.wsrp.producer.*=all<br />
Use this logger if errors<br />
occur when using the<br />
Security Vault task on the<br />
Security page of the<br />
Administration pages.<br />
Troubleshooting 791
Table 207. Trace loggers (continued)<br />
Area of concern When to use Trace string Additional comments<br />
XML configuration interface Use to diagnose problems com.ibm.wps.command.xml.*=all<br />
with the XML<br />
import/export of<br />
<strong>Web</strong>Sphere Portal<br />
configurations.<br />
Verbose garbage collection in Java Virtual Machine (JVM) logs<br />
Verbose garbage collection (verbosegc) logging is often required when tuning and debugging many<br />
issues, particularly memory problems, and has negligible impact on system performance.<br />
The default <strong>Web</strong>Sphere Portal installation enables verbose garbage collection (verbosegc) logging and<br />
configures the following generic JVM argument:<br />
-Xverbosegclog:${SERVER_LOG_ROOT}/verbosegc.m%d.1/27/12M%S.%pid.txt,20,10000<br />
The verbosegc log file name is verbosegc.m%d.1/27/12M%S.%pid.txt. It includes a date/time stamp and<br />
the process id (pid) of the <strong>Web</strong>Sphere Portal instance.<br />
The default <strong>Web</strong>Sphere Portal installation redirects the verbosegc output to 20 rotating historical log files,<br />
each containing 10000 garbage collection (GC) cycles.<br />
For more information about configuring the JVM through <strong>Web</strong>Sphere Application Server, see the <strong>IBM</strong><br />
<strong>Web</strong>Sphere Application Server information centers at www.ibm.com/software/webservers/appserv/was/<br />
library.<br />
For more information about JVM argument -Xverbosegclog, see Java Diagnostic Guides at<br />
www.ibm.com/developerworks/java/jdk/diagnosis/60.html.<br />
<strong>Web</strong>Sphere Application Server tracing and log files<br />
Use <strong>Web</strong>Sphere Application Server log files and tracing to troubleshoot problems with <strong>Web</strong>Sphere Portal.<br />
<strong>Web</strong>Sphere Application Server has log files and a tracing function; however, whenever possible use the<br />
wpinstalllog.txt file to determine whether <strong>Web</strong>Sphere Application Server was successfully configured<br />
for <strong>Web</strong>Sphere Portal and whether <strong>Web</strong>Sphere Portal was successfully started on <strong>Web</strong>Sphere Application<br />
Server. Both log files are described in Installation, configuration, and migration logs.<br />
System event logging<br />
The system event logging facility of <strong>IBM</strong> <strong>Web</strong>Sphere Portal enables the recording of information about<br />
the operation of <strong>Web</strong>Sphere Portal.<br />
Event logs provide administrators with information on important or abnormal events, especially errors<br />
that occur during the operation of the product. In addition, event logs gather debugging information that<br />
helps <strong>IBM</strong> support to resolve problems.<br />
<strong>Web</strong>Sphere Portal provides two types of logging: logging of messages and logging of debugging<br />
messages called traces.<br />
For information about how to use log files and a list of trace logger strings refer to the topic about<br />
<strong>Web</strong>Sphere Portal logs.<br />
This topic has the following sections:<br />
792 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Message logging<br />
<strong>Web</strong>Sphere Portal provides the logging of messages that report errors and status information.<br />
The following types of messages are provided:<br />
Informational<br />
A condition worth noting but does not require the user to perform an action.<br />
Warning<br />
An abnormal condition has been detected. The user may have to take action. However,<br />
<strong>Web</strong>Sphere Portal code is able to handle the condition without failing.<br />
Error A serious failure in the execution of the application that requires further action.<br />
Messages for <strong>Web</strong>Sphere Portal are logged in the following files:<br />
SystemOut.log<br />
Contains information that is useful for monitor the health of the <strong>Web</strong>Sphere Portal server and all<br />
running processes.<br />
System.err<br />
Contains exception stack trace information that is useful when performing problem analysis.<br />
Locating the log files: Log files for <strong>Web</strong>Sphere Portal, including SystemOut.log and System.err are<br />
located in the following directory: wp_profile_root/logs/<strong>Web</strong>Sphere_Portal<br />
Trace logging<br />
<strong>Web</strong>Sphere Portal provides the logging of debugging messages called traces. These traces are useful for<br />
fixing problems. However, to save system resources, they are switched off by default.<br />
Traces can be set for different durations:<br />
Temporary<br />
Traces can be set for a temporary period by using the administration portlet Enable Tracing or<br />
the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server administrative console. To set traces by using the portlet,<br />
proceed by the following steps:<br />
1. Log in as the administrator.<br />
2. Click Administration > Portal Analysis > Enable Tracing. The Enable Tracing portlet appears.<br />
3. Type the required trace string into the field Append these trace settings:. For example, this<br />
can be com.ibm.wps.command.credentialvault.*=finest<br />
4. Click the Add icon. Enable Tracing updates the field Current trace settings:<br />
Note: Restarting <strong>Web</strong>Sphere Portal will remove traces that were set by using the Enable Tracing<br />
Administration portlet.<br />
To disable tracing, do either of the following:<br />
v Select the current trace settings under Current trace settings: and click the Remove icon. By<br />
the example given above, the current setting can be<br />
com.ibm.wps.command.credentialvault.*=finest.<br />
v Type the trace string *=info into the field Append these trace settings: and click the Add icon.<br />
This trace string overwrites all settings listed under Current trace settings: and resets it to the<br />
default.<br />
Extended<br />
To enable trace settings for a longer period of time, that is, for more than one session, switch<br />
them on in the <strong>Web</strong>Sphere Application Server configuration. Proceed by the following steps:<br />
Troubleshooting 793
1. Access the <strong>Web</strong>Sphere Application Server Administrative Console by using this URL:<br />
http://hostname:port_number/ibm/console<br />
2. Click Servers > Server Types > <strong>Web</strong>Sphere application servers.<br />
3. Select the application server.<br />
4. Click Troubleshooting > Change Log Detail Levels.<br />
5. Specify the required trace settings. For example, this can be<br />
com.ibm.wps.command.credentialvault.*=finest<br />
6. Save your updates.<br />
7. Restart <strong>Web</strong>Sphere Portal.<br />
8. To disable tracing, specify tracestring: *=info and restart <strong>Web</strong>Sphere Portal.<br />
Changing the log file name and location<br />
You can change the locations of the log files by configuring them in the <strong>Web</strong>Sphere Application Server<br />
administrative console. Select Troubleshooting > Logs and Trace > server_name and select the logger<br />
type that you want to change. In the configuration dialog change the path for the log file as required. For<br />
a description of the available types of log files refer to the <strong>Web</strong>Sphere Application Server information<br />
center.<br />
Changing the language used in the log file<br />
By default, information in the log file is written in the language that was used for the <strong>Web</strong>Sphere Portal<br />
installation. However, because <strong>Web</strong>Sphere Portal supports a number of languages, you can choose to<br />
have the log file information written in a language other than that used during installation.<br />
To change the language used for the log file, edit the file log.properties. This file is located in the<br />
following <strong>Web</strong>Sphere Portal directory:<br />
v AIX Linux Solaris: wp_profile_root/PortalServer/config/config<br />
v i: wp_profile_root/PortalServer/config/config<br />
v Windows: wp_profile_root\PortalServer\config\config<br />
Add the following line:<br />
locale=xx<br />
where xxis the two-letter abbreviation for the locale. For a list of the locale abbreviations used with<br />
<strong>Web</strong>Sphere Portal, refer to Directories for languages. For example, to have log information generated in<br />
English, you would add the following line:<br />
locale=en<br />
Reference: Log file format<br />
If the logs are written to the log file of <strong>Web</strong>Sphere Portal and not redirected to the logging facility<br />
<strong>Web</strong>Sphere Application Server, the log file consists of a sequence log records that are separated by blank<br />
lines.<br />
The log records have the following format:<br />
timestamp classification classname method threadID<br />
messagecode: logmessage<br />
Where:<br />
v timestamp is the time (to the millisecond) when the log record was created.<br />
v classification is one of the following letters:<br />
794 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
– E for error messages<br />
– W for warning messages<br />
– I for informational messages<br />
– l for traces (low details)<br />
– m for traces (medium details)<br />
– h for traces (high details)<br />
v classname is the Java class containing the code that triggered the log event.<br />
v method is the name of the Java method containing the code that triggered the log event.<br />
v messagecode is a unique identifier for this message, to uniquely identify the specific message and refer<br />
to it when consulting documentation or support. The message code is only available for error, warning,<br />
or informational messages, and not for traces. It consists of:<br />
– a four-character identifier for the component that defines the message.<br />
– a four-digit number identifying the message in the component.<br />
– a one-letter classification code, which can be E, W or I,asdefined above.<br />
v logmessage is the actual log message describing the logged event. Error, warning, and informational<br />
messages are translated into the system locale. Trace messages are not translated.<br />
v threadID is the identification of the thread that triggered the log event.<br />
Note:<br />
1. Traces are written only if the specific tracing facility is enabled; all other messages are written<br />
unconditionally.<br />
2. The system locale is part of the general internationalization features of <strong>Web</strong>Sphere Portal and can be<br />
configured via LocalizerService. For more information refer to the topics about Setting service<br />
configuration properties and about the Portal configuration services.<br />
The following is an example of a log record:<br />
2011.05.16 13:36:14.449 W com.ibm.wps.services.datastore.DataStoreServiceImpl init 0000003a<br />
DSTO0063W: The transaction isolation level is not set to READ_COMMITTED.<br />
The current value is TRANSACTION_REPEATABLE_READ.<br />
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> tracing files<br />
Enable the use of <strong>Web</strong>Sphere Application Server trace facilities to create trace information for <strong>Web</strong><br />
<strong>Content</strong> <strong>Manager</strong>. This tracing can be enabled either permanently or for just the current <strong>Web</strong>Sphere Portal<br />
session.<br />
<strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> uses the <strong>IBM</strong> <strong>Web</strong>Sphere Application Server trace facilities to create trace<br />
information. If you need detailed trace output of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> to debug a problem, follow these<br />
steps:<br />
1. To permanently enable tracing, do the following:<br />
a. Start <strong>Web</strong>Sphere Application Server.<br />
b. Open the Administrative Console.<br />
c. Go to section Troubleshooting>Logs and Traces><strong>Web</strong>Sphere_Portal>Diagnostic Trace.<br />
d. Make sure that the check box Enable Trace is selected.<br />
e. Enter any of the following in the TraceSpecification field:<br />
v com.ibm.workplace.wcm.*<br />
v com.aptrix.*<br />
v com.presence.*<br />
For example, to trace all events, enter the following:<br />
Troubleshooting 795
com.ibm.workplace.wcm.*=all:com.aptrix.*=all:com.presence.*=all<br />
f. Save the changes.<br />
g. Restart <strong>IBM</strong> <strong>Web</strong>Sphere Portal.<br />
2. To enable tracing just for the current <strong>Web</strong>Sphere Portal session, do the following:<br />
a. Go to Administration > <strong>Web</strong>Sphere Portal > Portal Analysis > Enable Tracing ><br />
b. Enter any of the following in the Append these trace settings field:<br />
v com.ibm.workplace.wcm.*<br />
v com.aptrix.*<br />
v com.presence.*<br />
For example, to trace all events, enter the following:<br />
com.ibm.workplace.wcm.*=all:com.aptrix.*=all:com.presence.*=all<br />
Here is a list of advanced trace settings:<br />
Table 208. Description of the trace settings<br />
Trace setting:<br />
Description:<br />
com.ibm.workplace.wcm.services.content.*<br />
This enables low level tracing for every item.<br />
com.ibm.workplace.wcm.domain.transformers.control.controltype You can enable tracing for any of the following control<br />
types:<br />
v HistoryControlTransformer<br />
v IdentityControlTransformer<br />
v ProfileControlTransformer<br />
v SecurityControlTransformer<br />
v WorkflowControlTransformer<br />
com.ibm.workplace.wcm.domain.transformers.control.* This enables the tracing for all control types for all items.<br />
796 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 208. Description of the trace settings (continued)<br />
Trace setting:<br />
Description:<br />
com.ibm.workplace.wcm.domain.transformers.controllable.controllabletype<br />
You can enable tracing for any of the following<br />
controllable types:<br />
v AbstractControllableTransformer<br />
v AlternateDesignCmpntTransformer<br />
v AlternateLinkCmpntTransformer<br />
v ArrayCmpntTransformer<br />
v AttributeReferenceCmpntTransformer<br />
v BasePathCmpntTransformer<br />
v BaseReferenceCmpntTransformer<br />
v CategoryTransformer<br />
v CmpntReferenceTransformer<br />
v CmpntTransformer<br />
v ConfigParamCmpntTransformer<br />
v <strong>Content</strong>LinkTransformer<br />
v <strong>Content</strong>SpotCmpntTransformer<br />
v <strong>Content</strong>Transformer<br />
v ContextPathCmpntTransformer<br />
v ControllableNodeValueTransformer<br />
v ControllableTransformer<br />
v DateCmpntTransformer<br />
v EmailActionTransformer<br />
v ExpireActionTransformer<br />
v ExternalLinkTransformer<br />
v FEDCmpntReferenceTransformer<br />
v FEDCmpntTransformer<br />
v FileResourceCmpntTransformer<br />
v HistoryCmpntTransformer<br />
v HTMLCmpntTransformer<br />
v IDCmpntTransformer<br />
v ImageResourceCmpntTransformer<br />
v IndentCmpntTransformer<br />
v IndexCmpntTransformer<br />
v InlineEditCmpntTransformer<br />
v InlineEditReferenceCmpntTransformer<br />
v JSPCmpntTransformer<br />
v LinkCmpntTransformer<br />
v MenuCmpntTransformer<br />
v NavigatorCmpntTransformer<br />
v NoPrefixBasePathCmpntTransformer<br />
v NoPrefixServletPathCmpntTransformer<br />
v NumericCmpntTransformer<br />
v ObjectSummaryTransformer<br />
v OptionSelectionCmpntTransformer<br />
v PageInfoCmpntTransformer<br />
v PagingCmpntTransformer<br />
v PDMCmpntReferenceTransformer<br />
v PDMCmpntTransformer<br />
v PlaceholderCmpntTransformer Troubleshooting 797<br />
v PlutoSubscriberTransformer<br />
v PlutoSyndicatorTransformer
The resulting traces of Virtual Member <strong>Manager</strong> are written to:<br />
v Windows: wp_profile_root\logs\<strong>Web</strong>Sphere_Portal\trace.log<br />
v AIX Linux Solaris: wp_profile_root/logs/<strong>Web</strong>Sphere_Portal/trace.log<br />
v <strong>IBM</strong> i: wp_profile_root/logs/<strong>Web</strong>Sphere_Portal/trace.log<br />
Contact support<br />
For contact information, refer to the <strong>IBM</strong> Software Support site at http://www.ibm.com/support/entry/<br />
portal/Overview/Software/<strong>Web</strong>Sphere/<strong>Web</strong>Sphere_Portal.<br />
798 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
<strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> terminology<br />
These common terms are used when describing <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>.<br />
<strong>Web</strong> content portlets<br />
The following portlets are used in a <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> system.<br />
Table 209. Portlet types<br />
Portlet type<br />
<strong>Web</strong> content authoring<br />
portlet<br />
<strong>Web</strong> content viewer portlets<br />
Administration portlet<br />
Details<br />
The authoring portlet is used to create and manage web content items.<br />
<strong>Web</strong> content viewer portlets are used to deliver web content within Portal pages.<br />
The administration portlet is used to create and manage web content libraries, define<br />
and manage syndication relationships and define and manage <strong>Web</strong> <strong>Content</strong> Integrator<br />
feeds.<br />
<strong>Web</strong> content libraries<br />
A web content library is used to store a set of web content items. You assign library-level access controls<br />
to determine the default level of access to the items in the library and define the default access to the<br />
authoring portlet of different users and groups.<br />
Elements<br />
Elements either store web content or generate web content. Elements do not exist as free standing items.<br />
You store elements in "container" web content items. For example, menu and navigator elements are used<br />
to generate links between web pages. HTML and rich text elements are used to store HTML. Some<br />
element types can be stored in site areas, content items and components. Other can only be stored as<br />
components.<br />
Item types<br />
Items can be considered as "files" or "documents" and are used to store web content, metadata and access<br />
control information.<br />
Table 210. Item types<br />
Item type Examples Details<br />
Container items Site areas, content<br />
items and components<br />
Site areas and content items represent different sections of a site<br />
framework. You can store more than one element in site areas and<br />
content items. Components store a single element-type.<br />
Folders<br />
Folders are used to group sets of item-types within the different<br />
item-type views in the authoring portlet.<br />
799
Table 210. Item types (continued)<br />
Item type Examples Details<br />
Template items Authoring templates<br />
and presentation<br />
templates<br />
When creating a new content item, an authoring template must first<br />
be selected.<br />
An authoring templates defines:<br />
v which data entry fields are visible on a content item form.<br />
v<br />
the default values for each setting and field on a content item<br />
form.<br />
A presentation template defines:<br />
v the layout of elements and components that are displayed on a<br />
web page.<br />
v the default properties of a web page.<br />
Profile items<br />
Change management<br />
items<br />
Taxonomies and<br />
categories<br />
Projects, workflows,<br />
workflow stages and<br />
workflow actions<br />
When a content item is rendered, the presentation template used to<br />
display the content item is determined by the current template<br />
map. A template map is defined in a site area and consists of a<br />
pairing of an authoring template with a presentation template.<br />
You use categories to profile certain item-types, such as<br />
content-items. A category refers to the subject matter of your<br />
content. You group categories within taxonomies.<br />
You use workflows to control the access to, verification and<br />
eventual approval of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items. When creating a<br />
workflow, you select a set of workflow stages. Workflow actions are<br />
executed upon entering or exiting a workflow stage.<br />
Projects are used to manage changes to a set of items. Not until all<br />
items in a project have been approved and made ready to publish<br />
will all the items in a project be published to the live site.<br />
Site framework<br />
A site framework is a similar concept to the "site map" of a traditional website. Whereas a site map is<br />
based on a directory structure or the links between pages in a website, a site framework consists of a set<br />
of <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong> items. Each site framework consists of a single site area under which a set of<br />
other site areas and content items are grouped.<br />
800 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Reference<br />
View information that will help you use the information center including directory conventions, terms<br />
of use, trademarks, a glossary, and more.<br />
Conventions<br />
Understand the conventions used in the information center to use it more effectively.<br />
The following section provides conventions that can help you interpret the information that is provided<br />
in this information center:<br />
v File names, directories, and commands appear in Courier font. For example:<br />
– File name: install.bat<br />
– Directory: /opt/<strong>Web</strong>Sphere/PortalServer<br />
– Command: startServer <strong>Web</strong>Sphere_Portal<br />
v Variables are either italicized, enclosed in brackets, or both. For example: http://<br />
hostname.example.com:10039/wps/portal, where hostname.example.com is the fully qualified host name of<br />
the machine where <strong>Web</strong>Sphere Portal is running and 10039 is the default transport port that is created<br />
by <strong>Web</strong>Sphere Application Server; the port number may be different for your environment.<br />
v Variables are used to indicate root installation directories. See “Directory structure” for more<br />
information.<br />
v Directories are shown with forward slashes (/), unless operating-system specific information is<br />
provided. On Windows systems, you should use backward slashes (\) when typing at a command line,<br />
unless otherwise noted.<br />
v Operating-system specific information is provided, for example –<br />
– UNIX: ./ConfigEngine.shtask_name<br />
– i: ConfigEngine.sh task_name<br />
– Windows: ConfigEngine.bat task_name<br />
v Tips on how to use specific topics are marked with a green check. For example:<br />
– How to use this planning section<br />
v Links to reference information and external links are marked with one of these icons:<br />
v Most topics include a Related information section that links to other relevant topics. See the last section<br />
for an example.<br />
v When the term UNIX is used, this implies all UNIX-based operating systems that are supported.<br />
Directory structure<br />
This topic shows the naming conventions used to denote the location of files on the servers and the types<br />
of resources you can find in those directories.<br />
v “<strong>Web</strong>Sphere Portal root directory (PortalServer_root)” on page 802<br />
v “<strong>Web</strong>Sphere Portal profile directory (wp_profile_root)” on page 802<br />
v “<strong>Web</strong>Sphere Application Server directory structure (AppServer_root)” on page 805<br />
v “<strong>Lotus</strong> Domino directory structure (domino_server_root and domino_data_root)” on page 805<br />
v “Directories for languages” on page 806<br />
or<br />
801
<strong>Web</strong>Sphere Portal root directory (PortalServer_root)<br />
Throughout this documentation, the installation location for the portal server component of <strong>IBM</strong><br />
<strong>Web</strong>Sphere Portal is noted as PortalServer_root.<br />
For the <strong>IBM</strong> i platform, an additional variable is used to indicate the user data directory. The user data<br />
directory is noted as PortalServer_root_user.<br />
The following information shows the default location if it is not otherwise specified during installation:<br />
AIX /usr/<strong>IBM</strong>/<strong>Web</strong>Sphere/PortalServer<br />
Linux /opt/<strong>IBM</strong>/<strong>Web</strong>Sphere/PortalServer<br />
Solaris<br />
/opt/<strong>IBM</strong>/<strong>Web</strong>Sphere/PortalServer<br />
Windows<br />
C:\<strong>IBM</strong>\<strong>Web</strong>Sphere\PortalServer<br />
<strong>IBM</strong> i<br />
v portal_server_root (ProdData)<br />
– /Q<strong>IBM</strong>/ProdData/<strong>Web</strong>Sphere/PortalServer/V7//Portal<br />
Where is Server, <strong>Content</strong>, or Express<br />
v PortalServer_root_user (UserData)<br />
– <strong>Web</strong>Sphere Application Server Version 7.0 for Base and Express:<br />
- /Q<strong>IBM</strong>/UserData/<strong>Web</strong>Sphere/AppServer/V7/Base/profiles/wp_profile/PortalServer<br />
– <strong>Web</strong>Sphere Application Server Version 7.0 for Network Deployment:<br />
- /Q<strong>IBM</strong>/UserData/<strong>Web</strong>Sphere/AppServer/V7/nd/profiles/wp_profile/PortalServer<br />
<strong>Web</strong>Sphere Portal profile directory (wp_profile_root)<br />
Throughout this documentation, the profile location is noted as wp_profile_root. The following information<br />
shows the default profile location if another location it is not specified during installation:<br />
AIX /usr/<strong>IBM</strong>/<strong>Web</strong>Sphere/wp_profile<br />
Linux /opt/<strong>IBM</strong>/<strong>Web</strong>Sphere/wp_profile<br />
Solaris<br />
/opt/<strong>IBM</strong>/<strong>Web</strong>Sphere/wp_profile<br />
Windows<br />
C:\<strong>IBM</strong>\<strong>Web</strong>Sphere\wp_profile<br />
<strong>IBM</strong> i<br />
v <strong>Web</strong>Sphere Application Server Version 7.0 for Base and Express:<br />
– /Q<strong>IBM</strong>/UserData/<strong>Web</strong>Sphere/AppServer/V7/Base/profiles/wp_profile<br />
v <strong>Web</strong>Sphere Application Server Version 7.0 for Network Deployment:<br />
– /Q<strong>IBM</strong>/UserData/<strong>Web</strong>Sphere/AppServer/V7/nd/profiles/wp_profile<br />
wp_profile is the default profile name but is used here as an example since there may be<br />
multiple profiles with self described or incremental names (for example, wp_profile1,<br />
wp_profile2, and so on).<br />
<strong>Web</strong>Sphere Portal directory structure after installation on Windows and UNIX<br />
<strong>Web</strong>Sphere Portal has the following directory structure after installation.<br />
802 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
PortalServer_root<br />
Root directory for <strong>Web</strong>Sphere Portal<br />
|<br />
+-- ap<br />
|<br />
+-- base<br />
|<br />
+-- bin <strong>Web</strong>Sphere Portal tools<br />
|<br />
+-- bp<br />
|<br />
+-- cmapi<br />
|<br />
+-- doc Javadoc and sample XMLAccess input files<br />
|<br />
+-- ext<br />
|<br />
+-- filesForDmgr<br />
|<br />
+-- firstSteps First Steps Launcher (Windows and Linux only)<br />
|<br />
+-- installableApps Source portlet application files prior to deployment<br />
|<br />
+-- installer<br />
|<br />
+-- jcr Resources for the <strong>Content</strong> Repository<br />
|<br />
+-- license <strong>Web</strong>Sphere Portal license agreement<br />
|<br />
+-- log <strong>Web</strong>Sphere Portal log files<br />
|<br />
+-- lwo<br />
|<br />
+-- lwp04.infra<br />
|<br />
+-- package Response files and utilities for install<br />
|<br />
+-- pcc.api<br />
|<br />
+-- pcc.impl<br />
|<br />
+-- people<br />
|<br />
+-- prereq<br />
|<br />
+-- prereqs.infra<br />
|<br />
+-- properties<br />
|<br />
+-- pzn<br />
|<br />
+-- pzn.ext<br />
|<br />
+-- search<br />
|<br />
+-- shared Shared resources, including runtime JARs, TLDs,<br />
| and other resources.<br />
| The /app subdirectory is the application server’s<br />
| WPSLib shared library for <strong>Web</strong>Sphere Portal<br />
|<br />
+-- theme<br />
|<br />
+-- ui<br />
|<br />
+-- uninstall Resources for uninstalling <strong>Web</strong>Sphere Portal<br />
| and components<br />
|<br />
+-- version Version information for various components<br />
Reference 803
|<br />
+-- wcm Source <strong>Web</strong> application files for web content management<br />
|<br />
+-- wps.properties<br />
<strong>Web</strong>Sphere Portal directory structure after installation on i<br />
<strong>Web</strong>Sphere Portal has the following directory structure after the installation:<br />
ProdData’s PortalServer_root Root directory for <strong>Web</strong>Sphere Portal<br />
|<br />
+-- depcheck Dependency checker files<br />
|<br />
+-- dist Install binary files<br />
|<br />
+-- doc <strong>Web</strong>Sphere Portal<br />
| Information Center and Javadoc |<br />
+-- img Image files<br />
|<br />
+-- license <strong>Web</strong>Sphere Portal license agreement<br />
|<br />
+-- log Log files<br />
|<br />
+-- package Response files and utilities for install<br />
|<br />
+-- uninstall Resources for uninstalling<br />
| <strong>Web</strong>Sphere Portal and components<br />
UserData’s PortalServer_root_user<br />
Root directory for <strong>Web</strong>Sphere Portal user’s data<br />
|<br />
+-- ap<br />
|<br />
+-- base<br />
|<br />
+-- bin <strong>Web</strong>Sphere Portal tools<br />
|<br />
+-- bp<br />
|<br />
+-- cmapi<br />
|<br />
+-- config<br />
|<br />
+-- deployed<br />
|<br />
+-- derby<br />
|<br />
+-- doc <strong>Web</strong>Sphere Portal<br />
| Information Center and JavaDoc<br />
|<br />
+-- ext<br />
|<br />
+-- installableApps WAR files prior to deployment<br />
|<br />
+-- installer<br />
|<br />
+-- jcr Resources for the <strong>Content</strong> Repository<br />
|<br />
+-- log Log files<br />
|<br />
+-- lwo<br />
|<br />
+-- lwp01.infra<br />
|<br />
+-- META-INF<br />
804 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
|<br />
+-- migration Scripts used to assist in migrating from previous releases<br />
| of <strong>Web</strong>Sphere Portal<br />
+-- package Response files and utilities for install<br />
|<br />
+-- pcc.api<br />
|<br />
+-- people<br />
|<br />
+-- prereq<br />
|<br />
+-- prereqs.infra<br />
|<br />
+-- pzn Personalization runtime and resources<br />
|<br />
+-- pzn.ext<br />
|<br />
+-- search<br />
|<br />
+-- shared Shared resources, including runtime JARs, TLDs,<br />
| and other resources.<br />
| The /app subdirectory is the application server’s WPSLib<br />
| shared library for <strong>Web</strong>Sphere Portal<br />
|<br />
+-- theme<br />
|<br />
+-- ui<br />
|<br />
+-- version Version information for various components<br />
|<br />
+-- wizard<br />
<strong>Web</strong>Sphere Application Server directory structure (AppServer_root)<br />
Throughout this documentation, the install location for <strong>Web</strong>Sphere Application Server is noted as<br />
AppServer_root<br />
The following table shows the <strong>Web</strong>Sphere Application Server installation directory:<br />
<strong>IBM</strong> i The install location for <strong>Web</strong>Sphere Application Server is noted as app_server_root and refers to the<br />
UserData path, unless otherwise specified in the topic where you see it. The profile_root variable<br />
below refers to the name given to the <strong>Web</strong>Sphere Application Server profile in use.<br />
<strong>Web</strong>Sphere Application Server profile directory<br />
Throughout this documentation, the location for the <strong>Web</strong>Sphere Application Server profiles is noted as<br />
was_profile_root.<br />
<strong>Lotus</strong> Domino ® directory structure (domino_server_root and domino_data_root)<br />
Throughout this documentation, the install location for the <strong>IBM</strong> <strong>Lotus</strong> Domino server software is noted as<br />
domino_server_root.<br />
For i, the install location for the <strong>Lotus</strong> Domino server software is noted as domino_server_root and refers to<br />
the ProdData path, unless otherwise specified in the topic where you see it.<br />
The following information shows the default location if it is not otherwise specified during installation:<br />
AIX /opt/<strong>IBM</strong>/<strong>Lotus</strong>/<br />
Linux /opt/<strong>IBM</strong>/<strong>Lotus</strong>/<br />
Reference 805
Solaris<br />
/opt/<strong>IBM</strong>/<strong>Lotus</strong>/<br />
Windows<br />
C:\<strong>Lotus</strong>\Domino<br />
<strong>IBM</strong> i<br />
v domino_server_root (ProdData)<br />
– /Q<strong>IBM</strong>/ProdData/<strong>Lotus</strong>/DOMINOrelease_number<br />
The <strong>Lotus</strong> Domino server data directory is noted as domino_data_root.<br />
For i, The <strong>Lotus</strong> Domino server data directory is noted as domino_data_root and refers to the UserData<br />
path, unless otherwise specified in the topic where you see it.<br />
The following information shows the default location of the Domino data directory if it is not otherwise<br />
specified during installation:<br />
AIX /opt/<strong>IBM</strong>/<strong>Lotus</strong>/Domino/data<br />
Linux /opt/<strong>IBM</strong>/<strong>Lotus</strong>/Domino/data<br />
Solaris<br />
/opt/<strong>IBM</strong>/<strong>Lotus</strong>/Domino/data<br />
Windows<br />
C:\<strong>Lotus</strong>\Domino\Data<br />
<strong>IBM</strong> i<br />
v domino_data_root (UserData)<br />
– <strong>Web</strong>Sphere Application Server for Base and Express:<br />
- /Q<strong>IBM</strong>/USERDATA/LOTUS/NOTES<br />
– <strong>Web</strong>Sphere Application Server for Network Deployment:<br />
- /Q<strong>IBM</strong>/USERDATA/LOTUS/NOTES<br />
Directories for languages<br />
The following shows the languages supported by <strong>Web</strong>Sphere Portal and the directories used for storing<br />
locale-specific resources. These directories are used in portlet <strong>Web</strong> application directories and in the<br />
<strong>Web</strong>Sphere Portal enterprise application (themes, skins, and other <strong>Web</strong> application resources).<br />
Table 211. Languages supported by <strong>Web</strong>Sphere Portal<br />
Language (locale)<br />
Arabic<br />
Danish<br />
English<br />
French<br />
Italian<br />
Korean<br />
Polish<br />
Romanian<br />
Slovenian<br />
Turkish<br />
Traditional Chinese<br />
Directory<br />
/ar<br />
/da<br />
/en<br />
/fr<br />
/it<br />
/ko<br />
/pl<br />
/ro<br />
/sl<br />
/tr<br />
/zh_TW<br />
806 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Table 211. Languages supported by <strong>Web</strong>Sphere Portal (continued)<br />
Language (locale)<br />
Directory<br />
Catalan<br />
/ca<br />
German<br />
/de<br />
Spanish<br />
/es<br />
Croatian<br />
/hr<br />
Hebrew<br />
/iw<br />
Dutch<br />
/nl<br />
Portuguese<br />
/pt<br />
Russian<br />
/ru<br />
Swedish<br />
/sv<br />
Ukrainian<br />
/uk<br />
Czech<br />
/cs<br />
Greek<br />
/el<br />
Finnish<br />
/fi<br />
Hungarian<br />
/hu<br />
Japanese<br />
/ja<br />
Norwegian<br />
/no<br />
Brazilian Portuguese<br />
/pt_BR<br />
Slovak<br />
/sk<br />
Thai<br />
/th<br />
Simplified Chinese<br />
/zh<br />
Terms of use<br />
Understand the terms and conditions before you use this publication.<br />
Permissions for the use of publications is granted subject to the following terms and conditions.<br />
Personal Use: You may reproduce these publications for your personal, non commercial use provided<br />
that all proprietary notices are preserved. You may not distribute, display or make derivative work of<br />
these publications, or any portion thereof, without the express consent of <strong>IBM</strong>.<br />
Commercial Use: You may reproduce, distribute and display these publications solely within your<br />
enterprise provided that all proprietary notices are preserved. You may not make derivative works of<br />
these publications, or reproduce, distribute or display these publications or any portion thereof outside<br />
your enterprise, without the express consent of <strong>IBM</strong>.<br />
Except as expressly granted in this permission, no other permissions, licenses or rights are granted, either<br />
express or implied, to the publications or any information, data, software or other intellectual property<br />
contained therein.<br />
<strong>IBM</strong> reserves the right to withdraw the permissions granted herein whenever, in its discretion, the use of<br />
the publications is detrimental to its interest or, as determined by <strong>IBM</strong>, the above instructions are not<br />
being properly followed.<br />
You may not download, export or re-export this information except in full compliance with all applicable<br />
laws and regulations, including all United States export laws and regulations.<br />
Reference 807
<strong>IBM</strong> MAKES NO GUARANTEE ABOUT THE CONTENT OF THESE PUBLICATIONS. THE<br />
PUBLICATIONS ARE PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EITHER<br />
EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF<br />
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.<br />
Notices and trademarks<br />
View the notices and trademarks relevant to this publication.<br />
Copyright <strong>IBM</strong> Corporation 2000, 2010.<br />
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP<br />
Schedule Contract with <strong>IBM</strong> Corp.<br />
This information was developed for products and services offered in the U.S.A. <strong>IBM</strong> may not offer the<br />
products, services, or features discussed in this documentation in other countries. Consult your local <strong>IBM</strong><br />
representative for information on the products and services currently available in your area. Any<br />
reference to an <strong>IBM</strong> product, program, or service is not intended to state or imply that only that <strong>IBM</strong><br />
product, program, or service may be used. Any functionally equivalent product, program, or service that<br />
does not infringe any <strong>IBM</strong> intellectual property right may be used instead. However, it is the user's<br />
responsibility to evaluate and verify the operation of any non-<strong>IBM</strong> product, program, or service.<br />
<strong>IBM</strong> may have patents or pending patent applications covering subject matter described in this<br />
documentation. The furnishing of this documentation does not give you any license to these patents. You<br />
can send license inquiries, in writing, to:<br />
<strong>IBM</strong> Director of Licensing<br />
<strong>IBM</strong> Corporation<br />
North Castle Drive<br />
Armonk, NY 10504-1785<br />
U.S.A.<br />
For license inquiries regarding double-byte (DBCS) information, contact the <strong>IBM</strong> Intellectual Property<br />
Department in your country or send inquiries, in writing, to:<br />
Intellectual Property Licensing<br />
Legal and Intellectual Property Law<br />
<strong>IBM</strong> Japan Ltd.<br />
1623-14, Shimotsuruma, Yamato-shi<br />
Kanagawa 242-8502 Japan<br />
The following paragraph does not apply to the United Kingdom or any other country where such<br />
provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION<br />
PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR<br />
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OR CONDITIONS OF<br />
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some<br />
states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this<br />
statement may not apply to you.<br />
This information could include technical inaccuracies or typographical errors. Changes are periodically<br />
made to the information herein; these changes will be incorporated in new editions of the publication.<br />
<strong>IBM</strong> may make improvements and/or changes in the product(s) and/or the program(s) described in this<br />
publication at any time without notice.<br />
Any references in this information to non-<strong>IBM</strong> websites are provided for convenience only and do not in<br />
any manner serve as an endorsement of those websites. The materials at those websites are not part of<br />
808 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
the materials for this <strong>IBM</strong> product and use of those websites is at your own risk. Licensees of this<br />
program who want to have information about it for the purpose of enabling: (i) the exchange of<br />
information between independently created programs and other programs (including this one) and (ii)<br />
the mutual use of the information which has been exchanged, should contact:<br />
Intellectual Property & Licensing<br />
4205 S Miami Blvd.,<br />
Durham NC 27703<br />
U.S.A.<br />
Such information may be available, subject to appropriate terms and conditions, including in some cases,<br />
payment of a fee.<br />
The licensed program described in this documentation and all licensed material available for it are<br />
provided by <strong>IBM</strong> under terms of the <strong>IBM</strong> Customer Agreement, <strong>IBM</strong> International Program License<br />
Agreement or any equivalent agreement between us.<br />
Any performance data contained herein was determined in a controlled environment. Therefore, the<br />
results obtained in other operating environments may vary significantly. Some measurements may have<br />
been made on development-level systems and there is no guarantee that these measurements will be the<br />
same on generally available systems. Furthermore, some measurements may have been estimated through<br />
extrapolation. Actual results may vary. Users of this document should verify the applicable data for their<br />
specific environment.<br />
Information concerning non-<strong>IBM</strong> products was obtained from the suppliers of those products, their<br />
published announcements or other publicly available sources. <strong>IBM</strong> has not tested those products and<br />
cannot confirm the accuracy of performance, compatibility or any other claims related to non-<strong>IBM</strong><br />
products. Questions on the capabilities of non-<strong>IBM</strong> products should be addressed to the suppliers of<br />
those products.<br />
All statements regarding <strong>IBM</strong>'s future direction or intent are subject to change or withdrawal without<br />
notice, and represent goals and objectives only. This information contains examples of data and reports<br />
used in daily business operations. To illustrate them as completely as possible, the examples may include<br />
the names of individuals, companies, brands, and products. All of these names are fictitious and any<br />
similarity to the names and addresses used by an actual business enterprise is entirely coincidental.<br />
Trademarks and service marks<br />
<strong>IBM</strong>, the <strong>IBM</strong> logo, and ibm.com are trademarks or registered trademarks of International Business<br />
Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be<br />
trademarks of <strong>IBM</strong> or other companies. A current list of <strong>IBM</strong> trademarks is available on the web at<br />
“Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml.<br />
Adobe is either registered trademark or trademark of Adobe Systems Incorporated in the United<br />
States, and/or other countries.<br />
Intel and Itanium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in<br />
the United States and other countries.<br />
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.<br />
Microsoft, Windows, and Windows NT are trademarks of Microsoft Corporation in the United States,<br />
other countries, or both.<br />
UNIX is a registered trademark of The Open Group in the United States and other countries.<br />
Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle<br />
and/or its affiliates.<br />
Reference 809
Glossary<br />
This glossary includes terms and definitions for <strong>IBM</strong> <strong>Web</strong>Sphere Portal.<br />
The following cross-references are used in this glossary:<br />
1. See refers the reader from a term to a preferred synonym, or from an acronym or abbreviation to the<br />
defined full form.<br />
2. See also refers the reader to a related or contrasting term.<br />
To view glossaries for other <strong>IBM</strong> products, go to www.ibm.com/software/globalization/terminology.<br />
“A” “B” “C” on page 811 “D” on page 812 “E” on page 812 “F” on page 813 “G” on page 813 “H” on<br />
page 813 “I” on page 813 “J” on page 813 “L” on page 814“M” on page 814“N” on page 815“O” on page<br />
815“P” on page 815“R” on page 817“S” on page 818“T” on page 819“U” on page 819“V” on page 819“W”<br />
on page 820<br />
A<br />
access control. In computer security, the process of ensuring that users can access only those resources of a<br />
computer system for which they are authorized.<br />
aggregation.<br />
The structured collection of data objects for subsequent presentation within a portal.<br />
Ajax. A design approach and a set of techniques for delivering rich Internet applications (RIAs) using open web<br />
formats, for example, HTML, CSS and JavaScript; and rendering using a browser engine.<br />
Ajax portlet.<br />
server pages.<br />
A normal server side portlet that uses lots of JavaScript and Ajax technologies and less Java and Java<br />
anonymous user.<br />
A user who does not use a valid user ID and password to log into a site.<br />
applet. A program that performs a specific task and is usually portable between operating systems. Often written in<br />
Java, applets can be downloaded from the Internet and run in a <strong>Web</strong> browser.<br />
application server. A server program in a distributed network that provides the execution environment for an<br />
application program.<br />
application template.<br />
Asynchronous JavaScript and XML.<br />
See Ajax.<br />
authenticated user. A portal user who has logged in to the portal with a valid account (user ID and password).<br />
Authenticated users have access to all public places.<br />
authentication. A security service that provides proof that a user of a computer system is genuinely who that<br />
person claims to be. Common mechanisms for implementing this service are passwords and digital signatures.<br />
Authentication is distinct from authorization; authentication is not concerned with granting or denying access to<br />
system resources.<br />
authorization. The process of granting a user, system, or process either complete or restricted access to an object,<br />
resource, or function.<br />
B<br />
B2B.<br />
B2C.<br />
B2E.<br />
See business-to-business.<br />
See business-to-consumer.<br />
See business-to-employee.<br />
810 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
ind. To establish a connection between software components on a network using an agreed-to protocol. In <strong>Web</strong><br />
services, the bind operation occurs when the service requestor invokes or initiates an interaction with the service at<br />
run time using the binding details in the service description to locate, contact, and invoke the service.<br />
bookmark.<br />
A customizable, graphical link to databases, views, documents, <strong>Web</strong> pages, and newsgroups.<br />
business-to-business (B2B).<br />
businesses.<br />
Refers to Internet applications that exchange information or run transactions between<br />
business-to-consumer (B2C). Refers to the subset of Internet applications that exchange information or run<br />
transactions between businesses and consumers.<br />
business-to-employee (B2E).<br />
employees.<br />
A business model that supports electronic communications between a business and its<br />
C<br />
CA.<br />
card.<br />
See certificate authority.<br />
WML document that provides user-interface and navigational settings to display content on mobile devices.<br />
cascading style sheet (CSS). A file that defines a hierarchical set of style rules for controlling the rendering of<br />
HTML or XML files in browsers, viewers, or in print.<br />
certificate authority (CA). A trusted third-party organization or company that issues the digital certificates. The<br />
certificate authority typically verifies the identity of the individuals who are granted the unique certificate.<br />
client side aggregation (CSA).<br />
client.<br />
Aggregation based on JavaScript and XSLT transformations that are executed on the<br />
cloud application. An application that is extended to be accessible through the Internet. Cloud applications use<br />
large data centers and powerful servers that host <strong>Web</strong> applications and <strong>Web</strong> services.<br />
cloud computing. A computing platform where users can have access to applications or compute resources, as<br />
services, from anywhere through their connected devices. A simplified user interface and application programming<br />
interface (API) makes the infrastructure supporting such services transparent to users.<br />
collaboration. The ability to connect customers, employees, or business partners to the people and processes in a<br />
business or organization, in order to facilitate improved decision-making. Collaboration involves two or more<br />
individuals with complementary skills interacting together to resolve a business problem.<br />
collaborative components. UI-neutral API methods and tag libraries that allow developers to add <strong>IBM</strong> <strong>Lotus</strong><br />
collaborative functionality to their portlets.<br />
collaborative filtering. Personalization technology that calculates the similarity between users based on the<br />
behaviors of a number of other people and uses that information to make recommendations for the current user.<br />
collaborative portal. A highly personalized desktop-to-<strong>Web</strong> tool designed for specific audiences and communities of<br />
users that organizes information, applications, and services for effective community building at the corporate level<br />
and for personal use by individuals.<br />
concrete portlet.<br />
(PortletSettings).<br />
A logical representation of a portlet object distinguished by a unique configuration parameter<br />
confirmable methods. Interface methods that exist on each modifiable interface of a portal resource that allow users<br />
to determine whether a modification can be performed or not.<br />
connector. A servlet that provides a portlet access to external sources of content, for example, a news feed from a<br />
<strong>Web</strong> site of a local television station.<br />
consumer portal.<br />
content item.<br />
Reference 811
content management.<br />
Software designed to help businesses manage and distribute content from diverse sources.<br />
content partner.<br />
content provider.<br />
See <strong>IBM</strong> content partner.<br />
A source for content that can be incorporated into a portal page as a portlet.<br />
controller. A modifiable instance of a portal model which allows to modify the topology of the model, create and<br />
delete resources, and create modifiable instances of existing resources.<br />
cooperative portlets.<br />
Two or more portlets on the same <strong>Web</strong> page that interact by sharing information.<br />
content source.<br />
creation context.<br />
A context that defines immutable properties of a resource that you can create<br />
CSS.<br />
See cascading style sheet.<br />
D<br />
DB2.<br />
deck.<br />
A family of <strong>IBM</strong> licensed programs for relational database management.<br />
An XML document that contains a collection of WML cards.<br />
default portal page. The page that displays to a user at initial portal deployment and before the user completes<br />
enrollment. Sometimes used as a synonym for home page.<br />
default public place. A place whose membership automatically includes all portal users and which appears in the<br />
Places selector for every user. A user is always a member of this place.<br />
derived page.<br />
differential page rendering (DPR).<br />
interaction.<br />
Renders only those parts of a portal page that were affected by the a user<br />
document type definition (DTD). The rules that specify the structure for a particular class of SGML or XML<br />
documents. The DTD defines the structure with elements, attributes, and notations, and it establishes constraints for<br />
how each element, attribute, and notation can be used within the particular class of documents.<br />
drawer.<br />
A category of widgets in the <strong>Lotus</strong> Mashups Workshop toolbox that supports drag and drop user actions.<br />
DTD.<br />
See document type definition.<br />
dynamic layout.<br />
Standard portal layout that consists of rows or columns and is persisted in the database.<br />
E<br />
ECM.<br />
See Enterprise <strong>Content</strong> Management<br />
embedded static page.<br />
A static page that is rendered in the content area of the portal.<br />
enrollment.<br />
The process of entering and saving user or user group information in a portal.<br />
Enterprise <strong>Content</strong> Management (ECM). Software and tools designed to enable companies to manage content and<br />
documents, optimize business processes, and enable compliance with an integrated infrastructure.<br />
Enterprise Information Portal. Software developed by <strong>IBM</strong> that provides tools for advanced searching, and content<br />
customization and summarization.<br />
Extensible Markup Language (XML). A standard metalanguage for defining markup languages that is based on<br />
Standard Generalized Markup Language (SGML).<br />
Extensible Stylesheet Language (XSL). A language for specifying style sheets for XML documents. Extensible<br />
Stylesheet Language Transformation (XSLT) is used with XSL to describe how an XML document is transformed into<br />
another document.<br />
812 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
F<br />
federated search. A search capability that enables searches across multiple search services and returns a<br />
consolidated list of search results.<br />
G<br />
group.<br />
1. A collection of users who can share access authorities for protected resources.<br />
2. In places, two or more people who are grouped for membership in a place.<br />
governance. The decision making processes in the administration of an organization. The rights and responsibilities<br />
of these processes are typically shared among the organization's participants, especially the management and<br />
stakeholders.<br />
governance life cycle.<br />
A life cycle that represents the states and transitions that can exist in SOA deployment.<br />
governance processes. A process that ensures that compliance and operational polices are enforced, and that change<br />
occurs in a controlled fashion and with appropriate authority as envisioned by the business design.<br />
H<br />
helper file. A properties file that <strong>Web</strong>Sphere Portal provides to ensure that users specify the correct information that<br />
is needed to complete different types of configuration tasks such as configuring an LDAP user registry or a database<br />
user registry.<br />
home page.<br />
The top-level <strong>Web</strong> page of a portal.<br />
HTML.<br />
HTTP.<br />
See Hypertext Markup Language.<br />
See Hypertext Transfer Protocol.<br />
HTTP over SSL (HTTPS). A <strong>Web</strong> protocol for secure transactions that encrypts and decrypts user page requests and<br />
pages returned by the <strong>Web</strong> server.<br />
HTTPS.<br />
See HTTP over SSL.<br />
Hypertext Markup Language (HTML). A markup language that conforms to the Standard Generalized Markup<br />
Language (SGML) standard and was designed primarily to support the online display of textual and graphical<br />
information, including hypertext links.<br />
Hypertext Transfer Protocol (HTTP).<br />
documents on the <strong>Web</strong>.<br />
An Internet protocol that is used to transfer and display hypertext and XML<br />
I<br />
i-mode.<br />
An Internet service for wireless devices.<br />
<strong>IBM</strong> content partner (content partner).<br />
<strong>IBM</strong> partner that provides syndicated content for portals.<br />
integrity. In computer security, assurance that the information that arrives at a destination is the same as the<br />
information that was sent.<br />
iwidget. An open-source specification that allows for seamless interoperability across various platforms and<br />
products.<br />
J<br />
JavaScript.<br />
A <strong>Web</strong> scripting language that is used in both browsers and <strong>Web</strong> servers. (Sun)<br />
Reference 813
JavaScript Object Notation. A lightweight data-interchange format that is based on the object-literal notation of<br />
JavaScript. JSON is programming-language neutral but uses conventions from languages that include C, C++, C#,<br />
Java, JavaScript, Perl, Python.<br />
Jetspeed.<br />
The open-source portal that is part of the Jakarta project by Apache.<br />
L<br />
label. A node in a portal that cannot contain any content, but can contain other nodes. Labels are used primarily to<br />
group nodes in the navigation tree.<br />
lazy application.<br />
An application whose initialization is deferred until first use.<br />
LDAP.<br />
See Lightweight Directory Access Protocol.<br />
LDAP directory. A type of repository that stores information on people, organizations, and other resources and that<br />
is accessed using the LDAP protocol. The entries in the repository are organized into a hierarchical structure, and in<br />
some cases the hierarchical structure reflects the structure or geography of an organization.<br />
light mode. An operation method that enhances portal performance by improving start-up time and reducing<br />
memory consumption in production environments.<br />
Lightweight Directory Access Protocol (LDAP). An open protocol that uses TCP/IP to provide access to directories<br />
that support an X.500 model and that does not incur the resource requirements of the more complex X.500 Directory<br />
Access Protocol (DAP). For example, LDAP can be used to locate people, organizations, and other resources in an<br />
Internet or intranet directory.<br />
load balancing. The monitoring of application servers and management of the workload on servers. If one server<br />
exceeds its workload, requests are forwarded to another server with more capacity.<br />
M<br />
mandatory place. A shared place, either a public place or a restricted place, in which all portal users must be<br />
members. Only portal administrators can designate a shared place to be a mandatory place. Because membership is<br />
automatic and required, portal users cannot join or leave mandatory places.<br />
membership. The state of being a portal user and a place member. Membership in the portal is controlled by the<br />
administrator during the installation and set up of portal servers. Membership in places is controlled by a place<br />
manager, who determines the level of access for each place member: participant, place designer, or place manager.<br />
mashup. A graphical interface that features two or more reusable <strong>Web</strong> applications (widgets) presenting seemingly<br />
disparate data in an understandable combination for a specific purpose.<br />
meta search. A search across one or more search engines. A meta search engine provides a meaningful subset of<br />
search functionality through an abstraction layer that is generic enough to support a wide variety of search services.<br />
messaging.<br />
time.<br />
A method for communication between programs. Messaging can be synchronous or independent of<br />
middleware. Software that acts as an intermediate layer between applications or between client and server. It is<br />
used most often to support complex, distributed applications in heterogeneous environments.<br />
model view controller (MVC). A software architecture that separates the components of the application: the model<br />
represents the business logic or data; the view represents the user interface; and the controller manages user input or,<br />
in some cases, the application flow.<br />
modifiable.<br />
An interface for modifying portal resources that exist in the read only model.<br />
MVC.<br />
See model view controller.<br />
814 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
N<br />
News Industry Text Format (NITF).<br />
News Markup Language (NewsML).<br />
An XML-based format that defines the structure and content of news articles.<br />
An XML-based format for publishing news-related information.<br />
NewsML.<br />
See News Markup Language.<br />
NITF.<br />
See News Industry Text Format.<br />
node. Used in a wider sense than usual in the portal context, referring to only nodes of the portal navigation<br />
hierarchy.<br />
O<br />
OCS channel.<br />
See open content syndication channel.<br />
open content syndication channel (OCS channel).<br />
An XML-based format for syndicated content.<br />
P<br />
page. A node in a portal that can contain content in addition to labels and other pages. Pages can contain child<br />
nodes, column containers, row containers, and portlets.<br />
participant. A member of a portal place who can visit and use the place. By default, all portal users are participants<br />
in public places.<br />
people awareness. The collaboration feature that provides access to people from various contexts. People awareness<br />
lets you see references to people and contact people by name through the Sametime online status indicator.<br />
Throughout the portal, wherever you see the name of a person, you can view the person's online status, send e-mail,<br />
initiate a chat, or share an application via an electronic meeting.<br />
people finder. A portlet that enables users to find, view information about, and contact individuals in their<br />
organization. Administrators can configure people finder to display information details such as e-mail address, job<br />
title, and location.<br />
person. An individual authenticated by the portal and having a person record in one or more corporate directories.<br />
Persons can be members of places, public groups within the organization's corporate directory, or personal groups<br />
that a user defines.<br />
person card. An interface that displays information about a registered user such as phone number and online status<br />
(if <strong>Lotus</strong> Sametime is enabled), and additional details typically found on a business card. Available actions let you<br />
view the person's complete profile and, depending on how the portal is configured, send e-mail, chat, and link to<br />
<strong>Lotus</strong> Connections features such as Communities, Activities, and Blogs.<br />
person link. A reference to a person's name or a group name that appears with the Sametime online status<br />
indicator. The reference lets you view the person's online status, send an e-mail, start a chat, or share an application<br />
using an electronic meeting, among other actions shown on the person link menu.<br />
personal group. In Sametime Connect, a group of people designated by the user as a group. A user can choose<br />
individuals from the public Directory (public group) and create personal groups, which are then stored locally. Users<br />
can add and remove people from a personal group, whereas the membership of the public group is defined by the<br />
owner of the public Directory.<br />
personalization. The process of enabling information to be targeted to specific users based on business rules and<br />
user profile information.<br />
personalization rule.<br />
pervasive computing. The use of a computing infrastructure that supports information appliances from which users<br />
can access a broad range of network-based services, including Internet-based e-commerce services.<br />
Reference 815
place designer.<br />
place manager.<br />
A member of a place who can edit place layout and bookmarks.<br />
A member of a place who can edit place membership, layout, and bookmarks.<br />
place member. A individual or group who has joined or been granted access to a place. Place members have three<br />
levels of access to a place: manager, designer, and participant.<br />
place template. A format for use in creating a place. The portal provides a set of default templates for creating<br />
various types of places. Portal administrators may allow users to create, modify, and delete new templates.<br />
policy. A set of rules and actions that are required to be performed when certain events or status conditions occur in<br />
an environment. Policies are implemented using the IPL.<br />
port. An end point for communication between applications, generally referring to a logical connection. A port<br />
provides queues for sending and receiving data. Each port has a port number for identification.<br />
port type. An element in a <strong>Web</strong> Services Description Language (WSDL) document that comprises a set of abstract<br />
operations, each of which refers to input and output messages that are supported by the <strong>Web</strong> service.<br />
portal. A single, secure point of access to diverse information, applications, and people that can be customized and<br />
personalized.<br />
portal administration. The place where portal administrators set and maintain basic collaboration permissions, place<br />
records, place membership records, and server settings for companion products for advanced collaboration.<br />
portal artifacts. Stored in the portal file system. All deliverables of software development are usually artifacts<br />
(otherwise referred to as software components).<br />
portal configuration. The Portal Configuration is stored in the portal configuration database. It consists of<br />
configuration entities. Each portal resource is represented by one portal configuration entity in the portal database.<br />
portal extension artifacts.<br />
core portal components.<br />
Artifacts that belong to components that are installed together with the portal but are not<br />
portal farm.<br />
portal member. An individual or group who has a user record in the portal directory (LDAP or other directory) and<br />
can log in to the portal.<br />
portal resource.<br />
portal search.<br />
portal server.<br />
portal site.<br />
portal solution release. The solution that is developed by the customer on top of <strong>Web</strong>Sphere Portal that consists of<br />
portal configurations, portal artifacts, and portal extension artifacts and is shared between multiple users.<br />
portal theme.<br />
portlet. A reusable <strong>Web</strong> module that runs on a portal server. Portlets have predefined roles such as retrieving news<br />
headlines, searching a database, or displaying a calendar.<br />
portlet action.<br />
portlet API. The set of interfaces and methods that are used by Java programs running within the portal server<br />
environment to obtain services.<br />
portlet application.<br />
A collection of related portlets that can share resources with one another.<br />
portlet container.<br />
A column or row that is used to arrange the layout of a portlet or other container on a page.<br />
portlet control.<br />
A portlet registry setting that renders the outer frame for a portlet.<br />
816 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
portlet framework.<br />
environment.<br />
The set of classes and interfaces that support Java programs running within the portal server<br />
portlet palette. A <strong>Web</strong> module that enables users to browse available portlets organized by category, search for<br />
individual portlets, and add them to a portal page by dragging to the desired location.<br />
pre-rendered site.<br />
presentation template.<br />
producer definition.<br />
producer portal.<br />
property extension database.<br />
LDAP user registry.<br />
A database that is used to store additional attributes that cannot be stored in the<br />
provisioning.<br />
The process of setting up and maintaining a user's access to a system.<br />
PSTN.<br />
See public switched telephone network.<br />
public group. A group of individuals, known to all portal users, that the administrator has created or that exists in<br />
the organization's corporate directory. Only administrators can modify and manage public groups.<br />
public place. A shared place that is open to all portal users. The person who creates the place (and who<br />
automatically becomes the place manager) designates it as a public place during place creation.<br />
public switched telephone network (PSTN). A communications common carrier network that provides voice and<br />
data communications services over switched lines.<br />
pure server side portlet.<br />
JavaScript.<br />
A normal server side portlet that uses Java and Java server pages, but usually uses no<br />
R<br />
registered user.<br />
A portal user who has a user ID and password for logging in to a portal.<br />
Representational State Transfer (REST). A software architectural style for distributed hypermedia systems like the<br />
World Wide <strong>Web</strong>. The term is also often used to describe any simple interface that uses XML (or YAML, JSON, plain<br />
text) over HTTP without an additional messaging layer such as SOAP.<br />
REST.<br />
See Representational State Transfer.<br />
restricted place. A shared place that is open to only those individuals and groups whom the place creator (or place<br />
manager) adds to the place's membership list. The person who creates the place (and who automatically becomes the<br />
place manager) designates the place as a restricted place during place creation.<br />
Rich Site Summary (RSS). An XML-based format for syndicated <strong>Web</strong> content that is based on the RSS 0.91<br />
specification. The RSS XML file formats are used by Internet users to subscribe to <strong>Web</strong> sites that have provided RSS<br />
feeds.<br />
role. A job function that identifies the tasks that a user can perform and the resources to which a user has access. A<br />
user can be assigned one or more roles.<br />
RSS.<br />
See Rich Site Summary.<br />
rules-based personalization. Personalization technology that enables you to customize <strong>Web</strong> content based on user<br />
needs and preferences, and business requirements.<br />
Reference 817
S<br />
search center.<br />
search collections.<br />
search service.<br />
SecureWay Directory.<br />
passwords.<br />
An LDAP directory that can store user-related data, such as the user ID, the user name, and<br />
security. The protection of data, system operations, and devices from accidental or intentional ruin, damage, or<br />
exposure.<br />
security manager.<br />
A component that is responsible for authenticating user logins.<br />
server side aggregation (SSA).<br />
Aggregation based on Java server pages that are executed on the Server.<br />
service.<br />
In service-oriented architecture, a unit of work accomplished by an interaction between computing devices.<br />
service description.<br />
HTML.<br />
The description of a <strong>Web</strong> service, which can be defined in any format such as WSDL, UDDI, or<br />
service provider.<br />
A company or program that provides a business function as a service.<br />
service requester. The application that initiates an interaction with a <strong>Web</strong> service. The service requestor binds to the<br />
service using the published information and calls the service.<br />
service-oriented architecture (SOA). A conceptual description of the structure of a software system in terms of its<br />
components and the services they provide, without regard for the underlying implementation of these components,<br />
services and connections between components.<br />
session bean. An enterprise bean that is created by a client and that usually exists only for the duration of a single<br />
client/server session. (Sun)<br />
shared place. A place created for a community of people with a common purpose. Shared places can be public or<br />
restricted. The place creator (who automatically becomes the place manager) specifies whether a place is public or<br />
restricted during place creation.<br />
Short Message Service (SMS).<br />
A service that is used to transmit text to and from a mobile phone.<br />
single sign-on (SSO). An authentication process in which a user can access more than one system or application by<br />
entering a single user ID and password.<br />
site area.<br />
site framework.<br />
site template.<br />
A pre-built sample site that can be used to streamline the process of developing a custom portal.<br />
SMS.<br />
See Short Message Service.<br />
source portlet.<br />
The portlet that sends the information to other portlets.<br />
SSO.<br />
See single sign-on.<br />
staging.<br />
The process of moving solution releases from development to production.<br />
standard portlets.<br />
stand-alone static page.<br />
A static page that renders the complete browser content.<br />
static page.<br />
static layout.<br />
A portal page that references a static layout.<br />
The layout of a page that is based on a plain HTML page that may contain references to portlets.<br />
818 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Struts Portlet Framework.<br />
subscribe.<br />
subscriber.<br />
To register to access data published by another application or system.<br />
The consumer of a business service.<br />
T<br />
TAI.<br />
See trust association interceptor.<br />
target portlet.<br />
The portlet that receives the information from the source portlet<br />
template library. The database, known as the Portal Template Catalog, that stores place template specifications and<br />
portlets forms, subforms, and profiles.<br />
theme. The style element that gives a place a particular look. The portal provides several themes, similar to virtual<br />
wallpaper, from which you can choose when creating a place.<br />
transcoding technology.<br />
<strong>Content</strong> adaptation to meet the specific capabilities of a client device.<br />
transport. The process or protocol mechanism of transferring an XML message or document between parties as part<br />
of a meaningful, reliable exchange. The most common transports for web services are SOAP/HTTP, SOAP/HTTPs,<br />
and SOAP/JMS.<br />
trust association interceptor (TAI). The mechanism by which trust is validated in the product environment for<br />
every request received by the proxy server. The method of validation is agreed upon by the proxy server and the<br />
interceptor.<br />
U<br />
Uniform Resource Identifier (URI). A unique address that is used to identify content on the <strong>Web</strong>, such as a page of<br />
text, a video or sound clip, a still or animated image, or a program. The most common form of URI is the <strong>Web</strong> page<br />
address, which is a particular form or subset of URI called a Uniform Resource Locator (URL). A URI typically<br />
describes how to access the resource, the computer that contains the resource, and the name of the resource (a file<br />
name) on the computer.<br />
Uniform Resource Locator (URL). The unique address of an information resource that is accessible in a network<br />
such as the Internet. The URL includes the abbreviated name of the protocol used to access the information resource<br />
and the information used by the protocol to locate the information resource.<br />
Universal Description, Discovery, and Integration (UDDI). A set of standards-based specifications that enables<br />
companies and applications to quickly and easily find and use <strong>Web</strong> services over the Internet. See also <strong>Web</strong> service.<br />
URI.<br />
URL.<br />
See Uniform Resource Identifier.<br />
See Uniform Resource Locator.<br />
user group.<br />
A group consisting of one or more defined individual users, identified by a single group name.<br />
V<br />
virtual portal.<br />
Reference 819
W<br />
W3C.<br />
WAP.<br />
WAR.<br />
See World Wide <strong>Web</strong> Consortium.<br />
See Wireless Application Protocol.<br />
See <strong>Web</strong> archive.<br />
WAR file.<br />
See <strong>Web</strong> archive.<br />
<strong>Web</strong> archive (WAR). A compressed file format, defined by the Java EE standard, for storing all the resources<br />
required to install and run a <strong>Web</strong> application in a single file.<br />
<strong>Web</strong> content library.<br />
<strong>Web</strong> crawler. A type of crawler that explores the <strong>Web</strong> by retrieving a <strong>Web</strong> document and following the links within<br />
that document.<br />
<strong>Web</strong> service. A self-contained, self-describing modular application that can be published, discovered, and invoked<br />
over a network using standard network protocols. Typically, XML is used to tag the data, SOAP is used to transfer<br />
the data, WSDL is used for describing the services available, and UDDI is used for listing what services are available.<br />
See also SOAP, <strong>Web</strong> Services Description Language.<br />
<strong>Web</strong> service endpoint. An entity that is the destination for <strong>Web</strong> service messages. A <strong>Web</strong> service endpoint has a<br />
Uniform Resource Identifier (URI) address and is described by a <strong>Web</strong> Service Definition Language (WSDL) port<br />
element.<br />
<strong>Web</strong> service interface. A group of operations described by the content of a <strong>Web</strong> Service Definition Language<br />
(WSDL) 1.1 port element. These operations can provide access to resource properties and metadata. (OASIS)<br />
<strong>Web</strong> service semantics (WSDL-S). A technical specification that defines a mechanism to associate semantic<br />
annotations with <strong>Web</strong> services that are described using <strong>Web</strong> Service Description Language (WSDL).<br />
<strong>Web</strong> Services Description Language (WSDL). An XML-based specification for describing networked services as a<br />
set of endpoints operating on messages containing either document-oriented or procedure-oriented information. See<br />
also <strong>Web</strong> service.<br />
<strong>Web</strong> Services Interoperability Organization (WSI). An open industry organization that promotes <strong>Web</strong> services<br />
interoperability across platforms, operating systems, and programming languages.<br />
<strong>Web</strong> Services Policy Framework (WS-Policy). A model and framework for describing the capabilities, requirements,<br />
and general characteristics of a <strong>Web</strong> service as a policy assertion or a collection of policy assertions.<br />
<strong>Web</strong> Services Resource Framework (WSRF). The set of specifications that define the specific rendering of a <strong>Web</strong><br />
Services Resource (WS-Resource), the association of that resource with the <strong>Web</strong> service interface, and the messages<br />
that define the querying and updating of the properties of that resource.<br />
widget. A graphical interface that features two or more reusable <strong>Web</strong> applications (widgets) presenting seemingly<br />
disparate data in an understandable combination for a specific purpose.<br />
wire. To connect two or more components or cooperative portlets so that they work together. In an application,<br />
wiring identifies target services; for portlets changes in the source portlet automatically update the target portlets.<br />
Wireless Application Protocol (WAP). An open industry standard for mobile Internet access that allows mobile<br />
users with wireless devices to easily and instantly access and interact with information and services.<br />
Wireless Markup Language (WML). A markup language based on XML that is used to present content and user<br />
interfaces for wireless devices such as cellular phones, pagers, and personal digital assistants.<br />
workflow.<br />
The sequence of activities performed in accordance with the business processes of an enterprise.<br />
World Wide <strong>Web</strong> Consortium (W3C). An international industry consortium set up to develop common protocols to<br />
promote evolution and interoperability of the World Wide <strong>Web</strong>.<br />
820 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
WML.<br />
WSDL.<br />
See Wireless Markup Language.<br />
See <strong>Web</strong> Services Description Language.<br />
WSDL-S.<br />
See <strong>Web</strong> service semantics.<br />
WSI.<br />
WSRF.<br />
See <strong>Web</strong> Services Interoperability Organization.<br />
See <strong>Web</strong> Services Resource Framework.<br />
X<br />
XML.<br />
XSL.<br />
See Extensible Markup Language.<br />
See Extensible Stylesheet Language.<br />
Reference 821
822 <strong>IBM</strong> <strong>Web</strong> <strong>Content</strong> <strong>Manager</strong>
Index<br />
A<br />
accumulator<br />
configuring 622<br />
when to run 634<br />
always do action 592<br />
C<br />
Category Count<br />
rule example 648<br />
Clickstream Engine<br />
recommendations 618<br />
collaborative filtering 628<br />
coverage 628<br />
E<br />
exclude do action 592<br />
I<br />
is empty/is not empty 593<br />
Item Affinity Engine<br />
item affinity set 618<br />
recommendations 618<br />
item affinity set 618<br />
L<br />
LikeMinds Recommendation Engine<br />
mentors 616<br />
load distribution 622<br />
M<br />
Market Basket Analysis 619<br />
mentor pool 628<br />
mentors<br />
assigning 616, 618<br />
defined 628<br />
lack of 626<br />
Movie Site<br />
Preference Engine example 619<br />
O<br />
otherwise do action 592<br />
P<br />
Preference Engine<br />
recommendations 618<br />
R<br />
rules<br />
Category Count 648<br />
email actions/promotions 596<br />
S<br />
sifter<br />
configuring 622<br />
defined 628<br />
823