`
wahaha603
  • 浏览: 79999 次
  • 来自: 上海
社区版块
存档分类
最新评论

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 (cnfree2000@hotmail.com) ***/
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);

 

 

 

 

分享到:
评论

相关推荐

    hybris-b2b-spartacus:docker中的SAP Commerce B2B-与Spartacus组合

    将CXCOM200500P_0-70004955.ZIP移至hybris-b2b-spartacus/hybris-b2b CXCOM200500P_0-70004955.ZIP hybris-b2b-spartacus/hybris-b2b (如果要使用其他版本的SAP Commerce,请编辑hybris-b2b-spartacus/hybris-b2b/...

    hybris-base-image:使用 ubuntu 的 Hybris Commerce Suite 基本映像

    hybris-base-image Hybris Commerce Suite 的基本映像,基于ubuntu:latest 。 可以开箱即用地用于基于 Hybris Commerce Suite &gt;5.5 的项目。 请直接在阅读此文档。 否则链接可能不起作用。 上的是从 GitHub 源存储库...

    rootfs-templates:用于生成hybris-mobian图像的debos配方

    `rootfs-templates`是一个专门用于生成Hybris-Mobian图像的debos配方,它简化了这个复杂过程,让开发者能够更高效地定制和构建自己的嵌入式Linux系统。 Hybris-Mobian是一个基于Debian和Moblin的开源项目,旨在为...

    hybris-tools:hybris 工具和实用程序

    在本主题中,我们将深入探讨“hybris-tools”及其在电商项目中的作用。** **一、hybris-tools概述** “hybris-tools”是专门为hybris平台设计的一系列工具和实用程序,它们旨在简化开发过程,提高效率,以及优化...

    Hybris-AdminCockpit中文说明书

    ### Hybris Administration Cockpit中文说明书 #### 概述 Hybris Administration Cockpit 是一款功能强大的管理工具,专门设计用于在Hybris多渠道解决方案中高效管理各类信息。它为用户提供了一个直观的操作界面,...

    hybris-mini:用于机械键盘的嵌入式蓝牙控制器

    “hybris-mini”是一个专为机械键盘设计的嵌入式蓝牙控制器。这个控制器具有小巧的体积,可以方便地集成到各种机械键盘之中,为键盘提供无线连接功能,让用户能够通过蓝牙设备(如手机、平板或电脑)进行操作。 **...

    Hybris-5.7-Project

    Hybris-5.7-Project

    hybris-snipets:我发现有趣的有用代码片段的集合,我喜欢分享它们

    hybris-snipets 我发现有趣的有用代码片段的集合,我喜欢分享它们

    hybris入门手册_hybris

    【标题】"hybris入门手册_hybris"涵盖了SAP的hybris平台,这是一个高度可扩展的电子商务解决方案,主要用于构建B2B和B2C在线商店。Hybris平台结合了内容管理、订单处理、产品目录管理、客户服务和市场推广等多种功能...

    hybris-acc-typescript:Hybris ACC模块装载机,用于打字稿

    Hybris ACC TypeScript Typescript模块加载程序,可与Hybris ACC无缝集成。背景这个项目是出于对使用TypeScript使用ACC开发Hybris前端的好奇心而诞生的。即使简单地添加TypeScript并开发ACC模块即可使用默认方式(在...

    SAP hybris 6.4 B2C平台搭建文档

    ### SAP Hybris 6.4 B2C 平台搭建详解 #### 一、概述 本文档旨在为SAP Hybris 6.4初学者提供一份详细的B2C平台搭建指南。通过本教程,读者可以了解如何从零开始搭建一个完整的Hybris 6.4 B2C平台,并解决在搭建...

    hybris-docker

    hybris-docker(WIP) 此存储库是为了简化配置,部署和可维护性的目的而尝试对SAP Hbrise电子商务平台进行泊坞。 提供的dockerfile和关联的配置基于开发配置模板。 为了使该产品准备就绪,您将需要根据需要对其进行...

    lambda-function-autocomplete-handler:使用AWS Lambda响应typeaheadautocomplete操作的示例

    设置 npm install npm install serverless -g...redis db由一个lambda填充,该lambda导入由hybris导出到s3存储桶的json文件。 此无服务器功能是只读的。 如何调试? 如何部署? 最初,您可以生成一个程序包。 从长远

    Hybris Platform Installation Guide

    ### Hybris Platform 安装指南知识点详述 #### 引言 Hybris Platform 是一个功能强大的电子商务解决方案平台,被广泛应用于构建多渠道、全渠道的零售业务系统。本指南将详细解析如何安装与初始化 Hybris Commerce ...

    hybris Developer Training Part I - Core Platform - Module 02 - Environment

    本文档是关于Hybris开发者培训课程的第一部分——核心平台的第二模块,主题为开发环境的搭建。Hybris是一个强大的电子商务平台,由SAP公司开发,广泛应用于企业级的电子商务解决方案。本模块主要讲述了如何配置...

    hybris的搭建、使用、集成eclipse(中文版)

    **Hybris概述** Hybris是一款强大的电子商务平台,用于构建高度可扩展且多功能的B2B和B2C在线商店。它提供了丰富的功能,包括产品管理、订单处理、库存控制、客户关系管理、市场营销等,支持多渠道销售,如web、...

    jirafe_for_hybris:希拉夫Jirafe扩展

    git clone :jirafe / hybris-extensions.git 先决条件 Java VM 1.6以上 安装 如果您已经安装了Hybris,请跳过步骤1和2。 解压缩Hybris Multichannel Suite( HYBRIS_HOME稍后将用作Hybris主目录/基本目录的占位符...

    hybris Developer Training Part I - Core Platform - Module 08 - ServiceLayer

    Hybris 是一个强大的电子商务解决方案和多渠道的电子商务平台,广泛应用于B2B和B2C的电子商务领域。Hybris的核心架构被设计为服务导向架构(SOA),这使得它能够利用Spring框架提供的特性来实现高度可配置和可扩展的...

    hadk-faq:Sailfish OS移植指南(HADK)的常见问题解答

    14.1 3.2 hybris-15.1 3.3 hybris-16.0 4个图形4.1口红段故障/无显示4.2 BOARD_USES_QCOM_HARDWARE不在供应商设备存储库中4.3使用Mali GPU的设备4.4图形性能提升4.5黑色画廊图片,没有浏览器内容/浏览器崩溃: 4.6以...

Global site tag (gtag.js) - Google Analytics