Foros de discusión

add extra option in nested portlet configuration

Alex Man, modificado hace 6 años.

add extra option in nested portlet configuration

Junior Member Mensajes: 70 Fecha de incorporación: 8/02/16 Mensajes recientes
I need to add an extra option for to Show Breadcrumbs , In order to achieve this I have created a jsp hook for configuration.jsp for nested portlet and have added an option for Showing Breadcrumbs like as shown below

Option for showing breadcrumbs

<aui:form action="<%= configurationActionURL %>" method="post" name="fm">
	<aui:input name="<%= Constants.CMD %>" type="hidden" value="<%= Constants.UPDATE %>" />
	<aui:input name="redirect" type="hidden" value="<%= configurationRenderURL %>" />

	&lt;%
	boolean portletDecorateDefaultBreadCrumbs = GetterUtil.getBoolean(themeDisplay.getThemeSetting("portlet-setup-show-bread-crumbs-default"), true);

	boolean portletSetupShowBreadCrumbs = GetterUtil.getBoolean(portletPreferences.getValue("portletSetupShowBreadCrumbs", String.valueOf(portletDecorateDefaultBreadCrumbs)));
	%&gt;

	<aui:fieldset label="Show BreadCrumbs">
		<aui:input label="show-borders" name="preferences--portletSetupShowBreadCrumbs--" type="checkbox" value="<%= portletSetupShowBreadCrumbs %>" />
	</aui:fieldset>

	<aui:button-row>
		<aui:button type="submit" />
	</aui:button-row>
</aui:form>



But the problem is when I click the submit button I am getting the following exception

16:37:52,099 ERROR [http-bio-8081-exec-140][render_portlet_jsp:132] null
java.lang.NullPointerException
	at com.liferay.portlet.nestedportlets.action.ConfigurationActionImpl.reorganizeNestedColumns(ConfigurationActionImpl.java:120)
	at com.liferay.portlet.nestedportlets.action.ConfigurationActionImpl.processAction(ConfigurationActionImpl.java:70)
	at com.liferay.portlet.portletconfiguration.action.EditConfigurationAction.processAction(EditConfigurationAction.java:76)
	at com.liferay.portal.struts.PortletRequestProcessor.process(PortletRequestProcessor.java:166)
	at com.liferay.portlet.StrutsPortlet.processAction(StrutsPortlet.java:218)
	at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:71)
	at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:48)
	at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:597)
	at com.liferay.portlet.InvokerPortletImpl.invokeAction(InvokerPortletImpl.java:628)
	at com.liferay.portlet.InvokerPortletImpl.processAction(InvokerPortletImpl.java:308)
	at com.liferay.portlet.PortletContainerImpl._doProcessAction(PortletContainerImpl.java:389)
	at com.liferay.portlet.PortletContainerImpl.processAction(PortletContainerImpl.java:107)
	at com.liferay.portlet.SecurityPortletContainerWrapper.processAction(SecurityPortletContainerWrapper.java:109)
	at com.liferay.portlet.RestrictPortletContainerWrapper.processAction(RestrictPortletContainerWrapper.java:75)
	at com.liferay.portal.kernel.portlet.PortletContainerUtil.processAction(PortletContainerUtil.java:115)
	at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:386)
	at com.liferay.portal.action.LayoutAction.doExecute(LayoutAction.java:200)
	at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:95)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)



Full configuration.jsp is given below

&lt;%@ include file="/html/portlet/nested_portlets/init.jsp" %&gt;

<liferay-portlet:actionurl portletConfiguration="true" var="configurationActionURL" />

<liferay-portlet:renderurl portletConfiguration="true" var="configurationRenderURL" />

