Tuesday, April 2, 2019

Fluid and Search Pages

According to the 'Fluid Programming Fundamentals Red Paper', there are three types of search alternatives:

  1. Real Time Search
    This uses a Pivot Grid with the Component as the source, and the Pivot Grid Wizard will create a query in the background using the search record.

    To enable this, on the Internet tab the Search Page section should be 'Search', and on the Fluid tab the Search Type should be 'Standard'.

  2. Keyword Search
    This uses a Search Index.

    To enable this, on the Internet tab the Search Page section should be 'Keyword', and on the Fluid tab the Search Type should be 'Standard'.

  3. Search Page
    This is a custom implementation of the PTS_NUI_SEARCH or PTS_NUI_SEARCH_S Fluid 'Search' pages.

    This would be custom page development, and you would insert the page into the component.

Also under Search Type (on the Fluid tab) there is the option for 'None' and 'Master/Detail'.
You can see these options under PSPNLGRPDEFN.INCSEARCH:

  • 0 = None. This seems to be the default , and the vast majority of components have this.
  • 1 = Standard. 
  • 2 = Master/Detail. In the FSCM and HCM databases I haven't seen any of these.

The main difference between 1 and 2 seems to be that 1 -> PTS_NUI_SEARCH as the Search Page, and 2 -> PTS_NUI_SEARCH_S as the search page. I didn't notice any difference in the search between the two when using the Pivot Grid search. Although you can see in the HTML references to the search page, so you can see which one you are on.

For the Master/Detail implementation, there is also the option of using the PT_MDSTARTPAGE_NUI component. With this you define the Portal CREF pointing to this, and add additional parameters like so:

nRow=0&GMenu=FSU_DB_PRIVS&GComp=MY_COMPONENT&GPage=MYPAGE

This component must also be a Fluid component, with Search Page Type of 'None'. The page will be a 'Standard' Fluid page.

The page will have at least two 'Layout Only' groupboxes with the outer one having the following styles:
psc_scroll psa_md_grouplet

Inside the inner groupbox there should be a grid with at least the following fields.

  • A 'Layout Only' groupbox with PTLAYOUT.GROUPBOX1, with the style 
    ps_vtab
  • A hyperlink which will be used to contain the link.
  • (Optionally) an edit box used for the counter, with the style 
    psc_list_count
You would then write some PeopleCode on Page Activate (or Component Postbuild perhaps) which will populate the grid with the links you want to add.

Then on the groupbox field you need to set the following properties:

  • SetGroupletActionUrl
  • SetGroupletDisplayIn
  • IsGroupletLabelOnly
  • Visible



For example:
&sMenu = MenuName.MY_MENU;
&sComp = Component.MY_TARGET_CMP;
&sPage = Page.MY_TARGET_PG;
&sNewURL = GenerateComponentContentURL(%Portal, %Node, @("MenuName." | &sMenu), %Market, @("Component." | &sComp), @("Page." | &sPage), %Action_UpdateDisplay);
&sNewURL = EncodeURL(&sNewURL | "&SEARCH_KEY=" | &SearchKeyValue); /* If necessary */
&rs(&n).PTLAYOUT.GROUPBOX1.SetGroupletActionUrl(&sNewURL);
&rs(&n).PTLAYOUT.GROUPBOX1.SetGroupletDisplayIn(%GroupletActionMDTargetFluid);
&rs(&n).PTLAYOUT.GROUPBOX1.IsGroupletLabelOnly = True;
&rs(&n).PTLAYOUT.GROUPBOX1.Visible = False;
&rs(&n).MY_RECORD.LINE_NBR.Value = &nRow;
&rs(&n).MY_RECORD.LINE_NBR.Label = &Value;
&rs(&n).MY_RECORD.LINE_NBR.LabelImage = @("Image.CHECKLIST_64");
&rs(&n).MY_RECORD.COUNTER.Value = &NumOfRows;

Note: You can see this in detail under the 'Implementing Master/Detail Components' section in PeopleBooks 'Working with Master/Detail Components'.

No comments:

Post a Comment