What's new in IBM® Domino® Designer 9.0.1 Social Edition?

Information on new features and improvements in Domino® Designer.

This topic lists the new features and changes for Domino® Designer 9.0.1 Social Edition.

Periodic updates to Domino® Designer Help are available on the Web. To download the latest Designer Help file, go to the Documentation Library section of developerWorks® at http://www.ibm.com/developerworks/lotus/documentation/. Click Technical Library then by product, then Domino® Designer, and then, finally, the release you would like to see.

In the area of Domino® Designer and XPages, the changes and additions for this release include:

  • Upgrade of Dojo version from 1.8.1 to 1.8.3
  • Making the following XPages features compliant with Web accessibility requirements:
    • XPages run-time experience
    • XPages Teamroom template web user interface
    • XPages Discussion template web user interface
  • XPages 9.0.1 Mobile Enhancements including the following:
    • Addition of events to be used with the mobile Application Page and mobile Single Page Application controls in the Extension Library
    • Addition of a deviceBean to provide an easy to use and easy to program way of identifying a popular range of mobile and tablet devices. With the information provided by this bean, you will be able to make programming decisions whether to load or unload parts of an application page based on the requesting device or browser.
    • Photo/Video File upload capabilities
    • OneUI IDX Mobile Theme for iOS and Android
    • Default Mobile Theme and Mobile Theme Overrides for iOS and Android
    • Mobile Debug User Agent switch to mimic iOS or Android user agents
  • Dynamic Search (Search Engine Optimization) improvements including the support of search bots to coincide with improved the responsiveness of the wiki pages using the dynamic content feature.
  • Upgrading of XULRunner for XPiNC (XPages in the Notes® Client) to 10.0.6 to improve the rendering of XPages in the Notes® client
  • Improvements to product help indexing
  • Providing the ability to run server-based XPages applications directly on a Domino® server by using the Run server-based XPages applications directly on a Domino server application launch option.
  • XPiNC (XPages in the Notes® Client) Client Side JavaScript Enhancement - Addition of XSP.executeCommand() capability.

  • Update to default Designer JVM.Properties setting to support the higher memory requirements
  • Partial Refresh File Upload has been improved
  • CKEditor has been upgraded from 3.6.6.1 to 3.6.6.2

Refer to the XPages section of this document for more details on some of the XPages items.

Refer to the Programmability, languages, and services section of this document for more details on these type of items.

XPages

Designing and creating software applications that can be used by people with a wide range of abilities and disabilities is a requirement in business world. Creating an accessible application using XPages requires an understanding of the needs of multiple kinds of users, including people with disabilities and mature users with age-related disabilities.

In the area of XPages for this release, extensive changes have been made to help developers create accessible XPages applications and to make the XPages run-time experience more compliant with accessibility requirements.

