Hybris- how to disable cancle/refund button in cscokpit

 如何在 CSCokpit 中 disable掉 order cancle,order refund 等button?

 

这里有这样一个类:

 

 

/*** Eclipse Class Decompiler plugin, copyright (c) 2012 Chao Chen ([email protected]) ***/
package de.hybris.platform.cscockpit.widgets.renderers.impl;

import de.hybris.platform.cockpit.session.UISession;
import de.hybris.platform.cockpit.session.UISessionUtils;
import de.hybris.platform.cockpit.util.UITools;
import de.hybris.platform.cockpit.widgets.Widget;
import de.hybris.platform.cockpit.widgets.models.impl.DefaultItemWidgetModel;
import de.hybris.platform.cscockpit.utils.LabelUtils;
import de.hybris.platform.cscockpit.widgets.controllers.OrderManagementActionsWidgetController;
import de.hybris.platform.cscockpit.widgets.renderers.utils.PopupWidgetHelper;
import org.springframework.beans.factory.annotation.Required;
import org.zkoss.zk.ui.api.HtmlBasedComponent;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Div;
// extends 这个类
public class OrderManagementActionsWidgetRenderer extends AbstractCsWidgetRenderer<Widget<DefaultItemWidgetModel, OrderManagementActionsWidgetController>>
{
  protected static final String CSS_ORDER_MANAGEMENT_ACTIONS_WIDGET = "orderManagementActionsWidget";
  protected static final String CSS_FULL_CANCEL_POPUP = "csFullCancelPopup";
  protected static final String CSS_PARTIAL_CANCEL_POPUP = "csPartialCancelPopup";
  protected static final String CSS_RETURN_REQUEST_CREATE_WIDGET = "csReturnRequestCreateWidget";
  protected static final String COCKPIT_ID_CANCEL_ORDER = "Order_Order_Management_Cancel_Order_button";
  protected static final String COCKPIT_ID_PARTIAL_CANCEL_ORDER = "Order_Order_Management_Partial_Cancel_Order_button";
  protected static final String COCKPIT_ID_REFUND_ORDER = "Order_Order_Management_Refund_Order_button";
  protected static final String COCKPIT_ID_REPLACE_ORDER = "Order_Order_Management_Replace_Order_button";
  private PopupWidgetHelper popupWidgetHelper;

  protected PopupWidgetHelper getPopupWidgetHelper()
  {
    return this.popupWidgetHelper;
  }

  @Required
  public void setPopupWidgetHelper(PopupWidgetHelper popupWidgetHelper)
  {
    this.popupWidgetHelper = popupWidgetHelper;
  }

//override 这个方法,添加你的逻辑
  protected HtmlBasedComponent createContentInternal(Widget<DefaultItemWidgetModel, OrderManagementActionsWidgetController> widget, HtmlBasedComponent rootContainer)
  {
    Div component = new Div();
    component.setSclass("orderManagementActionsWidget");

    createButton(widget, component, "cancelWholeOrder", "csFullOrderCancellationWidgetConfig", "csFullOrderCancel-Popup", 
      "csFullCancelPopup", "popup.fullCancellationRequestCreate", !(((OrderManagementActionsWidgetController)widget.getWidgetController()).isFullCancelPossible()));
    createButton(widget, component, "cancelPartialOrder", "csPartialOrderCancellationWidgetConfig", 
      "csPartialOrderCancellationWidgetConfig-Popup", "csPartialCancelPopup", "popup.partialCancellationRequestCreate", 
      !(((OrderManagementActionsWidgetController)widget.getWidgetController()).isPartialCancelPossible()));
    createButton(widget, component, "refundOrder", "csRefundRequestCreateWidgetConfig", "csRefundRequestCreateWidget-Popup", 
      "csReturnRequestCreateWidget", "popup.refundRequestCreate", !(((OrderManagementActionsWidgetController)widget.getWidgetController()).isRefundPossible()));
    createButton(widget, component, "replaceOrder", "csReplacementRequestCreateWidgetConfig", 
      "csReplacementRequestCreateWidget-Popup", "csReturnRequestCreateWidget", "popup.replacementRequestCreate", 
      !(((OrderManagementActionsWidgetController)widget
      .getWidgetController()).isReplacePossible()));

    return component;
  }

