Pt859tflu b062021
Pt859tflu b062021
Pt859tflu b062021
July 2021
PeopleTools 8.59: Fluid User Interface Developer’s Guide
Copyright © 1988, 2021, Oracle and/or its affiliates.
This software and related documentation are provided under a license agreement containing restrictions on use and
disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement
or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute,
exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or
decompilation of this software, unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be error-free. If you
find any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf
of the U.S. Government, then the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software,
any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and
Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are
"commercial computer software" or “commercial computer software documentation” pursuant to the applicable
Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, reproduction,
duplication, release, display, disclosure, modification, preparation of derivative works, and/or adaptation of i) Oracle
programs (including any operating system, integrated software, any programs embedded, installed or activated
on delivered hardware, and modifications of such programs), ii) Oracle computer documentation and/or iii) other
Oracle data, is subject to the rights and limitations specified in the license contained in the applicable contract. The
terms governing the U.S. Government’s use of Oracle cloud services are defined by the applicable contract for such
services. No other rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management applications. It is
not developed or intended for use in any inherently dangerous applications, including applications that may create a
risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible
to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation
and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous
applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their
respective owners.
Intel and Intel Inside are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used
under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Epyc, and the AMD
logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The
Open Group.
This software or hardware and documentation may provide access to or information about content, products, and
services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all
warranties of any kind with respect to third-party content, products, and services unless otherwise set forth in an
applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any
loss, costs, or damages incurred due to your access to or use of third-party content, products, or services, except as
set forth in an applicable agreement between you and Oracle.
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://
www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
Oracle customers that have purchased support have access to electronic support through My Oracle Support. For
information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/
topic/lookup?ctx=acc&id=trs if you are hearing impaired.
Contents
Preface: Preface..........................................................................................................................................vii
Understanding the PeopleSoft Online Help and PeopleBooks............................................................ vii
Hosted PeopleSoft Online Help.....................................................................................................vii
Locally Installed Help....................................................................................................................vii
Downloadable PeopleBook PDF Files...........................................................................................vii
Common Help Documentation...................................................................................................... vii
Field and Control Definitions....................................................................................................... viii
Typographical Conventions...........................................................................................................viii
ISO Country and Currency Codes................................................................................................viii
Region and Industry Identifiers...................................................................................................... ix
Translations and Embedded Help................................................................................................... ix
Using and Managing the PeopleSoft Online Help................................................................................. x
PeopleTools Related Links..................................................................................................................... x
Contact Us...............................................................................................................................................x
Follow Us................................................................................................................................................ x
Chapter 1: Getting Started with Fluid User Interface Development................................................... 13
Fluid User Interface Overview............................................................................................................. 13
Implementing PeopleSoft Fluid User Interface.................................................................................... 13
Chapter 2: Understanding PeopleSoft Fluid User Interface................................................................. 15
Understanding the Need for a Fluid User Interface............................................................................. 15
Understanding the Characteristics of Fluid Applications.....................................................................16
Understanding How to Build Fluid Applications.................................................................................19
Considerations for PeopleSoft Fluid Application Implementation.......................................................20
Chapter 3: Creating Pages for Fluid Applications.................................................................................23
Creating Fluid Pages.............................................................................................................................23
Creating a New Main Fluid Page.................................................................................................. 23
Creating Other Fluid Page Types...................................................................................................23
Choosing a Fluid Layout Page.......................................................................................................24
Converting Existing Classic Pages to Fluid...................................................................................26
Selecting Fluid Page Types.................................................................................................................. 27
Setting Properties for Fluid Pages........................................................................................................30
Setting Use Properties.................................................................................................................... 30
Setting Fluid Properties..................................................................................................................31
Defining the Layout of the Main Fluid Page....................................................................................... 33
Chapter 4: Defining Components for Fluid Applications..................................................................... 39
Adding Fluid Pages to a Fluid Component..........................................................................................39
Setting Component Properties for Fluid Components......................................................................... 39
Setting Properties on the Fluid Tab............................................................................................... 39
Setting Properties on the Use Tab................................................................................................. 45
Setting Properties on the Internet Tab........................................................................................... 45
Providing Left Navigation Using PT_SIDE_PAGETABS................................................................... 45
Implementing Search for Fluid Components....................................................................................... 47
Understanding Component Search Options for Fluid Applications.............................................. 47
Setting up Real-Time Search for Fluid Components.....................................................................48
Setting up Keyword Search for Fluid Components.......................................................................49
Setting Component Properties for Search Options........................................................................ 50
To configure the context-sensitive help for your PeopleSoft applications to use the Oracle Help Center,
see Configuring Context-Sensitive Help Using the Hosted Online Help Website.
• Application Fundamentals
Most product families provide a set of application fundamentals help topics that discuss essential
information about the setup and design of your system. This information applies to many or all
applications in the PeopleSoft product family. Whether you are implementing a single application, some
combination of applications within the product family, or the entire product family, you should be familiar
with the contents of the appropriate application fundamentals help. They provide the starting points for
fundamental implementation tasks.
In addition, the PeopleTools: Applications User's Guide introduces you to the various elements of the
PeopleSoft Pure Internet Architecture. It also explains how to use the navigational hierarchy, components,
and pages to perform basic functions as you navigate through the system. While your application or
implementation may differ, the topics in this user’s guide provide general information about using
PeopleSoft applications.
Typographical Conventions
The following table describes the typographical conventions that are used in the online help.
. . . (ellipses) Indicate that the preceding item or series can be repeated any
number of times in PeopleCode syntax.
ISO country codes may appear as country identifiers, and ISO currency codes may appear as currency
identifiers in your PeopleSoft documentation. Reference to an ISO country code in your documentation
does not imply that your application includes every ISO country code. The following example is a
country-specific heading: "(FRA) Hiring an Employee."
The PeopleSoft Currency Code table (CURRENCY_CD_TBL) contains sample currency code data. The
Currency Code table is based on ISO Standard 4217, "Codes for the representation of currencies," and
also relies on ISO country codes in the Country table (COUNTRY_TBL). The navigation to the pages
where you maintain currency code and country information depends on which PeopleSoft applications
you are using. To access the pages for maintaining the Currency Code and Country tables, consult the
online help for your applications for more information.
Region Identifiers
Regions are identified by the region name. The following region identifiers may appear in the PeopleSoft
Online Help:
• Asia Pacific
• Europe
• Latin America
• North America
Industry Identifiers
Industries are identified by the industry name or by an abbreviation for that industry. The following
industry identifiers may appear in the PeopleSoft Online Help:
"PeopleTools Product/Feature PeopleBook Index" (PeopleTools 8.59: Getting Started with PeopleTools)
My Oracle Support
Contact Us
Send your suggestions to [email protected]. Please include the applications update image or
PeopleTools release that you’re using.
Follow Us
YouTube
Twitter@PeopleSoft_Info.
PeopleSoft Blogs
PeopleSoft application fluid pages scale gracefully from large screen devices such as laptops and desktops
down to the reduced viewing space of tablets and smartphones. Many commercial websites use a similar
design model where the presentation and layout of information is adjusted dynamically to conform to
the dimensions of the user’s device. The Fluid User Interface design approach gives developers just
this type of control over the user experience. When a larger screen size is detected (a screen with more
“real estate”) the application content will adjust and conform accordingly to fill the space. Similarly, if a
smaller screen size is detected, non-essential information can be removed and the presentation of content
will adjust to “flow” in a very usable fashion.
This documentation focuses on the tools, the approaches, and the techniques that application
implementation teams will use to create, configure, and customize fluid application pages.
Note: The PeopleSoft Fluid User Interface is an evolving technology. As information becomes available
or is requested, PeopleTools will post updates as needed on the following My Oracle Support page:
PeopleSoft Fluid User Interface Supplemental Documentation (Doc ID 1909955.1).
• Application Designer.
• PeopleCode.
• HTML 5.0.
• JavaScript.
With the traditional PeopleSoft application, the interface display is defined in Application Designer using
a fixed layout, based on and bound to a pixel system. In the fixed layout, a developer can meticulously
align fields, labels, group boxes, and so on, and be reasonably assured the page will appear in the browser
running on a desktop or laptop just as it appears in the design-time layout. The traditional PeopleSoft
application development design-time layout provides a WYSIWYG (what you see is what you get)
scenario.
However, the fixed layout does not adapt -- expand or contract-- based on the device or the size of the
screen on which it renders. A classic PeopleSoft application does not display dynamically. While an end
user can access and use a traditional PeopleSoft application with a cellular phone, for example, most
likely the user will need to shrink or expand the display in order to interact with the fields, with maybe
only a small percentage of the page being visible at a time, losing the context of the information on the
page.
With the emergence and popularity of mobile devices, namely tablets and smart cellular phones,
PeopleSoft applications need to display and run on a wide range of mobile devices. For example, a small,
light-weight self-service application must be equally usable on a browser running on a desktop, laptop,
iPhone, Android, iPad, and so on.
To address this business demand, PeopleTools enables you to develop and customize components and
pages for a fluid display when running on supported mobile devices. PeopleSoft applications that have
been developed and enabled for fluid display will appear dynamically, depending on the device and
screen size used for access, all based on a single page layout definition. That is, you create a single page
definition, using the flexible fluid design approach, and it will display as needed on all the different
supported devices, be it an Android phone or iPhone or tablet.
Terms used to describe similar design approaches in the industry include, fluid design, responsive design,
relative layout, and elastic layout, to name a few. For PeopleTools, we refer to this approach as fluid, as
in fluid design, fluid applications, fluid mode and so on. Regardless of the term used, the goal remains
the same, which is to enable organizations to deploy applications to all the devices being used to conduct
business such that the content of the PeopleSoft page resizes and adapts to the size of the browser window
of the device
If you access that same page using a cell phone and view it in landscape mode, it would appear similar to
the following example.
The following example shows how a fluid page may appear on a smart phone in landscape mode.
Notice that the page shrinks to fit the screen size of the device. The elements in the header are the same,
only closer together, and the grid displays only the most critical columns. The user can use typical
gestures, such as swiping (on homepages only), to scroll through the fluid page.
If you access the same page using a mobile phone and view it in portrait mode, you will notice additional
changes as the page further adapts and responds to the adjusted screen display. The PeopleSoft Fluid User
Interface is adaptive in that the system detects the device and generates the page rendering appropriate to
that device, and it is responsive in that the CSS defined for the application responds to user actions on the
client device, such as changing from portrait to landscape mode.
Note: The PeopleSoft Fluid User Interface adaptive qualities require a server trip, while the responsive
qualities do not.
The following example shows a fluid page displayed on a smart phone in portrait mode.
Notice that the system further shrinks the page, while maintaining the fundamental structure.
Related Links
"Working with Fluid Homepages and Dashboards" (PeopleTools 8.59: Applications User's Guide)
"Working with Fluid Pages and Controls" (PeopleTools 8.59: Applications User's Guide)
The following table contains the traditional PeopleSoft application development steps as they pertain to
developing fluid applications.
2. Create fields. Create fields just as you would for a traditional PeopleSoft application. In most cases, the same
fields that already exist would be used for any fluid development projects.
3. Create record definitions. Create records just as you would for a traditional PeopleSoft application. In most cases, the same
records that already exist would be used for any fluid development projects.
4. Build SQL tables. Build SQL tables using the same techniques as for traditional PeopleSoft applications.
5. Create pages. While you still use Application Designer to create fluid page definitions, the approach and layout
used are completely different than what are used for traditional PeopleSoft page development. In
addition, CSS is used heavily for appearance and layout. JavaScript can be used, if required.
6. Create components. Components used for fluid pages must be configured specifically for that purpose. The fluid
component options must be selected and set for fluid pages within that component to display as a
fluid application.
7. Register components. Classic and fluid applications both need to have the components registered using the registration
wizard.
8. Test the application. Use actual mobile phones, tablets, laptops, and desktop computers to test your application.
Note: While you can use device emulators for some preliminary testing, these emulators do not
fully replicate the actual device and its native operating system. In particular, iOS testing requires
an actual iOS device.
Note: The majority of this documentation focuses on creating pages and creating components for fluid
display.
Application Designer is the main development tool used for building both classic and fluid PeopleSoft
applications, and PeopleCode is the main programming language used to interact with component
processing events and implement business logic. However, with fluid applications, the application
implementation teams that will develop or customize PeopleSoft fluid applications will need expertise in
these additional areas (listed in order of importance and recommended experience):
• CSS3
• HTML5
• JavaScript
Important! With the flexibility provided through creating and customizing HTML, CSS, and JavaScript,
it is up to the developer to determine the amount of development work performed outside of the realm
of PeopleTools. For example, PeopleTools cannot implement restrictions on what a developer adds to a
freeform style sheet or to a JavaScript program. Developers customizing such elements need to be aware
of performance and security implications.
Note: After reading this document, your application documentation, and any related information related
to PeopleSoft Fluid User Interface, one very effective way to learn about fluid applications is to use the
fluid applications delivered with your PeopleSoft application as examples. Consider and explore the
intended audience, the capabilities of the pages, the page design, the page controls used, the component
contents and settings, and so on. Especially, pay close attention to how CSS style classes are applied.
In most cases, there is no quick and simple method for converting an existing custom classic application
to a fluid application. Plenty of time should be spent analyzing requirements and discussing design
options and considerations. In some cases, adjusting a classic page following the fluid approach to page
design may be all that's required, while in other cases, you may consider building a new application from
the ground up, perhaps reducing the number of fields and records required, and streamlining the entire
data model.
Converting an application to fluid and bringing with it all the classic application techniques and elements
may result in poor performance and usability on a mobile device. While some of the structural elements
of the application must be analyzed and adjusted for fluid application deployment, such as page layout,
some elements, such as PeopleCode business logic, can be used in either classic or fluid mode with little,
if any, modification.
Before you consider deploying any PeopleSoft applications in fluid mode, it is important to consider the
following items, which may help you to determine if fluid applications are appropriate for your user base
at this time.
Consideration Discussion
Not all applications (currently) are candidates for fluid Currently, the applications that are most suited for fluid
deployment. deployment are those that are already considered streamlined,
self-service type applications. For example, accessing a page
to check a new hire’s job status would be a more appropriate
fluid application as opposed to accessing a component with a
cell phone to complete a new hire’s “add employee” business
process.
Consideration Discussion
Are mobile devices such as cell phones and tablets used If your user base already accesses or has expressed a demand
widely to access PeopleSoft applications at your site? for accessing your PeopleSoft applications using mobile
devices, fluid deployment would be a good option for you.
However, if mobile devices are not part of your user base or
application delivery strategy, while you cannot disable fluid
deployment at the system level, you can direct all users to the
classic homepage at signon. See Setting Device Homepage
Defaults for more information.
Application usage and workload? Pages where there is heavy data entry required would not be
suitable for phones or even tablets. The functional use of the
page must be paramount. Plus, some pages are administrative
in nature.
Does an application require functionality that does not exist in For example, some features, like spell check, trees, and others
the fluid user interface? are not available in fluid. See Page Controls Not Supported in
Fluid Applications for more information.
2. Select Page (Fluid) in the New Definition dialog box, and click OK.
3. Select an initial layout page (template) from the Choose Layout Page and click Choose.
Note: Most main fluid pages are based on the PSL_APPS_CONTENT layout page.
5. Indicate whether you’d like to save the PeopleCode associated with the layout page for your new page
(Yes/No).
Note: Typically, click Yes to include any PeopleCode from the layout page.
6. Define layout and add page controls according to the fluid techniques and guidelines described in this
documentation.
2. Select Page (Fluid) in the New Definition dialog box, and click OK.
3. Select an initial layout page (template) from the Choose Layout Page that corresponds to the page
type that you want to create—for example, select PSL_SIMPLE_SBP to create a fluid subpage.
4. Click Choose and enter the page name in the Save As dialog box.
5. Indicate whether you’d like to save the PeopleCode associated with the layout page for your new page
(Yes/No).
Note: Typically, click Yes to include any PeopleCode from the layout page.
7. On the Use tab, select the page type—for example, select Subpage to create a fluid subpage, or select
Secondary to create a fluid secondary page, and so on.
Important! Do not select the Disable Display in Modal Window When Not Launched by DoModal
Peoplecode check box for fluid secondary pages. Fluid secondary pages must always be displayed in a
modal window.
8. Define layout and add page controls according to the fluid techniques and guidelines described in this
documentation.
To create other fluid pages that cannot be created from a page template:
2. Select Page in the New Definition dialog box, and click OK.
4. On the Use tab, select the page type—for example, select Footer Page. Also, select the Fluid Page
check box.
5. Insert a group box on the page that encompasses the entire page content area.
Related Links
Working with Subpages
Working with Secondary Pages
Important! Do not include a layout page in any component definition. Layout pages are templates only
for the generation of a new fluid page definition.
This example illustrates the layout page options provided by the Choose Layout Page dialog box.
In your new page definition, you may add or remove elements as needed for your purposes. However,
make sure to examine the template pages so that you understand how any existing PeopleCode or CSS
styles affect the interface.
Important! Not all of the delivered layout pages are intended for external usage.
PSL_APPS_CONTENT Use PSL_APPS_CONTENT as the basis for most main fluid pages of type Standard or
Secondary. This layout page contains the outermost group box to act as the overall container for
the fluid page content. This group box has the ps_apps_content style applied, which provides the
outer flexbox necessary for all fluid applications.
PSL_2COLUMN_FLOAT This layout page contains nested layout group boxes inside of the outermost group box that has
the ps_apps_content style applied.
If you’re using this layout page, you need to supply the styling for the child containers based on
your needs.
PSL_CONTENT_TITLE This layout page includes a special Page Title group box to display a page title on the page. Use
this layout page for pages that are displayed inside two-panel wrappers such as activity guides or
master/detail components.
PSL_PANEL_CONTENT This layout page includes a single container having the default styling for the side panel (left or
right panel) usage.
If you’re using this template, you also need to specify your own record/field and make sure the
appropriate role (ARIA) is applied to the outer container for accessibility.
PSL_PANEL_NAV Left (typically) panel usage to contain navigational elements, which control the target page
content. Role (ARIA) automatically applied to indicate that the contents will be navigational in
nature.
Note: After creating a subpage from this layout template, you must change the page type from
Standard to Subpage. See Creating Other Fluid Page Types.
PSL_TWOPANEL Used in PeopleTools 8.54 to provide a two-panel layout, typically with navigation on the left side
and the transaction page on the right.
PSL_USER_PREF Use this layout page for creating user preferences to be included as part of My Preferences.
PSL_USER_PREF_FT Use this layout page for creating a footer page for user preferences.
Related Links
Selecting Fluid Page Types
• Will the application be used on smart phones and tablets as well as laptops and desktop computers,
thereby taking advantage of the responsive and adaptive nature of fluid applications across all form
factors?
• Will the application benefit from easy access via a tile on a homepage or dashboard?
• Or, if the application is administrative in nature, would it benefit from a simpler reworking to make it
classic plus, but consequently foregoing the responsive and adaptive nature of fluid applications?
• For applications that do not require all of the benefits of the responsive and adaptive nature of fluid
applications, rework the classic pages to classic plus.
• For simple classic applications with a simple page structure and few page controls, create a new fluid
component and page, and then copy all of the existing classic page controls into the new fluid page.
• For more complex classic applications with complex page structure, consider starting anew by
redesigning the pages as a fluid application, taking full advantage of all fluid page design features.
Related Links
PeopleSoft Spotlight Series: Developing Fluid Applications
"Reworking Components for Classic Plus Display" (PeopleTools 8.59: Application Designer Developer's
Guide)
When creating a new fluid page or opening an existing fluid page, you can select Page (Fluid) from the
definition list in Application Designer.
The following example shows the Page and Page (Fluid) definition types in the definition list in
Application Designer.
You select the remaining page types for fluid mode, from the Page Type drop-down list on the Use tab of
the Page Properties dialog.
This example shows the fluid page types listed in the Page Type drop-down list on the Page Properties,
Use tab.
The following table provides a brief description of each fluid page type and the layout page to be used
when creating a new page definition.
Standard Page PSL_APPS_ The main fluid page is the main content area, or target page; the main page is used
CONTENT* directly within the component.
The main fluid page contains the outermost group box, which acts as the overall
flexbox container for the fluid page content. This group box has the ps_apps_content
style applied.
Subpage PSL_SIMPLE_SBP Fluid subpages can be used to reduce clutter, group related fields, and segregate
business logic.
Secondary PSL_APPS_ Fluid secondary pages are typically displayed in a modal window. See Implementing
Page CONTENT* Transfers and Modal Windows with PeopleCode.
Header Page NA Page displayed in <header> section of the HTML acting as the banner area fixed at
the top of every page. It does not scroll with the page). The header page appears at the
top of the browser interface over the main page, containing elements used for basic
navigation and orientation, like a back button, page title, home button, search button,
and so on.
Side Page 1 PSL_PANEL_ Page displayed on the left side off the screen, often containing left-side navigational
CONTENT constructs. Users can slide it open and shut.
PSL_PANEL_NAV
Footer Page NA Page displayed in the <footer> section of the HTML at the bottom of the main page,
containing elements related to the end of a transaction, such as a Save button. The
footer page is fixed at the bottom of the content page and does not scroll.
Layout Page NA You can designate a fluid page definition as a layout page for use as a template for
development of new fluid page definitions. Do not include layout pages within a fluid
component definition.
Note: This is a base layout page, which can be used when selecting a new Page (Fluid).
At that time you can select a layout page where the structure will be copied into your
new page. You cannot apply a layout page after you have created a page or if you
create a new a new page (regular).
Search Page NA Page generated in <aside> section containing search pages, which include Find an
Existing Value and Keyword Search.
Note: An Add a New Value page is not provided by the search page definitions
provided by PeopleTools.
Master&Detail NA Displays the transactional fluid page for use within a master/detail component, in
Target page which the master provides the navigation and the detail displays the target content.
For more information on the master/detail approach, see Working with Master/Detail
Components.
Side Page 2 PSL_PANEL_ A side page that appears from the right side of the screen. Users can slide it open and
CONTENT shut. Typically used to contain related content.
*
Typically, PSL_APPS_CONTENT is used to create pages of this type.
The following diagram illustrates the general layout of the various fluid page types.
Note: Not all page types are required to be used. The application content area displays the content
presented by the main fluid page.
Related Links
Choosing a Fluid Layout Page
"GetPageType" (PeopleTools 8.59: PeopleCode Language Reference)
Related Links
"Understanding Page Design and Development" (PeopleTools 8.59: Application Designer Developer's
Guide)
"Creating New Page Definitions" (PeopleTools 8.59: Application Designer Developer's Guide)
This example shows the Use tab in the Page Properties dialog box in Application Designer. The following
descriptions cover the properties that are specific to fluid pages.
Page Type Select the type of page for use in the fluid application, such as
header, footer, search, and so on.
Fluid Page For a page to be displayed and rendered in fluid mode, the Fluid
Page check box must be selected. This is required.
This example shows the Fluid tab in the Page Properties dialog box in Application Designer. The
following descriptions cover the properties that are specific to fluid pages.
Form Factor Style Class Override Use to override any application-specific styles based on the
form factor (device size) of the device accessing the page. Form
factors are represented in these ranges:
factor. In this case, for the Small field in the Form Factor Style
Class Override group box, you enter the override style class to
apply when a small form factor device accesses the page.
Suppress System-Specific Style Important! This setting applies at the page control level only.
Classes At the page level, this setting is ignored.
This example illustrates a classic PeopleSoft page definition in Application Designer, where each page
element is meticulously placed on the Layout tab.
And, despite the obviously more polished presentation in the generated HTML page that displays in the
browser for the user, the layout, spacing, order, color, and so on is for the most part identical between the
design time definition and the runtime presentation.
This example illustrates the same page as depicted in the previous example at run time. The design time
and runtime appearance is practically identical in terms of layout, positioning, sizing, color, font, and so
on.
When performing layout for a fluid page, you will notice that design representation in no way resembles
the design representation for the classic page.
This example shows a fluid page layout at design time in Application Designer, with various elements
contained in nested group boxes and little if any indication regarding how the page might appear at run
time to the user.
The layout of the fluid application is not what you would call a WYSIWYG approach. If user were to
access a page in this state, it would be impossible to complete a transaction. Notice the boxes that are used
to indicate levels of containment and to provide visual cues, making each element from high-level to low-
level a self contained and discrete. Group boxes are used to achieve this effect. The rectangular boxes
within some of the group boxes represent subpages.
This example illustrates the fluid rendering of this very same page definition (above) in a browser.
At a high-level, you can map the rendering in the browser to the layout as:
• The area showing the employee photo is represented in the layout as the group box labeled App
Header.
• The area showing the navigation on the left is represented in the layout as the group box labeled
psc_panel-action.
• The area on the right currently titled Addresses is represented in the layout as the group box labeled
Your Content Sub-Page here. When Addresses is selected from the left hand navigation, it appears in
the content container. When Contact Details is selected, the contact information is displayed in the
content container, and so on.
Note: The blue bar running across the top displays the fluid banner, which is the default PeopleTools, or
system, header page definition (PT_HEADERPAGE). Because it is a separate page definition entirely, it
is not depicted in the layout view of the main page (the content below it) in Application Designer.
While there are many factors contributing to the appearance of a fluid page, which will be discussed in
this document, the main elements of fluid page layout are:
Group boxes Group boxes are the primary control, providing not only
visual cues, but, more importantly, it acts as the container
for all controls and page elements. For example, subpages
must be enclosed in a group box, grids and scroll areas need
to be enclosed in a group box, and so on. Each control is
comprised of two parts: the label and the control – wrapped in
the container of a group box. In fact, the entire page itself must
be contained in one super group box: a requirement for fluid
rendering.
Style sheets While group boxes take on the role of discretely containing
each and every element on a page, the physical placement of
the group boxes within the Layout tab in Application Designer
is largely irrelevant. How and where a page element or control
renders on the end user device is determined by style sheets.
PeopleTools delivers the system-wide PSSTYLEDEF_
FMODE style sheet. You can make custom, free form style
sheets to extend or override the system-wide style sheet.
Both group boxes and free form style sheets are discussed in detail in other sections of this document.
Note: Tab order index is determined only by the order in which the fields and controls appear on the page
from top-to-bottom and left-to-right.
During the page design process, you might want to periodically preview how your page looks in the
browser. How your page appears in Application Designer at design time may look different when viewed
online. This is particularly true for fluid pages, which do not follow the pixel perfect WYSIWYG
paradigm of classic pages. With fluid pages, CSS determines how the page and how the page elements are
displayed to the user. The physical placement of the page elements often has no bearing on how the fluid
page will appear at run time. Therefore, you must either preview fluid pages from Application Designer
or view them in a runtime browser session. You can use the View in Browser menu item in Application
Designer to preview the look of your fluid pages. See "Previewing Fluid Pages" (PeopleTools 8.59:
Application Designer Developer's Guide) for more information.
Note: When using the default system pages, as in the default header page provided by PeopleTools, the
system automatically loads those pages into the component. If you intend to use those pages, they do not
need to be added manually to the component. However, if you have built custom header pages, search
pages, and so on, those pages need to be inserted manually into the component to associate them with that
component so the system loads them at runtime.
Note: Do not include layout pages (templates) within a fluid component definition.
This example illustrates the options on the Fluid tab. You can find descriptions for the options after the
example.
Component Attributes
Fluid Mode Indicates that this is a fluid component. Selecting this check box
is required for fluid rendering.
Layout Only Select when testing the layout of the pages within the
component. When selected the borders of all the group boxes on
the page appear in different colors to illustrate the scope of each
group box container.
Page Navigation in History Enables the system to store the individual pages that are visited
within this component in the Back button history. This can also
be enabled using the SetTransferAttributes PeopleCode built-in
function.
Return to Last Page in History Select to return the user to the last viewed page within a
component after being transferred to a different component.
This setting applies in the event of a transfer between
components. The default behavior when using the Back button
to return from a transfer between components is to display
the initial page of the component, regardless if it was the last
viewed page.
Display on Small Form Factor Select to enable the tile for this component to be displayed on
Homepage fluid homepages and fluid dashboards on small form factor
devices such as smart phones.
No System Header Page Select if you have a custom header page that you want to
display instead of the system header page (the default is PT_
HEADERPAGE).
No System Side Page Select if you have a custom side page for the right panel that
you want to display instead of the system side page. The default,
PT_SIDE2PAGE, defines the layout of the Related Information
panel, which can include fluid related content and simplified
analytics.
Search Type Select the type of search the user will interact with when
accessing the component:
Disable All Actions Select to deselect all header toolbar actions. At runtime, the
system displays a fluid banner containing no buttons.
Logout Select for the Sign Out item to appear in the Actions menu.
Home Select for the Home button to appear on the fluid banner.
Back Select for the Back button to appear on the fluid banner.
Help Select for the Help item to appear in the Actions menu for the
fluid pages in this component.
tab of the web profile to enable any online help (same as for
classic components and pages). For more information on
configuring online help URL for your PeopleSoft system, see
"Configuring General Portal Properties" (PeopleTools 8.59:
Portal Technology).
Notifications Select for the Notifications button to appear on the fluid banner.
When a user clicks the Notification button, the Notification
window shows the list of push notifications for that user, such
as actions and alerts. See "Using the Notifications Panel"
(PeopleTools 8.59: Applications User's Guide) for more
information.
NavBar Select for the NavBar button to appear on the fluid header,
providing users with additional navigation features, such as the
Navigator menu, Favorites, and other NavBar tiles.
New Window Select for the New Window item to appear in the Actions menu.
Related Links
"Working with the Controls in the Fluid Banner" (PeopleTools 8.59: Applications User's Guide)
If a component is a fluid component, then most of the properties on the Internet tab of the Component
Properties dialog box do not apply. For example, none of the Toolbar actions apply.
For more information on the Internet tab off the Component Properties dialog box, see "Setting Internet
Properties" (PeopleTools 8.59: Application Designer Developer's Guide).
Note: In the current release, spell check is not supported at the component level for fluid components. Do
not select the Spell Check toolbar option on the Internet tab.
By default, similar to classic components, the page tabs appear across the top of the page, always visible
to the end user.
This example illustrates the default appearance of page tabs in a fluid component. They appear across the
top of the main transaction page, similar to the classic interface.
This example illustrates adding the delivered PT_SIDE_PAGETABS page definition to a fluid
component. No other configuration, other than inserting this page definition into the component, is
required to achieve left navigation.
This example illustrates the effect of inserting PT_SIDE_PAGETABS into the fluid component. The page
tab navigation appears on the left side panel, which end users can slide in and out when needed.
Related Links
"Working with Search in Fluid Applications" (PeopleTools 8.59: Applications User's Guide)
For any custom fluid component that you create, Oracle recommends that as part of the normal page and
component development, you also create:
• A search definition in the Search Framework for indexing the underlying application data (for
keyword search).
A custom fluid component must employ at least one of the search options. You can employ both options.
If neither search option is configured, you will need to bypass search completely using some other
mechanism (for example, using SearchInit PeopleCode). Otherwise, the system displays an error,
preventing access to the component.
When comparing one search option over the other, consider that the real-time search runs a search on all
the data that is currently stored in the database while the keyword search may contain less current data.
How current the data provided by the keyword search depends on how frequently the search indexes are
updated. If you intend to employ only one of these search options, to ensure the best user experience,
Oracle recommends employing the real-time search so the system reflects real-time data for end users.
In the fluid user interface, the real-time component search page is not populated automatically by the
system. For any custom fluid component that requires real-time, component search capabilities, the
application developer must create a pivot grid, using the component as the data source. The pivot grid
generates the underlying query using the search keys defined on the records in the component and
populates the search page. See "Creating a Component Pivot Grid Model Using the Pivot Grid Wizard"
(PeopleTools 8.59: Pivot Grid) for creating a component-based pivot grid for use with implementing real-
time search for a fluid component.
• Make sure the pivot grid Data Source Type is set to Component and the Component Name under Data
Source reflects your fluid component on Step 1 of the wizard.
• Make sure the Default View is set to Chart Only under View Options on Step 4 of the wizard.
• Under Fluid Mode, Viewer Options on Step 4 of the wizard, select either Grid and List or List for
Result View if you intend to use the Master - Detail search page type or you intend for the search
results to be displayed on a small form factor. Selecting Grid is a valid option for the Standard search
page type and if the fluid component would not be accessed by small form factor devices.
When creating a pivot grid for real-time component search, you can provide default search criteria using
these options:
• In the Pivot Grid Wizard, enter the desired values under Select Query Prompt Values in Step 3.
• In Application Designer on the Record Field > Use tab, set a Default Value for a search key in the
search record.
Note: If you are using multiple options for setting default search criteria, the system imposes this order
of precedence: SearchInit PeopleCode takes precedence over Record Field Default Value settings, and
Record Field Default Value settings take precedence over any Query Prompt Values set in the pivot grid
definition.
Related Links
"Understanding Component Real Time Search" (PeopleTools 8.59: Pivot Grid)
"Creating a Component Pivot Grid Model Using the Pivot Grid Wizard" (PeopleTools 8.59: Pivot Grid)
Create a query for the search definition. See "Understanding Search Definition Queries" (PeopleTools 8.59: Search
Technology).
Create a search definition. See "Creating Search Definitions" (PeopleTools 8.59: Search Technology).
Map the search definition to your fluid See "Mapping Components to Search Definitions" (PeopleTools 8.59:
component. Search Technology).
Create a search category. See "Understanding Search Categories" (PeopleTools 8.59: Search
Technology).
Deploy and build your search index. See "Administering Search Definitions and Search Categories"
(PeopleTools 8.59: Search Technology).
When accessing a component with keyword search enabled, the search category mapped to that
component appears selected in the Global Search box. Running a search on that category returns results
only from the indexes in that category and displays them in PTS_NUI_SEARCH. If the user selects All or
another search category and runs a search, the system treats the search as a global search, and the global
search page (PTS_NUI_GBLSRCH) is used to display results.
• Keyword Search: Search Framework-based search on the search category associated with the
component.
Note: If a fluid component is designed to provide both real-time component search and keyword search,
then real-time component search should be used as the default search option. That is, the Primary Action
setting on Component Properties >Internet tab: should set to Search.
Property Description
Search Type • None: Disables a search page from appearing for a fluid
component. If selected, you need to ensure you have
bypassed the search requirement sufficiently, such as by
using SearchInit PeopleCode or by specifying a search
record that does not have a search key defined.
Property Description
Next/Previous in List Select to display features for end users to use for navigating
through the search results. The Next/Previous icons will
appear in the fluid banner after drilling into a component
search result.
Related Links
Setting Component Properties for Fluid Components
"Setting Component Properties" (PeopleTools 8.59: Application Designer Developer's Guide)
In this example, the search suggestions are retrieved from the PTPORTALREGISTRY index.
Use this process to embed the suggestions search box on a page within a component:
1. Use the Search Framework to create a search definition and category, and then index the searchable
data.
2. Insert a container group box for the suggestions search box. On the Fluid tab, enter
pts_pagesearch_div as an application-specific style class.
4. Define page Activate PeopleCode to associate the search index with the suggestions search box and
set other properties for its operation. For example:
import PTSF_SEARCHUI:SearchbarContext;
Component PTSF_SEARCHUI:SearchbarContext ≻
SetCursorPos(%Page, PTS_INTSRCH_WK.PTS_KEYWORDS);
5. If your use of search suggestions is to allow the user to navigate to a search result, then no additional
PeopleCode is required. However, if you intend to use the selected search result for other purposes
(for example, to create a configuration based on the selected content reference), then you will need to
write additional PeopleCode to make use of the selected result.
The following example is an excerpt of the relevant code demonstrating how to use the value returned
in the PORTALOBJ field to search in the portal registry for the content reference (CREF) associated
with this portal object ID. The code excerpt then hides the container group box created in step 2 above
and reveals a work grid for completing some configuration associated with the CREF.
Component string &PortalObjName, &strPnlGrpName, &strMenuName;
/* The CrefName/Portal obj name of the component selected from the suggestions⇒
will be stored in this field by the search code via their subpage. */
Local string &PortalObjNm = GetPageField(%Page, "PORTALOBJ").Value;
&Portal1 = %Session.GetPortalRegistry();
Local boolean &IsOpen = &Portal1.Open(%Portal);
If &IsOpen And
All(&PortalObjNm) Then
&Cref = &Portal1.FindcrefByName(&PortalObjNm);
End-If;
&Portal1.Close();
Related Links
"SearchbarContext Class Properties" (PeopleTools 8.59: PeopleCode API Reference)
"Working with Suggestions Search" (PeopleTools 8.59: Search Technology)
The default system-wide search, PTS_NUI_SEARCH, is set on the PeopleTools Options page in the
Fluid Mode Properties group box. It is not recommended to override the system-wide search page on
PeopleTools options, as this would affect every fluid component. If you need a custom search page for
your fluid application, set the Search Page Type to None on the Fluid tab of the Component Properties
dialog box, and insert your custom search page within your fluid component so that it loads at runtime
when the component is accessed.
For more information on the Fluid Mode Properties, see Configuring PeopleTools Options for Fluid
Applications.
The page design of PTS_NUI_SEARCH uses the two-panel layout template, and contains numerous
group box containers and subpages. If creating a custom search page based on this template, you can
remove the subpage for the feature you don't want to include on your search page. For example, if you
don’t want to include charts or facets, remove the PTS_NUI_FACETS and PTS_NUI_CHARTAREA
subpages.
The following table lists the feature differences between classic applications and the fluid applications.
Important! Persistent search, the drop-down menu, and other forms of classic navigation are no longer
supported. The default navigational interface for PeopleSoft applications in the current release is based on
the fluid banner, which can be used for both classic and fluid applications.
The following table lists the feature differences between various devices when accessing the fluid user
interface.
Note: The features by device table contains only those features where differences occur on one or more
devices. For any feature not appearing, it can be assumed that feature is available on all supported
devices.
This example illustrates a master/detail application, the Accounts Payable WorkCenter. The left
panel provides navigation while the target content is displayed on the right.
• For a fluid component to be included as target content, it must be defined as a Standard fluid
component.
Important! A fluid wrapper component (that is, a fluid activity guide, another master/detail
component, or fluid navigation collection) can never be included as target content inside a master/
detail component.
• Typically, for each page defined within the fluid component, the outermost group box must include
the ps_apps_content style or another styling appropriate to the page design.
• Unless AJAX transfers are enabled on the master/detail component, the fluid component should not
perform a transfer to another component. This includes transfers via a hyperlink, a push button, or a
PeopleCode program. Such transfers will result in the user exiting the master/detail component. See
AJAX Transfers for more information.
• If the target content is a fluid component that employs an internal two-panel construct (that is, it
either includes a Side Page 1 page, was built from the PeopleTools 8.54 PSL_TWOPANEL layout
page, or was designed with an internal left panel similar to PSL_TWOPANEL), you must enable left
panel collision handling with the slide-out left panel on the master/detail component. See Left Panel
Collision Handling with Slide-out Left Panels for more information.
• The fluid component must have the search page type set to None to be displayed directly as target
content within a master/detail component. Otherwise, if the search page type is set to Standard or
Master/Detail, the fluid component cannot be displayed as target content within a master/detail
component. However, a link for the component can be included in the navigation list as long as the
link destination is programmatically set to a new window or to replace the current window. See
"SetGroupletDisplayIn" (PeopleTools 8.59: PeopleCode API Reference).
• The fluid component definition must not include a Header Page page definition.
• Including a Footer Page page definition within a fluid component displayed as target content inside
of a master/detail component may or may not follow usability standards and could create a confusing
user experience.
• To use a multi-page fluid component in a master/detail component, you can do one of the following to
maintain a clear and consistent user experience:
• Reparent the page tabs to a group box of type Page Tab that is included on each page definition.
• Include PT_SIDE_PAGETABS in the component definition to reparent the page tabs to the left
panel. You must also enable left panel collision handling with the slide-out left panel on the
activity guide. See Left Panel Collision Handling with Slide-out Left Panels for more information.
• Hide the page tabs. You can do so in the component definition by deselecting the Display Folder
Tabs (top) on the Internet tab. Alternatively, you can use delivered styles to hide the page tabs.
• If you want the master/detail component to maintain the same title in the fluid banner regardless
of which page is displayed as target content, then set the title in whichever definition generates the
content for the master list using the PeopleTools-delivered SetSideTopTitle JavaScript function. For
example:
AddOnLoadScript("SetSideTopTitle('" | EscapeHTML("My M/D Component's Title") |⇒
"');");
• If your master/detail component controls the title in the fluid banner (see the preceding bullet item),
for each page defined within the target component, you should include a group box of type Page
Title that is defined to be visible when the page is rendered within a master/detail component. This
Page Title group box provides context that is lost when the page title is not displayed in the fluid
banner. To hide this page title if the page is rendered outside of a master/detail component, use the
psc_hideinmode-notmd style.
• A side page definition, which will display the navigation elements - PT_MDSIDEPAGE in the
example.
• A target page definition, which will display the target content - PT_MDSTARTPAGE_NUI in the
example.
Master/Detail Component
The master/detail component has its component type set to Master/Detail on the Component Properties:
Fluid tab. This component contains two page definitions: a target page for the details and a side page for
the master list.
PeopleTools provides a default master/detail component: PT_MDSTARTPAGE_NUI that you can clone
and modify or use as is.
PeopleTools provides a default master/detail side page: PT_MDSIDEPAGE that you can clone and
modify or use as is.
The inner group box (selected in this example) will display the master list to the user. The group box type
is Layout Only with this style applied: ps_masterlist-group.
PeopleTools provides a default master/detail target page: PT_MDSTARTPAGE_NUI that you can clone
and modify or use as is.
The Target Content group box is placed on the target page and displays the target content at runtime. The
group box type is Master/Detail Target with this style applied: ps_ag-targetcontent.
1. Create a dynamic view record definition—for example, MY_NAVLIST_DVW. Add these fields to the
dynamic view:
• A numeric field for the hyperlink to the target content—for example, LINENUM.
• A numeric field if a dynamic counter needs to be displayed along with the link—for example,
COUNTER.
3. Create a standard page definition—for example, MY_NAVLIST. On the Use tab, select the Fluid Page
check box.
4. Add a group box that covers the entire page. On the Fluid tab, define these properties of the group
box:
6. Add a group box as the first column to the grid. Associate it with the
MY_MDLAYOUT.GROUPBOX1 field. Define these page field properties of the group box:
• On the Fluid tab, for the Group Box Type field, select Layout Only.
• On the General tab, select the Unlimited Occurs Count (rows) check box.
• On the Label tab, click the Display Navigation Bar: Properties button; on the Row Cntr tab, select
the Invisible check box. Click OK to close the dialog box.
• On the Label tab, deselect the following three check boxes: Show Border, Show Row Headings
(runtime), and Show Column Headings (runtime).
• On the Use tab, select the following two check boxes: No Auto Select, and No Auto Update.
• On the Use tab, for the Grid Layout field, select List Grid Layout (Unordered).
• On the Fluid tab, in the Style Classes field, enter psc_list-linkmenu psc_wrap psc_list-has-icon
psc_list-separator-dark psc_border-standard psc_border-bottomonly psc_list-icons-active.
• On the Fluid tab, in the Custom Grid Header field, select 0 | None.
8. Add a push button/hyperlink as the second column in the grid. Associate it with the
MY_NAVLIST_DVW.LINENUM field. Define these properties of the hyperlink:
• On the Fluid tab, for label rendering, select the After Control radio button.
9. If you wish to display a dynamic counter as part of the link to the target content, add an edit box as the
third column in the grid. Associate it with the MY_NAVLIST_DVW.COUNTER field. Define these
properties of the edit box:
• On the Fluid tab, for the Input Type field, select text.
10. Insert a group box around the grid. On the Fluid tab, for the Group Box Type field, select Layout
Only.
This example illustrates the appearance of the MY_NAVLIST page definition after all items have
been added and defined.
11. Add a page Activate PeopleCode program to the page definition. Your PeopleCode program must:
• Get the initial row from the URL parameters and then set the active row in the master list.
• For each link in the master list, add a row to the rowset representing the grid on your page.
• For each link, generate the URL to the target content. For example, use the
GenerateComponentContentURL built-in function.
• Specify this URL as the action URL of the MY_MDLAYOUT.GROUPBOX1 group box field.
• For the MY_NAVLIST_DVW.LINENUM hyperlink field, specify the item number in the master
list, the label to be displayed for this list item, and an optional image.
• For the optional the MY_NAVLIST_DVW.COUNTER dynamic counter, retrieve and set the
dynamic value.
The following example page Activate program creates four items in the master list: a fluid
component, a fluid component with additional URL parameters, a classic component, and a fluid
dashboard. The same optional image is reused for each list item. In addition, the counter for each item
is hard-coded and not dynamically retrieved.
Local string &sNewURL, &sMenu, &sComp, &sPage;
/* Use SetSideTopTitle to maintain the same title in the fluid banner regar⇒
dless */
/* of what is displayed as target content. Use a Message Catalog entry. ⇒
*/
/* AddOnLoadScript("SetSideTopTitle('" | EscapeHTML("My M/D Component's Tit⇒
le") | "');"); */
lassic);
&rs(&n).MY_MDLAYOUT.GROUPBOX1.IsGroupletLabelOnly = True;
&rs(&n).MY_MDLAYOUT.GROUPBOX1.Visible = False;
&rs(&n).MY_NAVLIST_DVW.LINENUM.Value = &n;
&rs(&n).MY_NAVLIST_DVW.LINENUM.Label = "Classic Component 1";
&rs(&n).MY_NAVLIST_DVW.LINENUM.HoverText = "Classic Component 1";
&rs(&n).MY_NAVLIST_DVW.LINENUM.LabelImage = @("Image.CHECKLIST_64");
&rs(&n).MY_NAVLIST_DVW.COUNTER.Value = 1;
End-If;
This example illustrates the rendering of the master list based on the preceding PeopleCode example.
The initial list item (nRow=2) is selected by default when the master/detail application is opened.
12. If you want the master/detail component to maintain the same title in the fluid banner regardless of
which page is displayed as target content, then remove the comment and use the SetSideTopTitle
JavaScript function to set the title.
14. Use the component Registration Wizard to add the component to a menu and permission list.
15. Manually, create a content reference definition to launch your master/detail application:
b. Create the content reference definition in the menu folder where you want the menu item to
appear.
Note: To make your master/detail application available as a tile only and not as a menu item in the
menu structure, create the content reference definition in the tile repository. See "Understanding
Tile Definitions and the Tile Repository" (PeopleTools 8.59: Portal Technology).
Market GBL
Component PT_MDSTARTPAGE_NUI
This example illustrates the fields in the URL Information group box for a master/detail
application based on the delivered PT_MDSTARTPAGE_NUI.
d. Add four additional parameters to the URL definition to identify the component you created to
define your master list:
GPage Specify the name of the page containing the master list.
e. Specify any additional URL parameters required for correct rendering and operation of your
master/detail application—for example, whether AJAX transfers are allowed or whether to use the
slide-out left panel. See Working with Two-Panel Implementations for more information.
• You need to execute additional initialization PeopleCode for the master/detail component that is not in
the PeopleTools-supplied component.
• You need to use more than one grouplet for the navigation list in the left panel.
Related Links
"GenerateComponentContentURL" (PeopleTools 8.59: PeopleCode Language Reference)
• Master/detail components.
AJAX Transfers
AJAX transfers, or asynchronous in-place transfers, use AJAX (asynchronous JavaScript and XML)
technology to allow component-to-component transfers to occur without exiting from the fluid wrapper
(fluid activity guide or master/detail component) that contains the source component from which the
transfer was invoked. AJAX transfers apply to four PeopleCode functions only: Transfer, TransferExact,
ViewContentURLClassic, and ViewContentURLFluid.
When AJAX transfers are not enabled (the default), the action exits the fluid wrapper and the content
replaces the current window. If the transfer function is set to open a new window, the action opens a new
window instead.
When AJAX transfers are enabled, the new content is displayed in the target content area of the fluid
wrapper when the target is set to current window. If the transfer function is set to open a new window, this
new window setting is overridden and the new content is also displayed in the target content area of the
fluid wrapper except when the transfer is from classic content to other classic content. In that case, the
new window setting is honored and the classic content is opened in a new window.
The following diagram illustrates the elements that are presented within a fluid wrapper component:
• Fluid banner — With fluid activity guides, the content of the fluid banner is maintained by the activity
guide. With master/detail components, the content is maintained by the individual components
displayed in the target content area.
• Optional sub-banner — With fluid activity guides, the content of the sub-banner is maintained by the
activity guide.
• Navigation panel — The items in the navigation panel are presented by the fluid wrapper component.
• Target content area — The component selected in the navigation panel is displayed in the target
content area.
Since AJAX transfers are disabled by default, you must explicitly enable AJAX transfers on each fluid
wrapper where the behavior is desired:
• For fluid activity guides including fluid navigation collections, add the following query string
parameter to the URL for the content reference definition that launches the activity guide:
&AJAXTransfer=y
• For master/detail components, add the following query string parameter to the URL for the content
reference definition that launches the master/detail component: &ICAJAXTrf=true
• If you are creating a custom fluid wrapper definition in Application Designer (that is, a custom
master/detail component or a custom activity guide component), use the SetMDAJAXTrf function.
In addition, when you enable AJAX transfers, then you might also need enable a slide-out left panel to
prevent inadvertent left panel collisions:
• For master/detail components, fluid activity guides, and fluid navigation collections, add the
following query string parameter to the URL for the content reference definition that launches the
fluid wrapper: &ICMDListSlideout=true
• If you are creating a custom fluid wrapper component definition, use the SetMDListSlideout function.
Related Links
"SetMDAJAXTrf" (PeopleTools 8.59: PeopleCode Language Reference)
"SetMDListSlideout" (PeopleTools 8.59: PeopleCode Language Reference)
"Transfer" (PeopleTools 8.59: PeopleCode Language Reference)
"TransferExact" (PeopleTools 8.59: PeopleCode Language Reference)
"ViewContentURLClassic" (PeopleTools 8.59: PeopleCode Language Reference)
"ViewContentURLFluid" (PeopleTools 8.59: PeopleCode Language Reference)
Left Panel Collision Handling with Slide-out Left Panels
Two types of contention (or collisions) can occur depending on the implementation of the inner
component that causes the collisions:
• Intra-page collisions occur when the inner component has included its own left panel (that is, a page
type of Side Page 1). Because the fluid wrapper also implements the left panel using Side Page 1,
the collisions occur within this side page. Fluid components developed on PeopleTools 8.55 and later
releases use Side Page 1 to implement the left panel.
• Inter-page collisions occur when the inner component has included the left panel as part of the
page content—for example, in PeopleTools 8.54, the PSL_TWOPANEL layout page provided one
mechanism for creating a left panel. In this case, the collisions occur between the Side Page 1 of the
fluid wrapper and the content of the inner component.
Important! A fluid wrapper component (that is, a master/detail component, a fluid activity guide, or a
fluid navigation collection) can never be displayed inside another fluid wrapper component. Enabling the
slide-out left panel cannot be used to overcome this inflexible limitation.
When the slide-out left panel is enabled and an inner component without its own left panel is displayed,
the left panel of the outer, fluid wrapper is displayed normally; there is no need for a slide-out left panel.
When the slide-out left panel is enabled and an inner component with its own left panel is displayed,
the left panel of the outer, fluid wrapper is initially minimized as shown in the following example. The
navigation links displayed are those from the inner component:
Clicking anywhere on the tab divider (labeled Detail, in this example) will slide open the left panel of the
outer, fluid wrapper. The navigation links displayed are those from the outer, fluid wrapper:
The slide-out left panel is disabled by default. You must enable the slide-out left panel on each fluid
wrapper definition which requires its use:
• For master/detail components, fluid activity guides, and fluid navigation collections, add the
following query string parameter to the URL for the content reference definition that launches the
fluid wrapper: &ICMDListSlideout=true
• If you are creating a custom fluid wrapper, use the SetMDListSlideout function.
In addition, when you enable AJAX transfers, then you might also need to enable a slide-out left panel to
prevent inadvertent left panel collisions.
Related Links
"SetMDListSlideout" (PeopleTools 8.59: PeopleCode Language Reference)
"IsSide1CollisionInterPage" (PeopleTools 8.59: PeopleCode API Reference)
"IsSide1CollisionIntraPage" (PeopleTools 8.59: PeopleCode API Reference)
"IsSide1HasCollision" (PeopleTools 8.59: PeopleCode API Reference)
AJAX Transfers
Important! By default, the form factor trace option is disabled (hidden). To enable the Form Factor
drop-down list to display on the sign-in page, you need to add a custom web property to the current web
profile. Add ShowFormFactor and set it to true. For information on adding custom web profile properties,
see "Configuring Custom Properties" (PeopleTools 8.59: Portal Technology).
Note: Using the PeopleTools form factor trace option is not a replacement for browser emulation, third
party emulation or simulation, or testing on actual devices (smartphones, tablets, laptops, desktops, and
so on). It is provided as a tool to give you quick feedback and testing capabilities while developing fluid
pages.
This example illustrates the Set Trace Flag link displayed on the PeopleSoft Sign-in page.
Once you click the Set Trace Flags link, the Select a Language drop-down list becomes the Form Factor
drop-down list from which you can select the desired form factor.
This example illustrates the Form Factor drop-down list box displaying the options for selecting a form
factor: Small, Medium, Large, and Extra Large.
After you select a particular form factor, the system displays a second browser window rendered in the
dimensions of the form factor you selected, displaying the sign-in page.
This example illustrates the sign-in page assuming the dimensions of the form factor you selected.
After signing in, you can navigate to and view the layout of a fluid page for the form factor you selected.
This example illustrates a fluid page rendering in the form factor you selected from the Form Factor trace
option.
• The control.
• The label.
The system considers the control and the label pairing as a single unit and presents them within a single
container in the HTML—ps_box-<control_type>.
For example, in the case of an edit box, the system generated this structure in the HTML.
This example illustrates the appearance of the HTML used to display a page control.
The system generates default styles, which are styled through the style sheets. Applications can override
or extend style by adding additional styles or replacing the top-level system default style. In the case of
the example above, the application change chose to override the PeopleTools-provided style and it would
remove the ps_box-edit class only in favor of the specified class from the application definition.
Note: The options documented below apply to all fluid page controls. Depending on the control selected
for the page, additional properties may appear. Properties specific to an individual control type are
documented within a section devoted to that control type.
This example illustrates the common page control options available for on the Fluid tab of the Properties
dialog box for the control. Descriptions of the options follow the example.
Form Factor Style Class Override Use to override any application-specific styles based on the
form factor (device size) of the device accessing the page. Form
factors are represented in these ranges:
Suppress System-Supplied Style Select to suppress the system default styles applied by
Classes PeopleTools:
Suppress on Form Factor To prevent a page control from being displayed on a specific
form factor, select the appropriate form factor. If selected, the
page control is never rendered on the client device, similar
to setting a field as invisible for a classic page. Suppression
can improve throughput as the size of the HTML document is
reduced.
Label Rendering The system renders the display of a page control as a combined
unit of both the control and its label. You can specify the
position of the label.
Before Control: Select for the label to appear to the right of the
control.
After Control: Select for the label to appear to the left of the
control.
Control Structure Basic: Select to have the control appear on the fluid page just as
it would appear on a classic page.
Include Labels in Grid Cells If using a tab separator in your grid, you are allowed to generate
field labels within a grid.
Depending on the type of control you are adding to the page, there can be additional options for that
control. Use the following links to find more information for each control.
Related Links
Working with Group Boxes
Working with Other Page Controls
Any fluid page must have at least one over-arching group box to contain all other elements of the page.
Depending on the number of controls and complexity of the page, additional group boxes can be added.
The group box can be used to indicate visual cues but it can also act as a logical grouping of related
controls. Using the fluid properties for a group box, you can override or customize the style at each group
box layer.
The following example illustrates the use of multiple group boxes in the layout of the fluid page, clearly
separating the page elements into distinguishable parts, enabling individual control if needed. For
example, the Page Title group box and the Your Content Sub-Page here group box can have individual
styles applied if needed.
Every Fluid page should start with a group box. Typically, the outer group box for primary or secondary
pages should have the style of ps_apps_content class, though there are exceptions as with 2 panel display.
While the ps_apps_content style would not typically be used in subpages, subpages should reside within a
containing group box as well.
This example illustrates how group boxes are used in the layout of the fluid page, clearly separating the
page elements into distinguishable parts.
In general, it is recommended to be generous in the use of group boxes to layout and organize your page
elements. However, group boxes are not just used for layout purposes. For some controls and widgets, it
is required that they be encapsulated within a group box in order to apply behavior characteristics.
In addition to using group boxes as a container with a header (the default type of group box), a group box
can have additional functions and behaviors. The most common is the usage of a layout type of group
box. Layout group boxes are used to enclose elements for specific layout purposes. Some layouts are
defined by styles only.
Some group boxes have additional types, like the Accordion Vertical group box which allows for multiple
embedded Accordion group boxes to provide the behavior of a mutually exclusive display of group box,
with only one of the Accordion Group boxes expanded and visible at any one time. Group boxes can even
be put inside of grids to create new virtual columns containing multiple stacked fields.
Group boxes are the most critical element with which you should become familiar for fluid page
development.
Application Specific Styles and Suppress On Form Factor are common properties to all fluid controls. See
Setting Properties on the Fluid Tab.
HTML Tag Type Selecting an HTML tag type enables you to create proper
HTML structure as defined by HTML specifications.
Draggable Indicates that content can be dragged out of the group box area.
Users initiate drag and drop by using touch on touch screen
devices and by using the mouse for desktops and laptops.
Droppable Indicates that content can be dragged into the group box area.
Gestures Select for group boxes where the drag, drop, and swipe gestures
need to be available. Use to limit the scope of the drag, drop
and swipe features so that these events are set and invoked
efficiently.
• Vertical: Display the group box with a scroll bar on the right
side, running top-to-bottom.
Scroll Sizing by Style Indicates that the size of the scroll will be controlled by style.
• The default HTML tag used for group box is “div,” which you can override with the HTML Tag Type
option.
• You can set the group box as Section and Article elements.
• Set the parent group box container as Accordion Vertical for vertical accordion behavior (up and
down) or Accordion Horizontal for horizontal accordion behavior (left and right).
• Set the children group boxes (the group boxes that will be the recipient of the expanding and
collapsing behavior) as Accordion Group Boxes.
Note: Horizontal Accordion group boxes should not be used in the current release. It is reserved for
internal use.
This example illustrates that when creating an accordion construct, the outer group box is assigned the
Accordion Vertical group box type, and the content within resides in group boxes of type Accordion
Group Box.
This example illustrates how an accordion group box appears initially, after page load, with all sections
collapsed, by default.
This example illustrates how one section can be expanded at a time, showing the page content within,
while keeping the other sections collapsed, saving display space.
• The label set for the group box will be ignored at runtime, but can be used at design time for
reference.
You can use the Custom Header Left/Middle/Right/Bottom group box types to reparent custom controls
to the default header. You will notice that the default PT_HEADERPAGE header page definition contains
a left box, middle box, right box and a bottom box. Each of these group boxes also contains a Custom
group box; these correspond directly to the Custom Header group box types and are used to inject custom
application controls into the header page sections. On your page definition, create Custom Header Left/
Middle/Right/Bottom group box types as needed for your custom controls. At runtime, the content of the
Custom Header group boxes will replace the content of the related Custom group box in the header page.
Note: During page rendering, the system identifies the first focusable field based on the organization of
the page definition and places the cursor there unless overridden by SetCursorPos PeopleCode. When
adding custom buttons to the header of a primary page or a secondary page (for example, when using any
of the Custom Header group box types), place the group box with the custom buttons at the bottom of
your page definition. This will prevent the custom button from being identified by the system as the first
focusable field.
Alternatively, if you do not want to use the default system header page, you can create your own custom
header page.
<fieldSet>…</FieldSet>
The Collapsible Data Area option should not be used for related field group boxes.
This example illustrates setting the Group Box Type value to Related Content,, which then displays the
Autosize check box.
The following procedure provides an example of adding embedded related content to your fluid page.
You will complete the first task in Application Designer and then the final task using the Manage Related
Content Service component in the browser.
1. Insert a group box on your fluid page in the general position you would like to display embedded
related content.
2. Double-click the group box to open the Group Box Properties dialog box. Then, on the Fluid tab, set
the Group Box Type to Related Content.
3. For interactive embedded related content, you can select the Autosize check box if you always want
the content to be fully visible; for non-interactive embedded related content, leave this check box
deselected.
4. (Optional) Apply styling, if needed, to this group box using styles. Recall that the system applies
default styles, and you would only require additional styling to override or enhance the default styling.
One of the options for styling is to override the default sizing. If no additional styling is specified,
then the embedded related content consumes the default size, which depends on the container or page.
Enter styles in the fields in the Application-Specific Styles area. For example, to use less than the full
width of the container or page, enter the percentage of the width. For example: psc_width-80pct.
5. Select the Label tab and enter a descriptive label to identify this related content group box as a drop
zone. This label is not rendered at run time, but it will help at design time by:
• Providing a label for the drop zone during the related content configuration task.
This example illustrates a related content group box added to a fluid page with a label for
identification as an embedded related content drop zone.
Note: When a related content group box is configured in this manner, it can be used for embedded related
content only. To create a related content group box that can be used for either dynamic subpages or
embedded related content, see "Inserting Configurable Drop Zones" (PeopleTools 8.59: Application
Designer Developer's Guide).
2. Click the Assign Related Content to an Application Page link and select the content reference
associated with the component for your fluid page.
3. On the Configure Related Content page, configure the embedded related content in the Page Level
Related Content group box as described in "Assigning Related Content to Fluid Components and
Pages" (PeopleTools 8.59: Portal Technology).
The following example illustrates configuration of embedded related content on a fluid page.
Related Links
"Fluid Related Content" (PeopleTools 8.59: Portal Technology)
"Assigning Related Content to Fluid Components and Pages" (PeopleTools 8.59: Portal Technology)
"Previewing Fluid Pages" (PeopleTools 8.59: Application Designer Developer's Guide)
This example illustrates where you enable group box layout testing on the Component Properties dialog
box, by selecting Layout Only.
At run time, the system displays the fluid page in the browser using different colored boxes to depict the
scope of each group box on the page, providing visual indication for you to verify the scope and contents
of each group box container.
This example illustrates the different colored boxes indicating the scope and coverage of each group box
using the My Preferences page (PTGP_USER_PERS_FL).
In general, adding page controls to fluid pages is comparable to adding page controls to a classic page,
except for using CSS styles to position the control and the obvious look and feel differences at runtime.
The content in the this topic call out key differences with regard to fluid development. You should be
well versed in development of classic PeopleSoft applications and all of the various page control options
provided by Application Designer prior to beginning a fluid development or customization project.
Combined, these properties enable lazy scrolling on fluid grids; see Enabling Lazy Scrolling for
Scrollable Grids for more information. However, unlike classic grids, no separate page controls are
displayed for these features.
• Find.
• Download to Excel.
• Personalize Columns – Select to display the Personalize button in the grid header. The Personalize
button allows users to change the order of grid columns, hide columns, and specify the sort order
on up to three columns.
• • Save Sort – Select to display the Sort button in the grid header. The Sort button allows users to
specify a sort on one column and save this sort personalization.
• The Show Column When Cells Hidden check box is selected on the grid’s Use tab.
In addition, do not enable the Personalize property on a fluid grid if the page or component includes
multiple grids based on the same record except when you implement a common list of grid columns
across all grids using this record and you restrict the sort to only those common columns.
These features are not supported and are ignored (if enabled) on fluid grids:
• Footer.
For more information on setting grid label properties, see "Setting Grid Label Properties" (PeopleTools
8.59: Application Designer Developer's Guide)
For more information on selecting a grid layout and setting other grid use properties, see "Setting Grid
Use Properties" (PeopleTools 8.59: Application Designer Developer's Guide).
Scroll Sizing by Style Select to override the system default, automatic scroll container
sizing. If you use this option, you must control the scroll
container sizing through a custom style. If you select this option,
be aware of these items:
• If the custom style does not control the scroll container size
successfully, the scroll may not appear or work as desired.
Include Labels in Grid Cells Select this option to generate field labels within grid cells when
you’re using list grids, div grids, or flex grids with group boxes
to group fields, or when you have a tab separator in your grid.
Note: In some situations, such as when displaying a page on a smart phone, you may want grid scrolling
disabled. Add the psc_noscroll style to Small in the Form Factor Style Class Override group box to
disable scrolling for that grid on small form factor devices. Do not disable scrolling for lazy scroll grids.
• Persist in menu.
Related Links
"Working with Fluid Grids" (PeopleTools 8.59: Applications User's Guide)
1. On the Grid Properties > General tab, set the Occurs Count to the number rows to be sent to the
browser when the grid appears initially.
2. On the Label tab, in the Header Navigation Bar Properties for that grid, make sure the Invisible option
is clear for these property tabs:
• Previous
• Next
• View All
3. On the Use tab, in the Grid Style group box, select the Vertical check box.
Note: Collapsible data areas are not supported for fluid scroll areas.
Application-Specific Styles: Style Similar to classic pages, when the character counter is enabled,
Classes it is displayed beneath the bottom right corner of the long edit
box. If you want the character counter to be displayed beneath
the bottom left corner, use the psc_counter-left style. Oracle
recommends that you do not use a psc_control-width*pct style
to control the width of the long edit box itself because you
will then need to develop and apply custom styling to get the
character counter aligned with the long edit box.
Place Holder Text Display default, place holder, text in the edit box as follows:
• Static: Select to enable the Static Text box, and enter the
desired text.
HTML example:
Input Properties Select the expected data type for users to input. This sets the
HTML input type parameter.
Setting input types for forms allow for better input control and
validation for various data types, including:
• text
• date
• datetime
• number
• range
• search
• time
• url
Note: The Input Properties setting does not apply to long edit
boxes.
Note: On fluid pages, do not enable spell check on long edit boxes that also have the rich text enabled.
Note: The Show Label option is not supported for edit boxes on fluid pages.
Note: The Display in Modal Window option is not supported for long edit boxes on fluid pages.
Therefore, the character limit counter cannot be displayed for long edit boxes in fluid grids.
Note: Browser rendering and HTML 5 rendering may change after the publication of this document.
When setting Input Type to number, consider that HTML 5 restricts the data that can be used as input or
displayed for number fields to the following set of characters:
• 0 through 9.
Adding additional characters (such as a currency symbol, a thousand’s separator, and so on) or additional
field formatting is not supported for a field with the Input Type set to number. For example, if you set
Input Type to number, the numeric keyboard will be displayed by default for that field on touch devices,
however you also introduce the HTML 5 number field character restrictions. In this case, any special
characters or formatting applied in Edit Box Properties, field definition formatting, or PeopleCode (such
as currency symbols, thousands separators, and so on) will not be displayed or accepted as input for that
field.
On the other hand, if you want to allow additional formatting or characters for numerical values, then set
the Input Type to text, keeping in mind that with the Input Type set to text you lose the device/browser-
specific representation (such as the numeric keyboard for example).
A general recommendation would be that you should only set a field's Input Type to number if the
underlying field definition Field Type is set to Number in Application Designer, or if the Field Type is set
to Character, you have also set the Format Type to Numbers Only.
Related Links
"Using Edit Boxes and Long Edit Boxes" (PeopleTools 8.59: Application Designer Developer's Guide)
When using subpages, you will notice that the footprint is small in terms of the space they consume on the
page that includes the subpage. Every subpage control must be enclosed by a group box on the primary
page where the subpage has been included.
Finally, subpages can be nested—that is, one subpage can include a subpage control for another subpage,
and so on.
Related Links
Creating Other Fluid Page Types
Unlike classic secondary pages, fluid secondary pages must always be displayed in a modal window.
When creating a fluid secondary page:
Note: Creating your page in this manner applies the ps_apps_content style to the outermost group box
container on the page.
3. On the Use tab of the Page Properties dialog box, set the Page Type to Secondary Page.
4. On the Use tab, determine whether to retain settings for PeopleTools-produced buttons:
Important! Do not select the Disable Display in Modal Window When Not Launched by DoModal
Peoplecode check box for fluid secondary pages. Fluid secondary pages must always be displayed in a
modal window.
• Deselect the OK & Cancel buttons check box if you plan to add custom button definitions directly
to the secondary page definition.
Note: On fluid modal secondary windows, the OK button is actually rendered with the label
Done.
• Deselect the Close Box check box when the OK & Cancel buttons check box is selected or when
you plan to add a custom Cancel button directly to the secondary page definition.
This item renders an X in the upper left corner of the modal window that can be used to cancel
and close the window.
5. Set an appropriate minimum size for the modal window for each form factor, which is inclusive of its
title bar. Specify a size that is neither too small nor too large for the content you are displaying in the
modal window. Otherwise, the modal window will be rendered incorrectly, sometimes with scroll bars
and sometimes not.
Oracle recommends that you use styles to set the minimum size for the modal window. Specify styles
on the Fluid tab of the Page Properties dialog box.
For example, page-secmin30x25em sets the minimum size to 30 ems wide by 25 ems tall:
Typically, modal windows on small form factor devices should occupy the full screen. Therefore, no
style override was specified in the preceding example.
Note: You will encounter some Oracle-delivered fluid applications that set width and height in
PeopleCode using modal options. Nevertheless, the recommended approach is to use styles as stated
here.
• If ps_apps_content is applied to another group box within the page, for each fixed group box, apply
one of these styles:
• For a fixed horizontal area (for example, at the top or bottom), add the psc_modal-addheight style
to the container group box to add the height of the group box to the computed modal size.
• For a fixed vertical area (for example, at either side), add the psc_modal-addwidth style to the
container group box to add the width of the group box to the computed modal size.
• Add the psc_modal-addall style to the container group box to add both the height and the width of
the group box to the computed modal size.
• If you have a scrollable area but are not using the ps_apps_content style, then apply the ps_scroll-
target to this group box. Then, if you have other fixed areas on the page, see the usage notes above for
psc_modal-addheight, psc_modal-addwidth, and psc_modal-addall.
Related Links
Creating Other Fluid Page Types
• Select the HTML Tags Only option on the HTML tab of the HTML Area Properties dialog box for
performance reasons. This limits the processing and parsing tasks that the system needs to perform,
especially in the case of large grids containing numerous input fields.
• Do not reference external JavaScript or external style sheets in the HTML area.
The default (Advanced) shows the actual translate values (On/Off, Active/Inactive, whatever they happen
to be). With Basic selected, the system shows just a check box, similar to classic rendering.
Label positioning can be important with these options, as you typically want labels to appear after a
standard check box but before the control with the Advanced option selected.
This example illustrates the differences in rendering and label placement of the Advanced and Basic
Control Structure settings for check boxes. The Advanced selection shows the toggle switch, while the
Basic selection displays a more standard check box.
• Home
• Sign Out
• NavBar
• Add To
• Search
You can create tool bars containing push buttons that appear in custom locations, such as sidebars for
example, using your own actions, if needed. Push buttons are not required to appear only in the toolbar at
the top of the page. Options that can be found on the Use tab that may also be of interest for fluid pages
include:
• Execute SearchSave Event: When a user runs a search, the system saves the page data prior to running
the search so it is not lost. This option applies only to the search button, not every button on the page.
Note: For a button to display an image and text (a combination button), on the Label tab, select Both for
the Label Type, then specify the Alt tag for image and Label Image.
Note: The Open in New Window and Replace Current Window options on the Push Button/Hyperlink
Properties dialog box Use tab are not supported for fluid pages. To open a page in a new window for a
fluid page, use PeopleCode, such as ViewURL or ViewContentURL.
This example illustrates the static text control represented in the generated HTML for a fluid page.
This example illustrates the static image control represented in the generated HTML for a fluid page.
For more information, see "Fluid Mode Considerations for Charts and Gauges" (PeopleTools 8.59:
PeopleCode API Reference).
A fluid pop-up menu is not a separate, distinct page control found in Application Designer. Instead, you
can use several methodologies to create fluid pop-up menus, including a parent group box (described
here), a hyperlink or button, and others. The procedure described here relies on a parent group box of type
Popup to serve as the button to activate the pop-up menu. This procedure requires no further coding by
you to create a control and menu that is generated to standards that work with assistive technology. In
addition to the parent Popup group box, you can use one of three methods to create the pop-up menu:
• A group box of type Menu. Each menu item is a hyperlink contained within a group box of type Menu
Item.
• A grid with a layout of Menu Grid Layout. Each row in the grid is a menu item.
• A scroll area with a layout of Menu. Each row in the scroll is a menu item.
1. Create a parent group box of type Popup to serve as the button to activate the pop-up menu:
• On the Fluid tab: Specify any additional styles for this button—for example, psc_image_only.
• On the Fluid tab: Oracle recommends that you enable a vertical scroll bar for this menu; whether
a vertical scroll bar is displayed depends on how the page is displayed (in a modal window, for
example) and form factor usage (smart phone, for example).
• Using the SetGroupletMOptions PeopleCode built-in function, set modal popup options enabling
bPopupMenu on the record field. For example:
MY_RECORD.POPUP_MENU_GBX.SetGroupletMOptions("bPopupMenu@1;");
Note: When bPopupMenu is enabled (set to 1), the system will automatically set bHeader
to 0 (disabled), bAutoClose to 1 (enabled), bMask to 1 (enabled), and sMaskStyle to
ps_masktrans; these options cannot be overridden. In addition, bVertical will be set to 1 (which is
recommended), but it can be overridden.
2. Within the popup group box, create the menu container using one of three options:
• To create a dynamic menu, use a grid with a layout of Menu Grid Layout.
• Alternatively, use a scroll area with a layout of Menu to create a dynamic menu.
3. Define menu items within the menu container depending on the option selected in step 2:
• If the menu container is a group box, create a group box of type Menu Item for each static menu
item. Within each menu item group box, insert a single control, a hyperlink that executes the
PeopleCode for this menu item. If you require a complex grouping of controls, use a grid or scroll
as the menu container.
• If the menu container is a grid or a scroll area, you can create a simple grid or scroll with one
column: a hyperlink that executes the PeopleCode for this menu item.
• Alternatively, if the menu container is a grid or a scroll area, you can also create a grouping of
columns to be acted upon as a single menu item: a layout group box as the first column in the grid
(in a scroll, this layout group box contains the other columns), one hyperlink that executes the
PeopleCode for this menu item, and any additional controls such as images or counters (badges)
to adorn the menu item.
Related Links
"Navigating Fluid Pop-up Menus Using Keyboard Shortcuts" (PeopleTools 8.59: Accessibility Guide)
Sectional tabs are not a separate, distinct page control found in Application Designer. Instead, you can use
one of three methods to create sectional tabs:
• A group box of type TabSet. Each tab item is a hyperlink contained within a group box of type
TabItem.
• A grid with a layout of Tab Set Grid Layout. Each row in the grid is a tab item.
• A scroll area with a layout of Tab Set. Each row in the scroll is a tab item.
• To create a dynamic set of tabs, use a grid with a layout of Tab Set Grid Layout.
• Alternatively, use a scroll area with a layout of Tab Set to create a dynamic set of tabs.
2. Define tabs within the tab set container depending on the option selected in step 1:
• If the tab set container is a group box, create a group box of type TabItem for each static tab.
Within each tab item group box, insert a single control, a hyperlink that executes the PeopleCode
for this tab. If you require a complex grouping of controls, use a grid or scroll as the tab set
container.
• If the tab set container is a grid or a scroll area, you can create a simple grid or scroll with one
column: a hyperlink that executes the PeopleCode for this tab.
• Alternatively, if the tab set container is a grid or a scroll area, you can also create a grouping
of columns to be acted upon as a single tab: a layout group box as the first column in the grid
(in a scroll, this layout group box contains the other columns), one hyperlink that executes the
PeopleCode for this tab, and any additional controls such as images or counters (badges) to adorn
the tab.
Related Links
"Navigating Fluid Sectional Tabs Using Keyboard Shortcuts" (PeopleTools 8.59: Accessibility Guide)
• Pop-up menus – The use of the classic pop-up menu page control can produce unpredictable results
with other aspects of fluid applications. Pop-up menus on fluid pages are created in a different
manner.
• Pop-up pages – Mouse-over pop-up pages are not supported in fluid applications.
• Scroll bars.
• Trees.
Applying Styles
In some cases, a single style class creates a change in behavior, color, or look and feel of a page element.
In other cases, depending on the control, a structure of multiple style classes are applied to create the
behavior and look and feel of a control. It is critical that before you attempt to override any delivered
default styles that you observe the structure of the control in the HTML source of the rendered page
so that you can gain insight into the elements involved in the control’s structure and the styles that are
currently being applied, not to mention the order in which they are applied.
When the system applies a style, by default or override, the style is applied to the container in which the
control resides, and those styles apply to all elements in that container, which includes the structure of the
control, the label, the field, and so on. In a fluid application, you do not apply a style to discreet elements,
such as just to the label for instance.
PTNUI_NAVBAR_CSS Contains the styling used for the Navigation Bar (NavBar).
PTNUI_PINTO_CSS Controls the styling for the “Add to…” functionality. Included
on pages with the Add to feature enabled.
You can create custom free form style sheets in Application Designer, and you can choose to include them
and override or extend the default styles at varying levels for page elements.
The system-wide style sheet can be overridden by way of the PeopleTools options page, by selecting
the custom style sheet and assigning it to the Default StyleSheet Name option. This is a global, system-
wide setting. If set, the system completely ignores any style contained in the delivered style sheet,
PSSTYLEDEF_FMODE. Otherwise, if not set, the system applies PSSTYLEDEF_FMODE by default.
Note: Use PeopleTools, Portal, Branding, Branding System Options to set fluid branding options in the
Fluid Component group box.
To incorporate additional style sheets at either the component or page level, use the AddStyleSheet built-
in PeopleCode function:
AddStyleSheet(StyleSheet.STYLESHEET_NAME);
The AddStyleSheet function adds the reference to the style sheet to the header section of the HTML page.
This example illustrates style sheets added into the HTML <head> section.
In Application Designer, you can also elect to override or extend the default styles, using the Fluid tab for
any page or control use the Free Form Style group box to call out styles to be modified. To completely
ignore the default style, select Override PeopleTools Style, otherwise you extend or add to the default
style. For situations where you have adjustments to make depending on the form factor of the device, you
can set those in the Form Factor Override fields for the various form factors.
When working with the order in which style sheets are applied, consider:
• When you call AddStyleSheet, the system checks if there is a theme with a mapped, skinned style
sheet for that style sheet. If so, the system loads that style sheet after the style sheet passed in the
argument.
• The order in which you call AddStyleSheet determines the order in which the style sheets appear in
the stylesheet list.
• The system determines the order in which the PeopleTools style sheets are applied.
• Regardless of custom changes you may make, standard CSS rules always apply. It is very important
for the developers to understand how CSS and style sheets work.
This example illustrates an approach to adjusting the layout of controls based on the form factor of the
device accessing the fluid page.
For details on the override options, see Setting Properties on the Fluid Tab.
Free form styles set in Application Designer are static and can’t be changed, however, styles set using
PeopleCode are dynamic, meaning they can be switched programmatically at runtime. Styles set in
Application Designer can’t be changed or queried using PeopleCode at runtime. Dynamic styles are
applied only with PeopleCode; they can be added, changed, deleted or queried at runtime.
It is not recommended to add style to the system containers. Add your own group boxes, and add style to
that.
Example:
&fld1.AddFFClass("addffclass");
&fld1.ReplaceFFClass("addffclass", "replaceffclass");
&fld1.FreeFormStyleName = "pc_ffclass";
In your implementation, Oracle strongly recommends that you only override style classes with respect
to coloring, theme, and branding; a practice often referred to as “skinning.” Oracle strongly discourages
overriding delivered style classes with regard to page layout (positioning, padding, filling, and so on).
You only skin complete style sheets, not the sub style sheets contained within a style sheet. To extend
(or skin) a delivered style sheet, you want the delivered style sheet to appear first in the style sheet
list, followed by the override or “skinned” style sheet. For example, PSSTYLEDEF_FMODE should
appear before PSSTYLEDEF_FMODE_SKINNED, allowing the original to be applied, and the “skin,”
containing the supplemental changes, to be applied after.
Note: With CSS style sheet application, the last style sheet in the sequence to be applied takes
precedence.
It is recommended to skin or extend only one style sheet at a time. As in, if you have multiple style
sheets, have the skinned style sheet appear just after (under) the style sheet it extends or overrides. If the
extended or override style sheet appears beneath other style sheets in the list (assuming there are multiple
style sheets), any override in the skinned style sheet will apply to any style sheet specified before it,
which may result with unintended style overrides.
If you intend on extending or overriding the delivered styles, consider these items:
• You need to be aware of all the styles applied in any previously applied style sheet(s).
• Do not modify a delivered style sheet. Any changes will be overridden in any future upgrade.
• Styles are associated directly to structure (container, label, control, and so on), and any change
PeopleSoft makes to structure in future releases can affect any custom styles you’ve implemented.
It is recommended that you do not set the minimum and maximum values directly on the group box with
the style ps_apps_content, as this can cause browser issues.
The ps_apps_content style implements the flex model. Pages are laid out as a column based on flex model
with horizontal stretching. This can cause varying results per browser type when attempting to stretch the
width fully while restricting the width based on a max-width value.
It is recommended to include a layout group box within the ps_apps_content group box containing your
page content, and apply the minimum and maximum widths on the interior group box.
Style .psa_my_content {
min-width:320px;
max-width: 1440px;
margin:0 auto;
/* center content horizontally */
}
You can hide an entire column stylistically, using the page field name (as opposed to hiding the column
using PeopleCode, which can prohibit complete rendering of the column).
If you are hiding a column using style, you must consider the following items.
Consideration Description
Accessibility If you stylistically hide the trigger column used for the row
action, you must make sure that you expose the trigger column
in screen reader mode.
• It must be visible.
For example, if you have a field on a grid that has a page field
name of “ABC_XYZ”, the style applied on all references to
that column is “ABC_XYZ” (TD and TH tags in the table). To
properly hide the entire column, use the following:
:root:not(.psc_mode-access) .ABC_XYZ { d⇒
isplay:none; }
Grid Header Alignment If you stylistically hide a column, do not stylistically hide
the last column in a grid. Doing so can adversely affect grid
header layout.
If you are attempting to set any dimensions on columns, make sure you are familiar with the limitations of
using minimum and maximum values on grid columns.
If you attempt to set a dimension of any type (width, min-width, max-width, and so on), make sure you
affect only the real table and not the header-only table, which the system uses for header alignment.
For example, assume a column named XYZ_ABC as a page field name in the grid. That class is assigned
to all “TD” and “TH” tags both in the real table (ps_grid-flex) as well as the table used internally for
fixed header implementation (ps_grid-flex-head). To style a dimension and change the text color, see the
following:
.ps_grid-flex .XYZ_ABC { min-width:10em; } /* set dimension only on real table */
.XYZ_ABC {color: #A00;} /* set color both real and header-only table */
Delivered JavaScript
PeopleTools includes an HTML definition, PT_PAGESCRIPT_FMODE, which serves as the master
list referencing other definitions containing the actual JavaScript function definitions. These JavaScript
functions control a wide range of page behavior, including (but not limited to):
• Accordion widget.
• Toggle widget.
• Grouplet.
• Transfer animations.
• File attachments.
Use the AddOnLoadScript PeopleCode built-in function to invoke delivered JavaScript functions. The
following example illustrates two invocations of AddOnLoadScript:
If (IsGroupletRequest()) Then;
AddOnLoadScript("DoRowAction(" | &nRow | ");");
End-If;
Related Links
"AddOnLoadScript " (PeopleTools 8.59: PeopleCode Language Reference)
With the architecture of the PeopleSoft Fluid User Interface, PeopleTools provides increased flexibility
and opportunity to customize. However, with that flexibility comes increased responsibility for developers
to test and manage any custom code. PeopleTools can only impose logical restrictions and processing
constraints on the code it delivers and tests.
When considering adding custom JavaScript programs, consider the following items:
• All JavaScript shares the same namespace. That includes PeopleTools-delivered JavaScript,
PeopleSoft application-delivered JavaScript, and your custom JavaScript. Therefore, to avoid
overwriting global variables, functions, and objects defined by PeopleTools or PeopleSoft
applications, you must prefix your global variable, function, and object names. For example,
rather than naming your function showModal(), which would overwrite the PeopleTools-delivered
showModal() function, name your function my_showModal() instead.
• Include JavaScript files in component PeopleCode, such as PostBuild, for better performance.
Otherwise, the system needs to perform extra processing, such as inserting references into the header
and checking to make sure all of the styles have been downloaded and applied, and before completing
the page load\activate process.
• If there are any JavaScript errors from application loading, the page will also encounter problems
loading.
• Don’t use JavaScript to add/change the free form styles on the controls. Use PeopleCode to change/
add free form style.
• Only add JavaScript events on the controls that do not have any system generated script.
For more information on accessibility for PeopleSoft applications in general, see "Accessibility in
PeopleSoft Applications" (PeopleTools 8.59: Accessibility Guide).
ARIA live regions Use Accessible Rich Internet Applications (ARIA) live regions sparingly.
Background and foreground colors If you specify a foreground color, it is strongly recommended that you also
specify a background color and vice versa. Otherwise, users changing their
system colors may produce invisible text. Also, be cautious when using any of
the following CSS techniques:
• Background images
• Gradients
These all make it difficult to test for color contrast, if not applied appropriately.
Background images Do not use background images for informational icons. They are not visible in
high contrast mode. Only do this for decorative images.
Button or hyperlink row actions If you have a button or hyperlink and the control is used for a row action, you
must supply a translatable label for the item regardless of whether it's visible or
hidden. This label is needed for screen reader users.
Consistency with images and control labels Use images and controls consistently throughout your application.
For example, do not include a button labeled "Search" on one page and a
button labeled "Find" on another page of the same application.
Creating custom controls If you create a custom control using HTML Area, which is discouraged, the
"Name, Role, Value" rule has to be in place. For example:
• Custom controls have appropriate roles specified using the role attribute.
Drag-and-drop If you are employing drag-and-drop capabilities on your page, you must also
provide the ability to perform the same functions for users using the keyboard
only.
Dynamic information User should be able to stop, pause, hide information that is moving, blinking,
or auto-updated if:
• Starts automatically.
Focus indicator An end user must be able to see when focus is set for a control, for example a
box surrounding the widget:
Group box pop-up menus Use only the techniques described in Creating Fluid Pop-up Menus to create
pop-up menus on fluid pages.
Hidden fields When a fields is not visible (for example, within closed accordion content or
within group box that is itself set as invisible), the field should not be tab-able.
It also must not be set to have focus.
HTML areas The controls in an HTML area must be able to be operated using the keyboard
only, with no reliance on the mouse.
Use tabindex="0" for controls that are not accessible using TAB, but
should be (those that can receive user input).
Links versus buttons Use links for transferring users to a different location; use buttons for actions
on the current page.
List items List items must have one interactive field only, which becomes the target of
the row action for the list item. In addition, limit the number of display-only
fields (attributes) to three or less per list item. Because each list item is treated
as a single cell, all of the fields are read by the screen reader for each list item
when it is selected. More than four fields presents too much information for the
reader to retain and act on. If you must present more than four fields, create a
grid instead of a list. That way, each grid cell can be read individually.
Lists If you have a list, use list grid layout to render it, because it is a list, not a table,
you are presenting. In addition, when you have only one column, it is not a
table, it is a list.
If you want to show how many items are in the list, do not use the word "rows"
for the counter. Row implies tables, which is confusing for screen reader users.
Plug-ins If you use plug-ins, verify that content rendered with those plug-ins is
accessible.
Read-only group box content For group boxes that contain read-only elements and have a row action, it is
recommended to add an aria-label and set the role using PeopleCode:
Row headers Fluid pages should specify a row header for tables, specified in Application
Designer. Use the Row Header property on the Grid Properties > Use tab.
Screen reader mode • If your fluid component and classic component are exactly the same in
functionality, you might want to display the classic component when a
user is in fluid screen reader mode for desktop and tablet users; classic
pages do not display well on smart phones. This can eliminate the need to
design fluid pages for regular and screen reader mode.
aria-current="true"
• If you use styles to hide a column, ensure that you don’t hide the column
in screen reader mode. If you always hide it, there will be no action
available on the row. For example, the use of none in the following
example is incorrect:
:root:not(.psc_mode-access) .GRID1_EDIT,
:root:not(.psc_mode-access) .GRID1_EDIT {
display:none !important
}
Table summaries Provide table summaries for table. Use Application Designer to populate them.
Use the Summary attribute for Accessibility property on the Grid Properties >
Use tab.
Tab order and field focus With fluid pages, the tab order cannot be set by the application developer,
unlike classic pages. The tab order is based strictly on a top-to-bottom, left-
to-right sequence. For fluid pages, design in such a way that the logical tab
order is maintained as much as possible, leveraging group boxes to gather page
elements together as necessary.
Pay attention to field focus by tabbing to make sure the tab order is in a logical
sequence. Pay close attention to these situations:
By default, the focus will be set to the first interactive field found on the
page. However, if this field is not visible because it is within an invisible
element (for example, a group box that is set to invisible) or within
collapsed accordion content, then focus will be lost.
• If you build your fluid application for tablets or phones, test using a native
screen reader. For example, use VoiceOver (Mac OS X native screen
reader).
Toggle buttons If you have a toggle button with different visual styles for on and off, you
should do one of the following:
3. Footer page.
Note: The Activate event is not supported for subpages, fluid or classic.
Related Links
Selecting Fluid Page Types
Built-In Functions
This table lists the PeopleCode built-in functions provided for use with fluid applications at the
component or page level.
Function Description
"AddOnLoadScript " Add the script to execute in the onload event of the document.
(PeopleTools 8.59: PeopleCode
Language Reference)
Function Description
"AddStyleSheet" (PeopleTools Add a free form style sheet to the HTML document for the page or component.
8.59: PeopleCode Language
Reference)
"CreateSearchRowset" Create the rowset based of the search record and key list values.
(PeopleTools 8.59: PeopleCode
Language Reference)
"DoModalComponentPopup" Display a secondary fluid component in a modal, secondary window with a child
(PeopleTools 8.59: PeopleCode relationship to the parent window.
Language Reference)
See Transfer and Modal Functions for a complete list of functions available for
implementing transfers and creating modal windows.
"DoModalPopup" (PeopleTools Display a secondary fluid page in a modal, secondary window with a child relationship to
8.59: PeopleCode Language the parent window.
Reference)
See Transfer and Modal Functions for a complete list of functions available for
implementing transfers and creating modal windows.
"GetComponentTitle" Return the name of the component (from the component definition).
(PeopleTools 8.59: PeopleCode
Language Reference)
"GetPagePrefix" (PeopleTools Return the prefix for the page based on the page type as set on the Use tab.
8.59: PeopleCode Language
Reference)
"GetPageType" (PeopleTools Return the page type—for example, header, footer, prompt, and so on.
8.59: PeopleCode Language
Reference)
"GetPanelControlStyle" Return the styles set by the system that control the state of the left and right panels.
(PeopleTools 8.59: PeopleCode
Language Reference)
"GroupletRequestSource" Return an Integer value indicating the source page (location) for the grouplet.
(PeopleTools 8.59: PeopleCode
Language Reference)
Function Description
"IsAddEnabled" (PeopleTools Return a boolean value indicating whether Add mode has been enabled on the component's
8.59: PeopleCode Language Use tab.
Reference)
"IsAddMode" (PeopleTools 8.59: Return a boolean value indicating whether the component build process is in add mode.
PeopleCode Language Reference)
"IsAGComponent" (PeopleTools Return a boolean value indicating whether the component type is set to Activity Guide on
8.59: PeopleCode Language the Fluid tab.
Reference)
"IsAGRequest" (PeopleTools Return a boolean value indicating whether the request was initiated by an activity guide
8.59: PeopleCode Language wrapper.
Reference)
"IsBackEnabled" (PeopleTools Return a boolean value indicating whether back navigation is enabled on the component.
8.59: PeopleCode Language
Reference)
"IsFluidMode" (PeopleTools 8.59: Return a boolean value indicating whether Fluid Mode is enabled on the component.
PeopleCode Language Reference)
"IsFluidSearchStart" (PeopleTools Return a boolean value indicating whether the Fluid Search is started on the component.
8.59: PeopleCode Language
Reference)
"IsGroupletRequest" (PeopleTools Return a boolean value indicating whether the request was initiated by a tile (also referred
8.59: PeopleCode Language to as a grouplet).
Reference)
"IsHomeEnabled" (PeopleTools Return a boolean value indicating whether the Home button is enabled on the component.
8.59: PeopleCode Language
Reference)
"IsIScriptAuthorized" Return a boolean value indicating whether the current user is allowed to access the
(PeopleTools 8.59: PeopleCode specified iScript.
Language Reference)
"IsLogoutEnabled" (PeopleTools Return a boolean value indicating whether Logout is enabled on the component.
8.59: PeopleCode Language
Reference)
"IsMDComponent" (PeopleTools Return a boolean value indicating whether the component type is set to Master/Detail on
8.59: PeopleCode Language the Fluid tab.
Reference)
"IsMDGuided" (PeopleTools Return a boolean value indicating whether the master/detail or activity guide wrapper is in
8.59: PeopleCode Language guided mode (that is, Previous and Next are displayed in the fluid banner).
Reference)
"IsMDListPopup" (PeopleTools Return a boolean value whether the master/detail or activity guide wrapper is in non-
8.59: PeopleCode Language optimized mode (that is, navigation to pages is presented in a drop-down list in the fluid
Reference) banner, not in the left panel).
Function Description
"IsMDRequest" (PeopleTools Return a boolean value indicating whether the request was initiated by a component from
8.59: PeopleCode Language within the master/detail wrapper.
Reference)
"IsMDSearchEnabled" Return a boolean value indicating whether the search type is set to Master/Detail for the
(PeopleTools 8.59: PeopleCode current component.
Language Reference)
"IsModeless" (PeopleTools 8.59: Return a boolean value indicating whether the target content for the tile is currently being
PeopleCode Language Reference) displayed in a modal window—that is, the Display In setting for the tile is set to Modal.
"IsNavBarEnabled" (PeopleTools Return a boolean value indicating whether the NavBar is enabled on the component.
8.59: PeopleCode Language
Reference)
"IsNextInListEnabled" Return a boolean value indicating whether NextInList is enabled on the component.
(PeopleTools 8.59: PeopleCode
Language Reference)
"IsNotificationEnabled" Return a boolean value indicating whether the Notifications button is enabled on the fluid
(PeopleTools 8.59: PeopleCode component. This corresponds to the Notifications toolbar option on the component’s Fluid
Language Reference) tab.
"IsPinEnabled" (PeopleTools Return a boolean value indicating whether the Add To functions are enabled on the
8.59: PeopleCode Language component.
Reference)
"IsPrevInListEnabled" Return a boolean value indicating whether PreviousInList is enabled on the component.
(PeopleTools 8.59: PeopleCode
Language Reference)
"IsSaveEnabled" (PeopleTools Return a boolean value indicating whether Save is enabled on the component.
8.59: PeopleCode Language
Reference)
"IsSearchEnabled" (PeopleTools
8.59: PeopleCode Language Important! In PeopleTools 8.55 or later, use either the IsMDSearchEnabled function or the
Reference) IsStandardSearchEnabled function instead to determine which type of search is enabled.
"IsSingleComponentAG" Return a boolean value indicating whether this is a single component activity guide.
(PeopleTools 8.59: PeopleCode
Language Reference)
"IsSingleUnitOfWork" Return a boolean value indicating whether this is a single unit of work activity guide.
(PeopleTools 8.59: PeopleCode
Language Reference)
"IsSmallFFOptimized" Return a boolean value indicating whether the Display on Small Form Factor Homepage
(PeopleTools 8.59: PeopleCode option has been selected on the Fluid tab of the component properties.
Language Reference)
Function Description
"IsStandardSearchEnabled" Return a boolean value indicating whether the search type is set to Standard for the current
(PeopleTools 8.59: PeopleCode component.
Language Reference)
"SetMDGuided" (PeopleTools Set whether the master/detail or activity guide wrapper is in guided mode (that is, Previous
8.59: PeopleCode Language and Next buttons are displayed in the fluid banner).
Reference)
"SetMDListPopup" (PeopleTools Set whether the master/detail or activity guide wrapper is in non-optimized mode (that
8.59: PeopleCode Language is, navigation to pages is presented in a drop-down list in the fluid banner, not in the left
Reference) panel).
"SetPanelControlStyle" Specify a String value that updates the system with styles that control the state of the left
(PeopleTools 8.59: PeopleCode and right panels.
Language Reference)
"SetThemeId" (PeopleTools 8.59: Set the theme ID for the page so that proper theme style sheets get loaded.
PeopleCode Language Reference)
"SetTransferAttributes" Set certain fluid-related properties prior to executing a transfer to a different page or
(PeopleTools 8.59: PeopleCode component.
Language Reference)
Related Links
"Understanding Activity Guide Templates and Template Types" (PeopleTools 8.59: Portal Technology)
• PT_PAGE_UTILS:Banner —
Use the PT_PAGE_UTILS:Banner class to control items in the fluid banner including the title as well
as visibility of some of the items that appear in the Actions menu.
Many methods of this class are ignored and have no effect if the component is rendered in a context
that does not allow access to the fluid banner and Actions menu such as in an activity guide, in a
master/detail component, or in a modal window.
• PT_PAGE_UTILS:PanelController —
Use the PT_PAGE_UTILS:PanelController class to inquire on and update the modes and visibility of
the Side Page 1 (left panel) and Side Page 2 (right panel). Because this class spawns Panel objects for
each side panel, you do not need to instantiate Panel objects directly.
The system determines the initial characteristics of each panel based on the configuration of the
component, activity guide instance, or master/detail instance. The system also maintains the panels’
runtime characteristics. The panel state is not maintained within the PanelController object (or
any Panel objects it spawns). Therefore, you must ensure that any changes are updated back to the
server to effect an actual change either by directly invoking the UpdatePanel method or indirectly by
invoking the Initialize method with auto-update set to true.
• PT_PAGE_UTILS:Utils —
The PT_PAGE_UTILS:Utils class provides general utility methods for working with viewport
settings, displaying confirmation messages in the banner, and working with toggle buttons.
Important! To be rendered correctly across all device types, each fluid application should set the
viewport. The "SetDefaultViewport" (PeopleTools 8.59: PeopleCode API Reference) method is the
recommended way to do this.
Related Links
"Banner Class" (PeopleTools 8.59: PeopleCode API Reference)
"PanelController Class" (PeopleTools 8.59: PeopleCode API Reference)
"Utils Class" (PeopleTools 8.59: PeopleCode API Reference)
Additional Meta-HTML
Additional meta-HTML you can use with fluid development include these constructs.
However, you can use methods and properties of the Field class to generate grouplets from group box
fields programmatically. The following example with comments illustrates how to create a grouplet based
on component content. The behavior of the grouplet can be enhanced by optional method invocations to
set a target URL, where the target content is displayed, and so on.
Example
Declare Function PSURLtoNewWin PeopleCode FUNCLIB_PTPP.PTPP_HYPERLINK FieldFormula;
/* Optional. Specifies the target URL, which makes the entire grouplet tappable. */
&fld.SetGroupletActionUrl(&tgt_URL);
/* Optional. Specifies how the action URL is opened. Default is current window. */
&fld.SetGroupletDisplayIn(%GroupletActionInNewWindow); /* */
/* Enable the icon for zooming to open the modal – similar to related */
/* information in the right panel. */
<* &fld.IsGroupletZoomIconEnabled = True;
/* Modal options if %GroupletActionInModal is used for SetGroupletDisplayIn. */
&fld.SetGroupletMOptions("bAutoClose@0;"); *>
Related Links
"SetGroupletActionUrl" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletDisplayIn" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletEventMsg" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletID" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletImage" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletImageUrl" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletMOptions" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletTargetID" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletTimer" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletType" (PeopleTools 8.59: PeopleCode API Reference)
"SetGroupletUrl" (PeopleTools 8.59: PeopleCode API Reference)
"IsGroupletRequest" (PeopleTools 8.59: PeopleCode Language Reference)
Specifically, standalone access refers to navigation to the fluid component from the Navigator menu, a
homepage, a dashboard, a component transfer, execution of DoModalComponentPopup, and so on. The
same fluid component cannot be specified as a grouplet (that is, as dynamic tile content, embedded related
content, related information, or programmatically via grouplet PeopleCode) and it cannot be displayed
in a “modeless” manner (such as the zoom on related information, the modal target for a tile, through
ViewContentURL, and so on).
"Transfer" (PeopleTools Use the Transfer function to exit the Y Y Y1 Y2 Y2 Y Y Y Y Y1 Y1, 3 N pre-8.
8.59: PeopleCode Language current context and transfer the user 54
Reference) to another page.
127
Working with PeopleCode for the Fluid User Interface
128
Source Location Action Target Rel
129
Working with PeopleCode for the Fluid User Interface
Working with PeopleCode for the Fluid User Interface Chapter 6
Legend
FS Fluid standalone
CS Classic standalone
IG Interactive grouplet
MW Modeless window
F2F Fluid-to-fluid
F2C Fluid-to-classic
C2C Classic-to-classic
C2F Classic-to-fluid
CW Current window
NW New window
1 When AJAX transfers are not enabled (the default), the action exits the fluid wrapper and the
content replaces the current window. If the transfer function is set to open a new window, the
action opens a new window instead.
When AJAX transfers are enabled, the new content is displayed in the target content area of the
fluid wrapper when the target is set to current window. If the transfer function is set to open a new
window, this new window setting is overridden and the new content is also displayed in the target
content area of the fluid wrapper except when the transfer is from classic content to other classic
content. In that case, the new window setting is honored and the classic content is opened in a
new window.
2 When the target setting is current window, the content replaces the current content.
3 On iOS only, when the Safari browser is in full screen mode and when content has been set to
open in a new window, the content replaces the current window instead.
Related Links
AJAX Transfers
Modal Options
Modal windows can be launched from fluid components in four different ways. Each of these four
scenarios allows you to specify modal options:
• For a group box defined as a grouplet, use the SetGroupletMOptions method to set modal options.
(See Creating Grouplets with PeopleCode for more information on creating grouplets.)
• On the Fluid Attributes page of a content reference definition, if you specify Modal for the Display In
option, then the Modal Parameters field is displayed.
• For a Tile Wizard definition, at Step 4, if you specify Modal for the Display In option, then the Modal
Parameters field is displayed.
Important! Always use a semicolon to terminate each modal option. For example:
&sPopupOptions = "bAutoClose@1;bPopup@1;";
The following table lists modal options in alphabetical order. For Boolean options, specifying 1 enables
the option; specifying 0 disables it:
bAutoClose 0|1 0 Enable automatically closing the modal window when the user clicks
anywhere outside the modal window.
bAutoCloseWarn 0|1 0 Enable display of a save warning if content in the modal window has
been changed when bAutoClose has been enabled.
Note: This option is applicable only when bAutoClose has been enabled
by DoModalComponentPopup or DoModalPopup.
bCenter 0|1 1 Display the modal window near the center of the main window.
bClose 0|1 1 Enable the close icon in the header of the modal window.
Note: This option is valid only for popup group boxes, only with the
SetGroupletMOptions method, and only when the header is displayed;
otherwise, it is ignored in all other contexts.
bFullScreen 0|1 0 Display the modal window so that it covers the entire screen.
bPopup 0|1 0 Display the modal window adjacent to the trigger field with a chat
dialog-style arrow pointing to the trigger field.
bPopupMenu 0|1 0 Display a modal window containing a pop-up menu adjacent to the
trigger field with a chat dialog-style arrow pointing to the trigger field.
For example:
MY_RECORD.POPUP_MENU_GBX.SetGroupletMOptions("⇒
bPopupMenu@1;");
bVertical 0|1 0 Specify the orientation of the modal window’s tail, which points back to
the trigger control: a vertical orientation (1) means that the tail can point
up or down; horizontal (0) means that the tail can point left or right.
MY_RECORD.POPUP_MENU_GBX.SetGroupletMOptions("⇒
bPopupMenu@1;bVertical@0;");
sTitle String "" Set the title in the header of the modal window.
sWidth String none Set the height and width of the modal window as a string value. You can
specify any CSS supported unit of measure such as em, in, cm, px, %,
sHeight and so on. For example:
sWidth@50em;sHeight@100em;
width Number none Set the height and width of the modal window in pixels. For example:
height width@400;height@400;
Related Links
"DoModalComponentPopup" (PeopleTools 8.59: PeopleCode Language Reference)
"DoModalPopup" (PeopleTools 8.59: PeopleCode Language Reference)
"SetGroupletMOptions" (PeopleTools 8.59: PeopleCode API Reference)
"ViewContentURLModeless" (PeopleTools 8.59: PeopleCode Language Reference)
"ViewURLModeless" (PeopleTools 8.59: PeopleCode Language Reference)
The navigation history stack tracks navigation from component to component, including navigation from
standard components, homepages, dashboards, activity guides, navigation collections, WorkCenters,
and MAP applications. When a user navigates from one of these items, the Back button will be labeled
appropriately and will point back to that item. However, page transfers within a component are not
tracked in the navigation history stack. To support navigation tracking to remote content in a clustered
PeopleSoft environment, an additional HTTP request, PTGETREMOTEDATA, is issued from the local
site to the remote site. For more information on the Back button’s behavior in specific circumstances, see
"Using the Back Button" (PeopleTools 8.59: Applications User's Guide).
Application developers can override the default Back button behavior (for example, specifying a custom
Back button label or indicating that a specific transfer is to be ignored) using the SetTransferAttributes
PeopleCode function, which alters the entries written to the navigation history stack. In addition,
component property settings or the SetTransferAttributes function can be used to enable tracking of page-
to-page transfers within a component.
Related Links
"Setting Internet Properties" (PeopleTools 8.59: Application Designer Developer's Guide)
"SetTransferAttributes" (PeopleTools 8.59: PeopleCode Language Reference)
Access the Web Profile Configuration page. (Select PeopleTools > Web Profile > Web Profile
Configuration.)
If you intend to enable online help for your fluid components, you must specify a Help URL value in the
web profile on the General page.
For information on all of the fields on the Web Profile Configuration - General page, see "Configuring
General Portal Properties" (PeopleTools 8.59: Portal Technology).
For more information on enabling help for a fluid page, see Setting Fluid Properties.
Access the Web Profile Configuration - Look and Feel page. (Select PeopleTools > Web Profile > Web
Profile Configuration. Select the Look and Feel page.)
Image: Web Profile Configuration - Look and Feel page, fluid properties
The following example illustrates the Fluid Homepage property that you can set for fluid applications.
Fluid Homepage Displays the name of the component used to render fluid
homepage tabs.
Override Click to change the default fluid homepage. The Override Fluid
Homepage Component page is displayed with these fields:
For information on all of the fields on the Web Profile Configuration - Look and Feel page, see
"Configuring Look and Feel" (PeopleTools 8.59: Portal Technology).
This example illustrates the properties for fluid applications on the PeopleTools Options page.
Descriptions of the properties appear after the example.
Default Style Sheet Name Displays the default, system-wide style sheet for fluid
components, which is defined on the Branding System Options
page.
Related Links
"Managing Homepages" (PeopleTools 8.59: Portal Technology)
All fluid homepages are content references under the Fluid Homepage - Hidden folder. Set the content
reference permission to control the access.
Default PeopleSoft User (PTPT1000) permissions are granted to the component. Managing and
administering the system delivered fluid homepages requires the Portal Administrator permission list
(PTPT1300).
Renaming a homepage is controlled by the All Rename option on the Homepage tab attributes for a
homepage content reference.
See Setting Component Properties for Fluid Components for more information on fluid component
properties.
Navigation
This example shows using the HPPC and HPTABLET options to set system defaults for homepage
display.
Important! The HPPC and HPTABLET user options are system-wide settings. They cannot be exposed
to end users to adjust as needed.
These personalization settings are applied to the user’s session based on the PeopleSoft system’s
determination of the browserDeviceTypeClass as defined in the web server’s browscap file. (See
"Browser Capabilities" (PeopleTools 8.59: System and Server Administration) for more information on
the location and contents of the browscap file.) Three device type classes are defined in the browscap file:
pc HPPC
tablet HPTABLET
This example illustrates overriding the default homepage of fluid and setting it to classic for PC’s (laptops
and desktop computers).
Related Links
"Understanding Navigation Settings" (PeopleTools 8.59: Security Administration)
For more information, see "Implementing Guest User Access" (PeopleTools 8.59: Portal Technology).
Related Links
"Managing Homepages" (PeopleTools 8.59: Portal Technology)
The following example illustrates how the Push Notification Framework architecture operates within
these layers of the PeopleSoft infrastructure:
• Server layer.
• Browser layer
Notifications are generated on the server domains, pushed to the web server, and then on to client
browsers.
Server Layer
The server layer of the Push Notification Framework includes these elements:
• (Optional) Domains gateways for inter-domain communications between the Process Scheduler server
and application server domains.
If more than one application server domain is configured per Process Scheduler server domain, then
the additional application server can serve as a fail-over server in the event that initial application
server becomes unavailable. In the preceding diagram, this fail-over connection is depicted with a
dashed line.
• Event publishers.
• Tuxedo event broker on the application server to route notifications to Jolt on the web server.
Client Layer
Notifications are routed to the clients for display to users:
• Browser endpoints (the Notification window, pages, and others) are subscribed to events (or event
collections).
• Browser endpoints receive notifications from the web server via WebSocket.
As of PeopleTools 8.58, you do not need to explicitly configure the web server for push notifications. The
EnablePNSubscriptions custom web profile property is no longer used, and is ignored regardless of its
setting.
Note: Events raised in a Process Scheduler domain are ultimately routed through an application server
domain. For these inter-domain events, you have to set inter-domain configurations for both the
application server and the Process Scheduler.
This topic assumes you have a working knowledge of PeopleSoft server administration. For more
information on managing PeopleSoft servers, see "Using PSADMIN" (PeopleTools 8.59: System and
Server Administration).
1. Run psadmin.exe.
4. Enter 13 (Push Notifications) to enable push notifications from the Quick-configure menu.
5. Optionally, if the Process Scheduler domain will also trigger and publish events, then inter-domain
configuration between the server domains is also required. Enter 12 (Domains Gateway) on the quick-
configure menu.
7. Boot (or reboot) the domain and verify that the TMUSREVT server process starts along with the
other domain server processes. In addition, if the domains gateway was enabled, verify that the
GWTDOMAIN process is also started.
1. Run psadmin.exe.
5. Enter 5 (Push Notifications) to enable push notifications from the Quick-configure menu.
7. Boot (or reboot) the domain and verify that the TMUSREVT and GWTDOMAIN server processes
start along with the other domain server processes.
Note: After the Process Scheduler server is configured with a Domains Gateway, additional configuration
of both servers is required to complete inter-domain configuration.
An application server domain can be configured to receive push notification events from one or more
Process Scheduler domains simultaneously. While a Process Scheduler domain can be configured with
more than one application server domain, the Process Scheduler domain connects to only one application
server domain the when the Process Scheduler domain is booted. The other configured application server
domains remain available as fail-over servers. However, the configuration does not specify a primary
server and fail-over servers explicitly. When the Process Scheduler domain is booted, a connection is
established by Tuxedo to one of the available servers.
As a first step as described in previous tasks, you must configure the application server and Process
Scheduler domains to generate the inter-domain events configuration (interdom.gbb files for each
domain).
This example illustrates how the configuration settings for inter-domain events can be coped from a
Process Scheduler domain to an application server domain and vice versa. The access point IDs and port
values must match on both domains to ensure successful transactions.
Note: When your environment consists of multiple application server domains, you can configure any one
of the application server domains for inter-domain events.
1. Run psadmin.exe.
5. Press the Enter key for Do you want to change any values (y/n/q)? [n], and continue to press the Enter
key until the Values for config section – Inter-Domain Events appear.
Process Scheduler Credentials Specify the credentials for each Process Scheduler domain
from which notifications will be received in the format:
Process Scheduler Credentials=ACCESSPOINTID|HOST_NAM⇒
E:PS_port
Note:
Application Server Port You can retain the port number as is.
7. Enter q to return to the PeopleSoft Domain Administration menu, and load any configuration changes.
1. Run psadmin.exe.
5. Press the Enter key for Do you want to change any values (y/n/q)? [n], and continue to press the Enter
key until the Values for config section – Inter-Domain Events appear.
Process Scheduler Port Specify the port through which this Process Scheduler
domain sends event notifications.
Application Server Credentials Specify each application server domain to which this
Process Scheduler domain can connect in the following
format:
Application Server Credentials=ACCESSPOINTID|HOST_NA⇒
ME:AS_port
7. Enter q to return to the PeopleSoft Domain Administration menu and load any configuration changes.
9. View the TUXLOG files to verify that the inter-domain configuration is valid and that the domains
are connected to each other:
• PS_CFG_HOME\appserv\DOMAIN_ID\LOGS\TUXLOG.TODAY
• PS_CFG_HOME\appserv\prcs\DOMAIN_ID\LOGS\TUXLOG.TODAY
10. Search for GWTDOMAIN nearest the end of the log file and evaluate the log entry to determine the
status of the connection. The following examples are from a Process Scheduler log file:
• Success:
192615.EDVMR1P0!GWTDOMAIN.4560.2512.0: LIBGWT_CAT:1129: INFO: Connection ⇒
established with domain (domainid=<T1B85701_42446>)
• Failure:
192356.EDVMR1P0!GWTDOMAIN.6700.6724.0: LIBGWT_CAT:1073: ERROR: Unable to ⇒
obtain remote domain id (T1B85701_32872) information from shared memory
192356.EDVMR1P0!GWTDOMAIN.6700.6724.0: LIBGWT_CAT:1509: ERROR: Error occu⇒
rred during security negotiation - closing connection
Note: If you have multiple Process Scheduler domains on the same machine, then this configuration
needs to be completed on each of the Process Scheduler domains.
Related Links
"PTPNInterdomainConfig" (PeopleTools 8.59: Automated Configuration Management)
You can add a PeopleTools personalization option to disable or re-enable push notifications system wide:
Option Default Value Click the Set Option Default Value link and select:
Navigation
This example illustrates the fields and controls on the Process Scheduler - Notification Configuration
page. You can find definitions for the fields and controls later on this page.
When a status option is enabled and inter-domain communication has been configured, the notifications
for that status change are propagated from the Process Scheduler server through the application server to
the following channels: Notification window, pop-up notifications, and email.
For pop-up notifications, in addition to system-wide settings, each user must enable pop-up notifications
as well as specific status options in My Preferences. However, each user does not need to configure the
Notification window to receive notifications from the Process Scheduler.
Related Links
"Defining Notification Configuration" (PeopleTools 8.59: Process Scheduler)
"Specifying General Settings in My Preferences" (PeopleTools 8.59: Applications User's Guide)
As of PeopleTools 8.56, any PeopleSoft application can be designated the portal system for configuration
of unified navigation. PeopleSoft Interaction Hub is no longer required.
See the steps outlined in "Configure Unified Navigation Fluid Navigation Collection" (PeopleTools 8.59:
Portal Technology) for information on how to create a cluster configuration.
Then, configure the cluster so that push notifications are propagated from the content providers to the
designated portal system:
1. Add the ps_theme custom property to the active web profile on each content provider system to point
to the default local node and URL for the portal system. Use the following format to set the value of
this property:
DEFAULT_LOCAL_NODE:http://my_server.my_domain:port_no/psp/SITE_NAME/
For example:
PS_NODE:http://server01.example.com:8000/psp/MYSITE01/
For more information on setting custom web profile properties, see "Configuring Custom Properties"
(PeopleTools 8.59: Portal Technology),
• On each content provider system, outbound routing as local to the portal system.
For more information on configuring service operations, see "Adding Routing Definitions"
(PeopleTools 8.59: Integration Broker).
• On the portal system, configure outbound routings to be local (portal system) to each content
provider; inbound routing as any to local.
• On the each content provider system, configure the outbound routing to be local to the portal
system; inbound routing as any to local.
2. On each content provider system only, run the PTPN_NOTCONF Application Engine program using
the System Process Requests page.
• Verify that the web profile passwords are consistent between the web server domain and the
application server domain.
• Verify that your browser, web server, and any reverse proxy servers used all support WebSocket
technology.
To troubleshoot the notification configuration for push notifications published from a Process Scheduler
domain, you also need to consider the following:
• After booting up the domains, you can verify the configuration by ensuring that the domains have
connected to each other. To verify the connection, you need to open the TUXLOG file for application
server and Process Scheduler domains from their respective domain LOGS folders. You will see an
entry in the file that the connection is established between the domains.
• If you do not see connections being established, then reboot the domains after clearing IPC resources
for the domains. Use the Clean IPC resources of this domain option in psadmin and then reboot the
domains.
3. In the Content Reference Message Events grid, click the Map icon for SERVEREVENTTESTA.
4. On the Map Event Data to Page Elements Modal window, click OK, and click Save.
5. Using two different browser sessions navigate to PeopleTools >Utilities >Debug >Server Side
Events Test Page.
6. Enter test values in the Event Data field and click Publish on one browser session.
7. On the other browser session, confirm that the values you just entered appear in the Event Targets
fields.
Administering Notifications
Use the Notification Administration fluid navigation collection to administer notifications on your system.
Navigation
The following topics cover each of the components included in the Notification Administration fluid
navigation collection including:
• Global Settings.
• Notification Settings.
• TriggerBusiness Event.
Navigation
In the left panel of the Notification Administration fluid navigation collection, select the Global Settings
item.
This example illustrates the fields and controls on the Global Settings page. You can find definitions for
the fields and controls later on this page.
System
Use the fields in this section to enable or disable notification delivery options system wide.
In-App
Max Notification Items Enter the default number of maximum notification to be
displayed to the user within the Notifications panel.
Notification Items to Load Enter the number of records that get loaded to the system
when the Notifications panel is loaded. The default value for
this option is 100. This configuration can be used to tune the
performance of the Notifications panel.
Action View Enables the two-panel action view for all users system wide.
Text
To complete system configuration to support text messaging, each of the following values is required.
Message Set Number Enter a number for the message set containing the message to be
displayed to users when they consent to receive text messages.
Message Number Enter a number for the message to be displayed to users when
they consent to receive text messages. This message is displayed
on the Notifications page of My Preferences, where users set
their notification preferences. See "Personalizing Notifications"
(PeopleTools 8.59: Applications User's Guide).
URL Identifier Select the URL identifier that defines your Twilio account
details used for outbound and inbound text messaging.
See the “Defining the PTTEXTMESSAGING URL
Identifier” section below for instructions on how to configure
PTTEXTMESSAGING correctly.
Important! If you wish to provide your users with text messaging as a notification option for the delivery
of push notifications or the ability to send inbound text messages, then you must establish an account with
Twilio.
This example illustrates the fields and controls on the URL Maintenance page and URL Properties
page for the PTTEXTMESSAGING URL identifier. You can find definitions for the fields and
controls in the following section.
3. In the URLID field, replace the {AccountSid} placeholder with your Twilio account ID.
4. Click the URL Properties link and enter the following properties and values:
PROXY (as required) The fully qualified domain name of your proxy server.
The following diagram illustrates the relationship of the items in the action view master/detail
architecture:
• If the notification target content includes an inner left panel, then the left panel collision handling that
is set on the action view master/detail component enables the slide-out left panel.
Any component and page that could be displayed as a detail transaction in the action view must conform
to the general restrictions on being displayed within a master/detail component as described in Guidelines
and Limitations for Master/Detail Components.
In addition to these general guidelines, evaluate each target component and page that could be displayed
in the action view as the result of a notification:
• If the target is a fluid activity guide, another master/detail component, or a fluid navigation collection,
it cannot be displayed within the action view; however, it can be set to display in a new browser
window. You must add the &ICDisplayNotify=N query string parameter to the notification when it’s
published.
• Pages in the target fluid component cannot include an “application header”—that is, any of the
Custom Header group box types (Left, Right, Middle, or Bottom) must be hidden when displayed in
the action view.
• Since the action view master/detail component controls the title in the fluid banner, for each page
defined within the target component, you should add a group box of type Page Title that is defined
to be visible when the page is rendered within a master/detail component. This Page Title group box
provides context that is lost when the page title is not displayed in the fluid banner. To hide this page
title if the page is rendered outside of a master/detail component, use the psc_hideinmode-notmd
style.
• If the target content is a fluid component that employs the 8.54 two-panel construct (that is, it was
built from the PeopleTools 8.54 PSL_TWOPANEL layout page or it was designed with an internal
left panel similar to PSL_TWOPANEL), your implementation must ensure that the internal two-panel
is initialized (using initializeTwoPanel) so that left panel collision handling can occur.
Related Links
Working with Two-Panel Implementations
"Using the Two-Panel Action View" (PeopleTools 8.59: Applications User's Guide)
"PTPNSystemConfig" (PeopleTools 8.59: Automated Configuration Management)
Navigation
In the left panel of the Notification Administration fluid navigation collection, select the Notification
Settings item.
This example illustrates the fields and controls on the Notification Settings page. You can find definitions
for the fields and controls later on this page.
Notification Name The notification name must match exactly the name defined in
the custom PeopleCode application class that implements the
delivered PTPN_PUBLISH:PublishToWindow class. This key
value is entered on the Add page, and cannot be edited later.
For example, the following PeopleCode excerpt defines the
BROADCAST notification for the SENDNOTE event:
&wlSrch = create PTPN_PUBLISH:PublishToWindow("SENDNOTE⇒
", "BROADCAST");
Important! In the current release, alerts from the Process Scheduler cannot managed via the Notification
Settings page. No notification definition is delivered for these events and alerts. Alerts will be delivered to
users’ Notifications panel even though the system is not configured for in-app notifications.
Note: In releases prior to PeopleTools 8.59, the notification name had to match exactly the
name defined in the custom PeopleCode application class that implements the delivered
PTPN_PUBLISH:PublishToWindow class.
This example illustrates the fields and controls on the notification Add page. You can find definitions for
the fields and controls later on this page.
In addition to the fields that have already been defined for the Notification Settings page, adding or
updating a notification configuration includes these additional fields:
Available Indicates whether the notification type is available for use for
this notification type.
Enable by Default Indicates that this notification type is on by default for all users.
Role/Permission List Enter one or more role names, one or more permission lists, or
both to restrict which users can personalize this notification.
If there are no entries in this grid, then all users are allowed to
personalize this notification.
Navigation
In the left panel of the Notification Administration fluid navigation collection, select the TriggerBusiness
Event item.
This example illustrates the fields and controls on the TriggerBusiness Event page. You can find
definitions for the fields and controls later on this page.
This example illustrates the fields and controls on the Notification Details page. You can find definitions
for the fields and controls later on this page.
Priority Specify the priority for this notification: Default, High, Low, or
Medium.
Notification Text Message Set/ For each workflow event, specify the message set ID and
Message Number number to form the notification message.
Notification Category Message Set/ Note: These fields are retained for compatibility with workflow
Message Number event notifications created prior to PeopleTools 8.59.
Email Event For workflow events that include an email event in the
workflow definition, you can select Email Note to use that event
definition as the notification message. Otherwise, the Message
Catalog entry specified on this page is used instead.
Navigation
In the left panel of the Notification Administration fluid navigation collection, select the Global Settings
item.
This example illustrates the fields and controls on the Archive and Purge page. You can find definitions
for the fields and controls later on this page.
Purge Archive Record Select this option to also purge notifications from the archive
table (PSPTPN_ARCHIVE).
Purge Click to purge the data based on the selected options. When
notifications are purged, the data is deleted from the notification
table. Optionally, you can also select to purge data from the
archive table.
Navigation
In the left panel of the Notification Administration fluid navigation collection, select the User Data
Mapping item.
This example illustrates the fields and controls on the User Data Mapping page. You can find definitions
for the fields and controls later on this page.
Root Package ID Select the name of the application package that contains the
method to be invoked.
Qualified Package/Class Path Select the names of each subpackage in the application class
hierarchy that define the location of the application class.
Separate subpackage names by a colon. If the class is defined in
the top-level application package, enter or select the colon.
Application Class ID Select the name of the application class that contains the method
to be invoked.
App Class Method Name Select the method to be invoked to retrieve and return user email
address and phone number data. The method must return the
data in a Rowset object based on the PTNC_USER_DATA
record definition.
Important! You must establish an account with Twilio in order to use inbound message handlers. See the
section titled “Defining the PTTEXTMESSAGING URL Identifier” in Managing Global Settings.
Navigation
In the left panel of the Notification Administration fluid navigation collection, select the Inbound
Message Handler item.
This example illustrates the fields and controls on the Inbound Message Handler page. You can find
definitions for the fields and controls later on this page.
Root Package ID Select the name of the application package that contains the
inbound message handler to be invoked.
Qualified Package/Class Path Select the names of each subpackage in the application class
hierarchy that define the location of the application class.
Application Class ID Select the name of the application class that contains the
inbound message handler to be invoked.
App Class Method Name Select the method to be invoked to process inbound text
messages. The handler should process the three-character code
and message payload to invoke the appropriate PeopleSoft
transaction on behalf of the user associated with the sender’s
phone number.
An event is associated with a status change on the server. When you define an event, you specify its
data type and data structure.
You can group a set of events that exhibit a common behavior as a collection. When an endpoint is
subscribed to a collection, it receives notifications for each event included in the collection whenever
they are published from the server.
Defining Events
Use the Define Server Side Events page to define the data type and data structure for state changes that
occur on the server. Examples of state changes include:
• A custom state change such as adding or updating a row in an application data table.
Navigation
The following example shows the Server Side Events grid where you add server side events.
Data Type Select between KeyValue Pair or PeopleCode Rowset. The data
type defines how the system structures the event data while
publishing the event. The value you assign determines what you
enter for a data structure.
Data Structure Enter the Data Structure value, depending on the Data Type
selected.
Navigation
This example illustrates the fields and controls on the Define Server Event Collections Page. You can find
definitions for the fields and controls later on this page.
Collection Name Enter the unique name for the event collection.
Root Package ID Select the PeopleCode application package that contains the
application class that is the handler for this collection.
Application Class ID Select the PeopleCode application class that handles the
events that are part of the event collection when they are
published. A valid handler class implements the PT_PNCOLL_
HANDLER:Handler interface.
Events Click the Events link to maintain the events for the event
collection using the Add Events page. If an endpoint is
subscribed to the collection, then it will receive the push
notifications for each of the events listed in this page.
This example illustrates the fields and controls on the Add Events page.
Publishing Events
You use PeopleCode to publish an event:
• For custom endpoint subscriptions, create an object of the PSEvent class to publish the event.
• For certain delivered endpoint subscriptions, instantiate and use delivered applications classes to
publish to that endpoint—for example, to the Notification window.
In this case, the event will be sent only to user VP1 (if VP1 has subscribed to the event).
&EventObject.AddRecipient("VP1", 1)
This example illustrates publishing an event for a PeopleCode rowset. In this example,
WORKFLOWAPPROVAL is the server event for which name and status fields are defined. All users
assigned the role of Workflow Administrator are added as recipients.
In this case, the event will be sent only to users who have subscribed to the event and belong to the
role: Workflow Administrator.
&EventObject.AddRecipient("Workflow Administrator", 2);
The following PeopleCode excerpt illustrates the publication of a notification of type alert:
import PTPN_PUBLISH:PublishToWindow;
Subscribing to Events
You can use one of several methodologies to subscribe an endpoint to an event or event collection:
• Using JavaScript, the event data is published using the JavaScript Object Notation (JSON) format:
• Using PeopleCode.
For custom endpoint subscriptions, create an object of the PSEvent class to subscribe to the event.
EVENT_NAME The name of the event that the endpoint is being subscribed to.
For example:
Subscribe("PRCSEVENTS", ProcessHandler);
COLLECTION_NAME The name of the event collection that the endpoint is being
subscribed to.
For example, the Notification window has been subscribed to the PUSHNOTIFICATIONWINDOW
event collection using this JavaScript code:
SubscribeCollection("PUSHNOTIFICATIONWINDOW",UpdatePNUI);
For example, the following code creates a subscription for the PRCSEVENTS event:
Local object &EventObject = CreateObject("PSEvent");
Local boolean &SubscriptionHandle = &EventObject.Subscribe("PRCSEVENTS", "PT_CONQRS⇒
:CQTEMPTABLES:OnEvent");
Then, implement an application class that defines the callback method for the event subscription:
method OnEvent
/+ &EventObject as Object +/
Local object &EventNotifObject = CreateObject("PSEvent");
/* Actual code omitted here */
end-method;
2. Navigate through the portal registry folders and select the content reference definition for the
component.
3. Click theIWC Message Events link on the Content Ref Administration page.
5. Add a new row on the IWC Message Events page, specifying these values:
6. Click the Map to display the Map Events Data to Page Elements page.
On the Map Events Data To Page Elements page you can map the data of a defined event to a page
element.
Event Name Displays the event name that was entered on the Content
Reference Message Events page.
Page Name Select the page where you want the event subscription added.
Event Data Select one of the data elements defined for the event. The drop-
down will display key values if the event data type is KeyValue
Pair and record fields if the event data type is PeopleCode
Rowset.
Page Record Field Name Select the page record field name for the page element to be
updated.
Navigation
This example illustrates the fields and controls on the Broadcast Message page. You can find definitions
for the fields and controls later on this page.
Role/User Name Select the role or user ID to be the recipient of the broadcast
message.
Message Enter the message as free-form text. You can use the following
variables within the message body:
PTSVR_EVENTS ADS definition for events for copying event definitions and
their corresponding IWC subscription configurations.
PTPN_EVENT_COLLECTION ADS definition for event collections for copying both collection
definitions as well as all the associated event definitions for that
collection.
Related Links
"Application Data Set Overview" (PeopleTools 8.59: Lifecycle Management Guide)