These items provide a summary of the accessibility compliance changes and additions made for this release.

  • Introduction of a new accessible theme - XPages now supports a theme that complies with accessibility guidelines and requirements. This theme is named oneuiv2.1_blue
  • Obsoleting of the role property - For these controls, the role property is obsolete starting with 9.0.1. By default, the appropriate accessibility compliant value is generated. For compliance with accessibility standards, do not specify a value for this property.
    • xp:dataTable - Data Table
    • xp:fileDownload - File Download
    • xp:viewPanel - View
    • xp:tabbedPanel - Tabbed Panel
    • xp:tabPanel - see Tabbed Panel
    • xp:pager - Pager
    • xp:pagerControl - see Pager
    • xe:dataView - Data View
  • Addition of the accesskey - Accelerator property and tabindex - Tab Index property to the Widget Container control - These properties are new for this control with Release 9.0.1. Refer to the Property reference (Extension Library) section of this guide for more information.
    • xe:widgetContainer - Widget Container
  • Addition of the titleBarLabel - Title Bar property, placeBarLabel - Place Bar property, leftColumnLabel - Left Column Facet property, and rightColumnLabel- Right Column Facet property - These properties are new with Release 9.0.1. It applies to this control(s). Refer to the Property reference (Extension Library) section of this guide for more information.
    • xe:applicationConfiguration - Application Configuration
  • Addition of the ariaLabel - ARIA Label property - This property is new with Release 9.0.1. It applies to these controls. Refer to the Adding controls - Property reference,Adding controls - Control reference, and Property reference (Extension Library) sections of this guide for more information.
    • xe:formtable - Form Table
    • xe:navigator - Navigator
    • xp:pager - Pager
    • xe:pagerAddRows - PagerAdd Rows
    • xe:pagerDetail - Pager Show/Hide Details
    • xe:pagerExpand - Pager Expand/Collapse
    • xe:pagerSizes - Pager Sizes
    • xe:tagCloud - Tag Cloud
    • xe:dataView - Data View
  • Addition of summary - Data Summary property - This property is new with Release 9.0.1. It applies to this control. Refer to the Property reference (Extension Library) section of this guide for more information.
    • xe:dataView - Data View
  • Addition of the headerLinkTitle - Header Link Title property - This property is new with Release 9.0.1. It applies to these controls. Refer to the Property reference (Extension Library) section of this guide for more information.
    • xe:viewExtraColumns - see Extra Columns property.
    • xe:viewSummaryColumn - see Summary Column property.
  • Addition of the imageAlt - Image Alternate Text property - This property is new with Release 9.0.1. It applies to this control. Refer to the Adding controls - Property reference and Adding controls - Control reference sections of this guide for more information.
    • xp:tabPanel - see Tabbed Panel control.
  • Addition of the linkTitle - Link Title property - This property is new with Release 9.0.1. It applies to these controls. Refer to the Property reference (Extension Library) section of this guide for more information.
    • xe:viewExtraColumns - see Extra Columns property
    • xe:viewSummaryColumn - see Summary Column property.
  • Addition of the readonly - Read Only property - This property is new with Release 9.0.1. It applies to this control. Refer to the Adding controls - Property reference and Adding controls - Control reference sections of this guide for more information.
    • xp:label - Label
  • Documentation of requirements for accessibility compliance - These controls have specific requirements for accessibility compliance that have been documented for this release. Refer to the Adding controls - Property reference and Adding controls - Control reference sections of this guide for more information.
    • xp:button - Button
    • xp:checkBox - Check Box
    • xp:checkBoxGroup - Check Box Group
    • xp:dataTable - Data Table
    • xp:dateTimeHelper - Date Time Picker
    • xp:label - Label
    • xp:link - Link
    • xp:message - Display Error
    • xp:radioGroup - Radio Button Group
    • xp:radio - Radio Button
    • xp:Table - Table
    • xp:tabbedPanel - Tabbed Panel
  • Current® controls not tested against the latest accessibility standards - These controls have not been tested against the latest accessibility standards. An alternate accessible path is recommended. Refer to the Adding controls - Property reference,Adding controls - Control reference, and Property reference (Extension Library) sections of this guide for more information.
    • xe:djAccordionContainer
    • xe:djAccordionPane
    • xe:djBorderContainer
    • xe:djBorderPane
    • xe:djButton
    • xe:djCheckBox
    • xe:djComboBox
    • xe:djContentPane
    • xe:djCurrencyTextBox
    • xe:djDateTextBox
    • xe:djextImageSelect
    • xe:djFilteringSelect
    • xe:djNumberSpinner
    • xe:djNumberTextBox
    • xe:djRadioButton
    • xe:djSimpleTextarea
    • xe:djStackContainer
    • xe:djStackPane
    • xe:djTabContainer
    • xe:djTabPane
    • xe:djTextarea
    • xe:djTextBox
    • xe:djTimeTextBox
    • xe:djToggleButton
    • xe:djValidationTextBox
    • xe:djxDataGrid
    • xe:djxDataGridColumn
    • xe:djxDataGridRow
    • xe:dropDownButton
    • xe:dynamicViewPanel
    • xe:inPlaceForm
    • xe:linksList
    • xe:listView
    • xe:listViewColumn
    • xe:popupMenu
    • xe:sortLinks
    • xe:toolbar
    • xe:tooltip
    • xe:tooltipDialog
    • xp:viewColumn
    • xp:viewColumnHeader
    • xp:viewPager
    • xp:viewPanel
    • xp:viewTitle
  • Dynamic content improvements - For this release, the Dynamic Content feature has been improved to support document indexing by search bots not able to execute client-side JavaScript code.

    A new property has been added to the configuration file to let you specify user agent IDs that need to be recognized as web crawlers. If an ID present in the list is contained in the user agent header of the request, a different URL is returned when rendering links or in the location header of a redirect response. The difference is that the # sign is replaced by a ? or an &.

    This occurs only if the content parameter is present in the request. If this check is performed, the result is stored in a session attribute to minimize the performance impact.

    By following the returned URL, a web crawler can then retrieve the document without executing client side JavaScript. This example shows how to use this property:

    # ########################################
    # Search Engine web crawler User-Agent Ids
    # ########################################
    # A comma-separated and lowercase list of Web crawler user-agent Ids. If this property is missing an hard coded list of well known search crawlers is used (Google,Bing,Yahoo). Few keywords can be used with a special meaning
    # <empty>: The feature is disabled and no check will be performed against the user-agent header 
    # <auto>: This keyword is replaced with the list of hard coded search crawlers ids.
    
    #xsp.search.bot.id.list=<empty> (will disable the check) the usual behaviour is followed and no check is performed against the useragent.
    
    #xsp.search.bot.id.list=<auto>,blekkobot (will include google,bing,yahoo and blekko search crawlers in the list of ids to be checked against the user agent, if one of the id is found in the user-agent header, it will be treated as bot and url will be normalize to help indexing. i.e. Avoid use of # sign in URLs)
    

    If this configuration is enabled, the user agent of the Google search bot: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) will be recognized as bot and the alternative behaviour will be followed.

  • Providing the ability to run server-based XPages applications directly on a Domino® server by using the Run server-based XPages applications directly on a Domino server application launch option.

    For this to work, you first must have an account set up in Notes® to give you access to the HTTP server. To create or view Notes® accounts select File -> Preferences -> Accounts in Notes® and make sure it has the correct type (HTTP/HTTPS) and contains the fully qualified hostname that you must use to access the server. If you are using SSO, then the name must match the server name registered with the server exactly. If the hostname cannot be derived accurately from the information in the Notes® workspace, an error may be displayed.

    You should then register the RunOnServer applications that you want to use AND provide a host name to us. To do this go to File > Preferences > XPages Performance > Run On Server to add the application, the server, and the host name.

    You can test this independently of XPages by setting up the account and then typing the HTTP address of the application into the Notes® URL address bar. If the application loads without prompting, then the Notes® embedded browser is passing through the info defined in the Notes® account framework correctly. Also, make sure that the same server name you used in the address bar is stored and used in the RunOnServer preference as the optional host name.

  • XPiNC (XPages in the Notes® Client) Client Side JavaScript Enhancement - Addition of XSP.executeCommand() capability. XSP.executeCommand(commandID, commandParameters) has been added since 9.0. commandID identifies the requested function. commandParams is an object containing arbitrary arg values or can be null. This capability uses the same runtime path as other XPiNC XSP JavaScript commands such as XSP.alert(), XSP.confirm(), XSP.publishEvent(), etc.

    When an XSP.executeCommand() is called, XPages looks through the list of registered command providers. If a contributor is found who handles the command it is called and executed and a result, if required, is returned.