  protected void createButton(Widget<DefaultItemWidgetModel, OrderManagementActionsWidgetController> widget, Div container, String buttonLabelName, String springWidgetName, String popupCode, String cssClass, String popupTitleLabelName, boolean disabled)
  {
    EventListener eventListener = new EventListener(widget, container, springWidgetName, popupCode, cssClass, popupTitleLabelName)
    {
      public void onEvent(Event event)
        throws Exception
      {
        OrderManagementActionsWidgetRenderer.this.handleButtonClickEvent(this.val$widget, event, this.val$container, this.val$springWidgetName, this.val$popupCode, this.val$cssClass, this.val$popupTitleLabelName);
      }
    };
    createButton(widget, container, buttonLabelName, eventListener, disabled);
  }

  protected void handleButtonClickEvent(Widget<DefaultItemWidgetModel, OrderManagementActionsWidgetController> widget, Event event, Div container, String springWidgetName, String popupCode, String cssClass, String popupTitleLabelName)
  {
    getPopupWidgetHelper().createPopupWidget(container, springWidgetName, popupCode, cssClass, 
      LabelUtils.getLabel(widget, popupTitleLabelName, new Object[0]), 1000);
  }

  protected void createButton(Widget widget, Div container, String buttonLabelName, EventListener eventListener, boolean disabled)
  {
    Button button = new Button();

    if (UISessionUtils.getCurrentSession().isUsingTestIDs())
    {
      if ("cancelWholeOrder".equals(buttonLabelName))
      {
        UITools.applyTestID(button, "Order_Order_Management_Cancel_Order_button");
      }
      else if ("cancelPartialOrder".equals(buttonLabelName))
      {
        UITools.applyTestID(button, "Order_Order_Management_Partial_Cancel_Order_button");
      }
      else if ("refundOrder".equals(buttonLabelName))
      {
        UITools.applyTestID(button, "Order_Order_Management_Refund_Order_button");
      }
      else if ("replaceOrder".equals(buttonLabelName))
      {
        UITools.applyTestID(button, "Order_Order_Management_Replace_Order_button");
      }
    }

    button.setLabel(LabelUtils.getLabel(widget, buttonLabelName, new Object[0]));
    button.setParent(container);
    button.setDisabled(disabled);
    button.addEventListener("onClick", eventListener);
  }
}

 

所以这里很简单 ,只要extends这个类 再override上面的方法,添加你的逻辑就OK了,如下

public class MyOrderManagementActionsWidgetRenderer extends OrderManagementActionsWidgetRenderer
{
	private static final Logger LOG = Logger.getLogger(VirginOrderManagementActionsWidgetRenderer.class);
	private UserService userService;
	private static String CREDITCARD = "creditcard";
	@Override
	protected HtmlBasedComponent createContentInternal(
			final Widget<DefaultItemWidgetModel, OrderManagementActionsWidgetController> widget,
			final HtmlBasedComponent rootContainer)
	{

		String paymentMode = getPaymentModeCode(widget);	
		final Div component = new Div();
		component.setSclass("orderManagementActionsWidget");
		Boolean canCancel=false;
		for(ConsignmentStatus status:getConsignmentStatus(widget)){
			if(ConsignmentStatus.PACKED.equals(status)||ConsignmentStatus.SHIPPED.equals(status)){// PACKED/SHIPPED/READY FOR COLLECTION/ COLLECTED.
				canCancel=false;
				break;
			}else if(ConsignmentStatus.READY.equals(status)||ConsignmentStatus.PICKPACK.equals(status)||ConsignmentStatus.NOT_COLLECTED.equals(status)){//READY/PICKPACK/PICKPACK/PICKPACK/PICKPACK
				canCancel=true;
			}
		}
		createButton(widget, component, "cancelWholeOrder",
				"csFullOrderCancellationWidgetConfig",
				"csFullOrderCancel-Popup", "csFullCancelPopup",
				"popup.fullCancellationRequestCreate",
				!canCancel);

 

 

 

 

你可能感兴趣的:(disable,button,order,hybris,cscockpit,cancle)