08.01.2015 Views

IBM Web Content Manager - developerWorks Lotus

IBM Web Content Manager - developerWorks Lotus

IBM Web Content Manager - developerWorks Lotus

SHOW MORE
SHOW LESS

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("\"", "&quot;").replaceAll("\"","&#39;");<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("\"", "&quot;").replaceAll("\"","&#39;");<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("\"", "&quot;").replaceAll("\"","&#39;");<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 />

&lt;&lt;<br />

&lt;&lt;<br />

&lt;<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 &lt;<br />

design<br />

Next control - active design &gt;<br />

Next control - inactive &gt;<br />

design<br />

Last control - active design &gt;&gt;<br />

Last control - inactive &gt;&gt;<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 "&nbsp;" you need to<br />

replace "&" with "&amp;".<br />

For example:<br />

separator="&amp;nbsp;&amp;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 "&nbsp;" you need to<br />

replace "&" with "&amp;".<br />

For example:<br />

[indentcmpnt offset="0" repeat="&amp;nbsp;&amp;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 />

&current=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 />

&lt;strong&gt;Copyright 2006&lt;/strong&gt;<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 />

&ltp&gt;This is the content&ltp/p&gt;<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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!