cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Create an widget action to open a popup in backoffice

0 Kudos
1,513

Hi experts

I am creating a button to open a custom popup that contains a .zul form. but I can't get the popup to appear when I click the button. I have defined the two widgets, the connection-widget, input and output sockets,

My action definition where I define the sockets output:

<action-definition id="com.hiberus.hybris.arenal.arenalcsbackoffice.actions.returns.arenalcreatereturnrequestaction"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:noNamespaceSchemaLocation="http://www.hybris.com/schema/cockpitng/action-definition.xsd">

    <name>arenal.createreturnrequest.action</name>
    <description>Create Return Request Action</description>
    <author>hiberus</author>
    <version>0.1</version>

    <actionClassName>com.hiberus.hybris.arenal.arenalcsbackoffice.actions.returns.CreateReturnRequestAction</actionClassName>
    <inputType>de.hybris.platform.core.model.order.OrderModel</inputType>
    <outputType>de.hybris.platform.core.model.order.OrderModel</outputType>

    <iconUri>icons/icon_action_return_default.png</iconUri>
    <iconDisabledUri>icons/icon_action_return_disabled.png</iconDisabledUri>
    <iconHoverUri>icons/icon_action_return_hover.png</iconHoverUri>

    <settings>
        <setting key="viewMode" default-value="iconAndText"/>
    </settings>
    
    <!-- Sockets definition-->
    <sockets>
        <output id="createReturnRequestContext"/>
    </sockets>
</action-definition>

In the action class I send the event. Debugging the execution gets here correctly

public ActionResult<OrderModel> perform(ActionContext<OrderModel> actionContext) {
this.sendOutput("createReturnRequestContext", actionContext.getData());
return new ActionResult("success");
}

Widget definition of the popup:

<widget-definition id="com.hiberus.hybris.arenal.arenalcsbackoffice.widgets.returns.arenalcreatereturnrequest"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="http://www.hybris.com/schema/cockpitng/widget-definition.xsd">

<name>Create Return Request</name>
<description>Create Return Request widget.</description>
<defaultTitle>Create Return Request</defaultTitle>
<author>hybris</author>
<version>0.1</version>

<sockets>
<input type="de.hybris.platform.core.model.order.OrderModel" id="inputObject"/>
<output type="java.lang.String" id="confirm"/>
</sockets>

<keywords>
<keyword>OMS</keyword>
</keywords>

<controller class="com.hiberus.hybris.arenal.arenalcsbackoffice.widgets.returns.CreateReturnRequestController"/>

</widget-definition>

And i define in the controller class. Debugging the execution never gets here

@SocketEvent(
socketId = "inputObject")
public void initCreateReturnRequestForm(OrderModel inputOrder) {
... }

In my widgets.xml I define the widget-connection and the popup

<widget-connection 
  sourceWidgetId="STUB_com.hiberus.hybris.arenal.arenalcsbackoffice.actions.returns.arenalcreatereturnrequestaction" 
outputId="createReturnRequestContext"
targetWidgetId="arenalCreateReturnRequestPopup"
inputId="inputObject"/>


<widget id="arenalCreateReturnRequestPopup" widgetDefinitionId="com.hiberus.hybris.arenal.arenalcsbackoffice.widgets.returns.arenalcreatereturnrequest" slotId="cockpitWidgetChildrenInvisible"title="Create Return Request"template="true">

<instance-settings socketEventRoutingMode="LAST_USED">
<create onInit="false" reuseExisting="true">
<all-incoming-events/>
</create>
<close>
<all-outgoing-events/>
</close>
<select onInit="false">
<all-incoming-events/>
</select>
</instance-settings>

<setting key="widgetStyleClass" type="String"></setting>
<setting key="__externalLocationPath" type="String">extension://arenalcsbackoffice</setting>
<setting key="widgetStyleAttribute" type="String"></setting>
<setting key="_width" type="String">1200px</setting>
<setting key="_height" type="String">700px</setting>
<virtual-sockets />
</widget>

Accepted Solutions (0)

Answers (0)