<aui:form action="<%= configurationActionURL %>" method="post" name="fm">
	<aui:input name="<%= Constants.CMD %>" type="hidden" value="<%= Constants.UPDATE %>" />
	<aui:input name="redirect" type="hidden" value="<%= configurationRenderURL %>" />

	<aui:fieldset label="layout-template">
		<layouttemplate> layoutTemplates = LayoutTemplateLocalServiceUtil.getLayoutTemplates(theme.getThemeId());

		layoutTemplates = PluginUtil.restrictPlugins(layoutTemplates, user);

		List<string> unsupportedLayoutTemplates = ListUtil.fromArray(PropsUtil.getArray(PropsKeys.NESTED_PORTLETS_LAYOUT_TEMPLATE_UNSUPPORTED));

		int i = 0;

		for (LayoutTemplate layoutTemplate : layoutTemplates) {
			if (!unsupportedLayoutTemplates.contains(layoutTemplate.getLayoutTemplateId())) {
				String layoutTemplateName = layoutTemplate.getName();
		%&gt;

				<c:if test="<%= (i % CELLS_PER_ROW) == 0 %>">
					</c:if></string></layouttemplate><c:if test="<%= (i % CELLS_PER_ROW) == (CELLS_PER_ROW - 1) %>">
					</c:if><table border="0" cellpadding="0" cellspacing="10" style="margin-top: 10px;" width="100%">

		&lt;%
		int CELLS_PER_ROW = 4;

		String layoutTemplateId = portletPreferences.getValue("layoutTemplateId", PropsValues.NESTED_PORTLETS_LAYOUT_TEMPLATE_DEFAULT);

		List<tbody><tr>
				

				<td align="center" width="<%= 100 / CELLS_PER_ROW %>%">
					<img alt="<liferay-ui:message key=" thumbnail">" onclick="document.getElementById('<portlet:namespace />layoutTemplateId&lt;%= i %&gt;').checked = true;" src="&lt;%= layoutTemplate.getStaticResourcePath() %&gt;&lt;%= HtmlUtil.escapeAttribute(layoutTemplate.getThumbnailPath()) %&gt;" /&gt;<br>

					<aui:input checked="<%= layoutTemplateId.equals(layoutTemplate.getLayoutTemplateId()) %>" id="<%= &quot;layoutTemplateId&quot; + i %>" label="<%= LanguageUtil.get(locale, &quot;layout-template-&quot; + layoutTemplateName, layoutTemplateName) %>" name="preferences--layoutTemplateId--" type="radio" value="<%= layoutTemplate.getLayoutTemplateId() %>" />
				</td>

				</tr>
				

		&lt;%
				i++;
			}
		}
		%&gt;

		</tbody></table>
	</aui:fieldset>

	&lt;%
	boolean portletDecorateDefault = GetterUtil.getBoolean(themeDisplay.getThemeSetting("portlet-setup-show-borders-default"), true);

	boolean portletSetupShowBorders = GetterUtil.getBoolean(portletPreferences.getValue("portletSetupShowBorders", String.valueOf(portletDecorateDefault)));
	%&gt;

	<aui:fieldset label="display-settings">
		<aui:input label="show-borders" name="preferences--portletSetupShowBorders--" type="checkbox" value="<%= portletSetupShowBorders %>" />
	</aui:fieldset>

	<aui:button-row>
		<aui:button type="submit" />
	</aui:button-row>
</aui:form>


<aui:form action="<%= configurationActionURL %>" method="post" name="fm">
	<aui:input name="<%= Constants.CMD %>" type="hidden" value="<%= Constants.UPDATE %>" />
	<aui:input name="redirect" type="hidden" value="<%= configurationRenderURL %>" />

	&lt;%
	boolean portletDecorateDefaultBreadCrumbs = GetterUtil.getBoolean(themeDisplay.getThemeSetting("portlet-setup-show-bread-crumbs-default"), true);

	boolean portletSetupShowBreadCrumbs = GetterUtil.getBoolean(portletPreferences.getValue("portletSetupShowBreadCrumbs", String.valueOf(portletDecorateDefaultBreadCrumbs)));
	%&gt;

	<aui:fieldset label="Show BreadCrumbs">
		<aui:input label="show-borders" name="preferences--portletSetupShowBreadCrumbs--" type="checkbox" value="<%= portletSetupShowBreadCrumbs %>" />
	</aui:fieldset>

	<aui:button-row>
		<aui:button type="submit" />
	</aui:button-row>
</aui:form>
&gt;