About the Author

Sunday, 25 September 2016

Application class to control ­­­Side (Left) Panel in 8.55

With the release 8.55 People Tools has introduced new page types namely Side Page 1 and Side Page 2. These pages are a good replacement technique to the old method of having a complex two panel layout. With the introduction of side pages, it is easy to manage the navigation or other supplemental pages in a component. These pages act as a standalone object and could be added to the component like any other standard pages. The moment these pages are added, the component starts displaying the side panel pages (left panel or right panel) and it does not require additional styling or coding. In version 8.54 the toggling between the side pages and main pages were handled with the help of certain derived functions present on the people code event PT_TWOPNL_WRK.BUTTON.FieldFormula.

The toggle switch you see on the two panel layout was an actual button field present on the page, style of which was controlled to work as the side panel pull switch. However with the side page concept of 8.55 onwards, the field button is not part of the application pages and these functions may not work as expected.

With 8.55 onward the inbuilt logic to control the appearance of the fluid components is delivered in application packages.  People Tools is delivering an application package PT_PAGE_UTILS which contains classes to control the general behavior of fluid components. In that application package there is a Application Class named PanelController which can be used to control the behavior of Side Pages in a two, three or four panel page designs.

The application class consists of methods which could be invoked to set the behavior of the side pages. The methods that consists the names Side1 can be used to control the Side Page 1 (Left Panel). Similarly the methods that consists the name Side2 can be used to control the Side Page 2 (Right Panel).

Almost all the methods are pretty much self explanatory so that reading the method name will give you a fair idea of what that method is intended to do. Some methods such as SetSide1Enabled() expects an input Boolean value to decide whether the property that need to be set is Enabled/Disabled.  There are couple of method which will control advanced properties. For example using the method UsePersistentOpenModeSide1(True) will keep the left side panel always open regardless of the size of the browser window. It will also keep the left panel open even if the user has selected an item from the left panel navigation list.

These methods will be handy when you have to code the side panel to behave differently in different devices.

For example, the below piece of code will open the side panel by default if the component is rendered on a large form factor device.

import PT_PAGE_UTILS:PanelController;

Local PT_PAGE_UTILS:PanelController &objPage;

&objPage = create PT_PAGE_UTILS:PanelController();

If %Request.BrowserDeviceFormFactor = %FormFactor_Large Then
&objPage.Initialize( False);
&objPage.SetSide1OpenState( True);
&objPage.UpdatePanel();

End-If;

2 comments:

  1. Thank you, it is really helpful.

    We were trying to implement the functionality to keep the Left Side Menu open irrespective of Browser size and are using SetSide1OpenState( True). We placed the peoplecode in Initialize App Package as well as Page Activate but the code is not working. We have added the Winmessages and the code is tricking. Can you please let us know what we are missing? Thanks for your help.

    ReplyDelete
    Replies
    1. Have you tried UsePersistentOpenModeSide1(True) ?

      Delete

Note: only a member of this blog may post a comment.