Programmability, languages, and services

In the area of programmability and languages, these additions or changes have been made:

  • Mobile control events - In the area of mobile enhancements, These events have been added to be used with the mobile Application Page and mobile Single Page Application controls in the Extension Library:
    • onOrientationChange
    • onBeforeTransitionIn
    • onAfterTransitionIn
    • onBeforeTransitionOut
    • onAfterTransitionOut

    Refer to this User Guide for more information.

  • deviceBean - Also in the area of mobile application development enhancements, the deviceBean with its associated API has been added for this release.

    In versions prior to this one, XPages provided the context.getUserAgent() ServerSide User Agent API. This API is used to identify the requesting user agent. Doing this helps to assist with server-side management of resources such as CSS and client-side JavaScript. It also helps with application layout and lets you show or hide components within an XPage before sending a response to the requesting user agent.

    Given the popularity of mobile computing, it is now also important to be able to identify multiple user agent types (that is, mobile devices) far beyond the typical desktop browser applications. To help with this task, the new managed bean called the deviceBean has been introduced within the XPages run-time to provide an easy to use and easy to program way of identifying a popular range of mobile and tablet devices directly within ServerSide JavaScript or Expression Language (EL) computed expressions. With the information provided by this bean, you will be able to make programming decisions whether to load or unload parts of an application page based on the requesting device or browser.

    For example, it is possible to identify a mobile device in EL by calling # {deviceBean.mobile} and alternatively in ServerSide JavaScript by calling # {javascript:deviceBean.isMobile()}. The deviceBean also supports an Extension Point so that it can be enhanced in future upgrade packs from IBM® or be tailored to meet the needs of your own custom project.

    The following API is available for this bean:

    • deviceBean.mobile - EL version. Identifies a device as a mobile device.
    • deviceBean.isMobile() - JavaScript version. Identifies a device as a mobile device.
    • deviceBean.tablet - EL version. Identifies a device as a tablet.
    • deviceBean.isTablet() - JavaScript version. Identifies a device as a tablet.
    • deviceBean.getValue() - JavaScript version. Used to access all of the others methods in an alternate way as well as give access to future extensions. For example, it is possible to use getValue('mobile') and have it return the same result as isMobile OR usegetValue('chrome') to return an extension call isChrome() that when using Expression Language can be deviceBean.chrome
    • deviceBean.iphone - EL version. Identifies a device as an iPhone.
    • deviceBean.isIphone() - JavaScript version. Identifies a device as an iPhone.
    • deviceBean.ipad - EL version. Identifies a device as an iPad.
    • deviceBean.isIpad() - JavaScript version. Identifies a device as an iPad.
    • deviceBean.android - EL version. Identifies a device as an Android device.
    • deviceBean.isAndroid() - JavaScript version. Identifies a device as an Android device.
    • deviceBean.blackberry - EL version. Identifies a device as a Blackberry device.
    • deviceBean.isBlackBerry() - JavaScript version. Identifies a device as a Blackberry device.
    • deviceBean.windows - EL version. Identifies a device as a Windows mobile device.
    • deviceBean.isWindows() - JavaScript version. Identifies a device as a Windows mobile device.
    • deviceBean.version['key'] - EL version. Returns the version of the specified key (for example, #{deviceBean.version['iphone']})
    • deviceBean.getVersion('key') - JavaScript version. Returns the version of the specified key (for example, #{javascript:deviceBean.getVersion('iphone');})
    The following code sample provides some examples of using the API available from the deviceBean:
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
    	<xe:singlePageApp id="singlePageApp1"
    		selectedPageName="appPage1">
    		<xe:appPage id="appPage1" pageName="appPage1">
    			<xe:djxmHeading id="djxmHeading1">deviceBean</xe:djxmHeading>
    			<xe:djxmRoundRectList id="djxmRoundRectList1">
    				<xe:djxmLineItem id="djxmLineItem2" label="Mobile"
    					rightText="#{deviceBean.mobile}">
    				</xe:djxmLineItem>
    				<xe:djxmLineItem id="djxmLineItem5" label="Tablet"
    					rightText="#{deviceBean.tablet}">
    				</xe:djxmLineItem>
    				<xe:djxmLineItem id="djxmLineItem1" label="Android"
    					rightText="#{javascript:deviceBean.isAndroid()}">
    				</xe:djxmLineItem>
    				<xe:djxmLineItem id="djxmLineItem7" label="Apple"
    					rightText="#{javascript:deviceBean.getValue
    ('apple')}">
    				</xe:djxmLineItem>
    				<xe:djxmLineItem id="djxmLineItem8" label="Windows"
    					rightText="#{javascript:deviceBean.getValue
    ('windows')}">
    				</xe:djxmLineItem>
    				<xe:djxmLineItem id="djxmLineItem9" label="Blackberry"
    					rightText="#{javascript:deviceBean.getValue
    ('blackberry')}">
    				</xe:djxmLineItem>
    				<xe:djxmLineItem id="djxmLineItem22" label="iPhone"
    					rightText="#{javascript:deviceBean.isIphone()}">
    				</xe:djxmLineItem>
    				<xe:djxmLineItem id="djxmLineItem23" label="iPad"
    					rightText="#{deviceBean.ipad}">
    				</xe:djxmLineItem>
    				<xe:djxmLineItem id="djxmLineItem24" label="iPod"
    					rightText="#{javascript:deviceBean.getValue
    ('ipod')}">
    				</xe:djxmLineItem>
    			</xe:djxmRoundRectList>
    		</xe:appPage>
    	</xe:singlePageApp>
    </xp:view>

In the area of Domino® Access Services (REST APIs), the following additions or changes have been made in this release:

  • Domino® Core Service - This REST API provides access to resources not specific to any one service domain. For example, most applications have a requirement to read information about authenticated user passwords (last change date, expiration date, etc). Since this requirement is not specific to any one particular REST service (calendar, mail, etc.), this feature is included in the Core services. The resources available from the Core services include:
    • password statistics resource (pwstats)
    • nonce resource
  • Domino® Calendar Service - This is a REST API that provides resources and methods to access calendar data. The service represents calendar data in both JSON and iCalendar format.