Userview Menu Plugin

 

The Userview Menu Plugin is used to extend types of pages/UI elements available in UI Builder. A useable Userview Menu plugin must extend org.joget.apps.userview.model.UserviewMenu abstract class.

Abstract Class

org.joget.apps.userview.model.UserviewMenu

Field Detail

Constants
REDIRECT_URL_PROPERTY

public static final java.lang.String REDIRECT_URL_PROPERTY = "userviewRedirectUrl";
Property key to set a url for redirection.

REDIRECT_PARENT_PROPERTY

public static final java.lang.String REDIRECT_PARENT_PROPERTY = "userviewRedirectParent";
Property key to set the redirection target to parent window. The property expecting "true" or "false" as value.

ALERT_MESSAGE_PROPERTY

public static final java.lang.String ALERT_MESSAGE_PROPERTY = "userviewAlertMessage";
Property key to set a alert message to show when a page loaded.

Method Detail

Abstract Methods
getCategory

public abstract java.lang.String getCategory()
Category to be displayed in Userview Builder palette.

getIcon

public abstract java.lang.String getIcon()
Icon path to be displayed in Userview Builder palette.

getRenderPage

public abstract java.lang.String getRenderPage()
Get render HTML template for UI.

isHomePageSupported

public abstract boolean isHomePageSupported()
Used to determine this menu item can used as home page or not.

getDecoratedMenu

public abstract java.lang.String getDecoratedMenu()
Get Decorated menu HTML for rendering.

Overridable Methods
getMenu

public java.lang.String getMenu()
Get menu html for rendering. It will call getDecoratedMenu method to retrieve the menu HTML. If empty value is return, a default menu HTML will be generated based on getURL method and "label" property.

getJspPage

public java.lang.String getJspPage()
Get path of JSP file to render the HTML template. If this value is not NULL, value returned by getRenderPage will be ignored.
It is used to use the system predefined template for rendering. Options are as following:

- userview/plugin/datalist.jsp

- userview/plugin/form.jsp

- userview/plugin/runProcess.jsp

- userview/plugin/unauthorized.jsp

Utility Methods
getUrl

public java.lang.String getUrl()
Gets URL of this menu.

setUrl

public void setUrl(java.lang.String url)
Sets URL of this menu.

getKey

public java.lang.String getKey()
Gets userview key of this menu.

setKey

public void setKey(java.lang.String key)
Sets userview key of this menu.

getRequestParameters

public java.util.Map getRequestParameters()
Gets request parameters.

setRequestParameters

public void setRequestParameters(java.util.Map requestParameters)
Sets request parameters.

getRequestParameter

public java.lang.Object getRequestParameter(java.lang.String requestParameter)
Convenience method to get a parameter value.

getRequestParameterString

public java.lang.String getRequestParameterString(java.lang.String requestParameter)
Convenience method to get a parameter String value.

Return Empty string instead of NULL.

getReadyJspPage

public java.lang.String getReadyJspPage()
Used by the system to retrieve the JSP file page to avoid the logic to run again. It will called the getJspPage method once to initial the value.

getReadyRenderPage

public java.lang.String getReadyRenderPage()
Used by the system to retrieve the HTML template to avoid the logic to run again. It will called the getRenderPage method once to initial the value.

getUserview

public org.joget.apps.userview.model.Userview getUserview()
Gets the userview which this menu is belongs to.

setUserview

public void setUserview(org.joget.apps.userview.model.Userview userview)
Sets the userview which this menu is belongs to.

setRedirectUrl

public void setRedirectUrl(java.lang.String redirectUrl)
Set this property to force the userview to redirect to a specific URL.

setRedirectUrl

public void setRedirectUrl(java.lang.String redirectUrl, boolean redirectToParent)
Set this property to force the userview to redirect to a specific URL with option to redirect in the parent window.

setAlertMessage

public void setAlertMessage(java.lang.String message)
Set this property to display an alert message/prompt.

Plugin Properties Options

 

Mandatory Property

id

  • All Userview Menu Plugin must has this property appear in the Properties Options JSON. 
  • This is used by the system to store the dynamic generated UUID.
{
    name : 'id',
    label : 'ID',
    type : 'hidden'
}

customId

  • All Userview Menu Plugin must has this property appear in the Properties Options JSON. 
  • This is used for admin user to key in a desired menu id.
{
    name : 'customId',
    label : '@@userview.datalistmenu.customId@@',
    type : 'textfield',
    regex_validation : '^[a-zA-Z0-9_]+$',
    validation_message : '@@userview.datalistmenu.invalidId@@'
}

label

  • All Userview Menu Plugin must has this property appear in the Properties Options JSON. 
  • This is used for admin user to key in a display label for the menu.
{
    name : 'label',
    label : '@@userview.datalistmenu.label@@',
    type : 'textfield',
    required : 'True',
    value : 'List'
}

Userview Menu Plugin Template Sample

Following is a sample menu template of a HTML Page menu element. It is constructed using FreeMarker syntax. This template will be used and returned by getRenderPage method.

public String getRenderPage() {
    PluginManager pluginManager = (PluginManager) AppUtil.getApplicationContext().getBean("pluginManager");
 
    Map dataModel = new HashMap();
    dataModel.put("element", this);
 
    return pluginManager.getPluginFreeMarkerTemplate(dataModel, getClassName(), "/templates/htmlPageMenu.ftl", null);
}

 

<div class="ui-html">
    ${element.properties.content!}
</div>

Explanations

  • There are no specify format need to follow.
  • Please take note that your html template need to disable all user action when it is in preview mode. You decide it is preview mode or not by following code:

"true".equals(getRequestParameterString("isPreview")

Tutorials

Related Community Plugins

  • List Menu
    org.joget.apps.userview.lib.DataListMenu (wflow-core)
  • Form Menu
    org.joget.apps.userview.lib.FormMenu (wflow-core)
  • HTML Page
    org.joget.apps.userview.lib.HtmlPage (wflow-core)
  • Inbox
    org.joget.apps.userview.lib.InboxMenu (wflow-core)
  • Link
    org.joget.apps.userview.lib.Link (wflow-core)
  • Run Process
    org.joget.apps.userview.lib.RunProcess (wflow-core)
Created by Damian Last modified by Aadrian on Dec 13, 2024