Added: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java?rev=905876&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java Wed Feb 3 03:16:07 2010
@@ -0,0 +1,283 @@
+package org.ofbiz.ebaystore;
+
+import java.util.Locale;
+import java.util.Map;
+import javolution.util.FastMap;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.service.DispatchContext;
+import org.ofbiz.service.ServiceUtil;
+import com.ebay.sdk.ApiException;
+import com.ebay.sdk.SdkException;
+import com.ebay.sdk.SdkSoapException;
+import com.ebay.sdk.call.AddSellingManagerInventoryFolderCall;
+import com.ebay.sdk.call.AddSellingManagerProductCall;
+import com.ebay.sdk.call.GetSellingManagerInventoryCall;
+import com.ebay.sdk.call.GetSellingManagerInventoryFolderCall;
+import com.ebay.sdk.call.ReviseSellingManagerProductCall;
+import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderRequestType;
+import com.ebay.soap.eBLBaseComponents.AddSellingManagerInventoryFolderResponseType;
+import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductRequestType;
+import com.ebay.soap.eBLBaseComponents.AddSellingManagerProductResponseType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderRequestType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryFolderResponseType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryRequestType;
+import com.ebay.soap.eBLBaseComponents.GetSellingManagerInventoryResponseType;
+import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductRequestType;
+import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductResponseType;
+import com.ebay.soap.eBLBaseComponents.SellingManagerFolderDetailsType;
+import com.ebay.soap.eBLBaseComponents.SellingManagerProductDetailsType;
+import com.ebay.soap.eBLBaseComponents.SellingManagerProductType;
+
+public class EbayStoreInventoryServices {
+ private static final String resource = "EbayUiLabels";
+ private static final String module = EbayStoreInventoryServices.class.getName();
+ private static final String defaultFolderName = "OFBizProducts";
+ private static String folderId = null;
+ public EbayStoreInventoryServices() {
+ // TODO Auto-generated constructor stub
+ }
+ /*update inventory on ebay site*/
+ public static Map<String,Object> updateEbayStoreInventory(DispatchContext dctx, Map<String,Object> context){
+ Map<String,Object> result = FastMap.newInstance();
+ Locale locale = (Locale) context.get("locale");
+ Delegator delegator = dctx.getDelegator();
+ GetSellingManagerInventoryRequestType invenReq = null;
+ GetSellingManagerInventoryResponseType invenResp = null;
+ boolean checkProd = false;
+ boolean status = false;
+ try {
+ if(context.get("productStoreId") == null || context.get("productId") == null || context.get("folderId") == null){
+ result = ServiceUtil.returnError("The process was required productStoreId, productId and ebay inventory folderId.");
+ result.put("productStoreId", context.get("productStoreId"));
+ result.put("facilityId", context.get("facilityId"));
+ result.put("folderId", context.get("folderId"));
+ return result;
+ }
+
+ String productId = (String)context.get("productId");
+ String folderId = (String)context.get("folderId");
+ // start upload/update products which selected to an ebay inventory
+ if(folderId != null){
+ GetSellingManagerInventoryCall invenCall = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+ invenReq = new GetSellingManagerInventoryRequestType();
+ invenResp = (GetSellingManagerInventoryResponseType) invenCall.execute(invenReq);
+ if(invenResp != null && "SUCCESS".equals(invenResp.getAck().toString())){
+ GenericValue ebayProductStoreInventory = delegator.findByPrimaryKey("EbayProductStoreInventory", UtilMisc.toMap("productId", productId,"facilityId",context.get("facilityId"),"productStoreId",context.get("productStoreId")));
+
+ SellingManagerProductType[] sellingManagerProductTypeList = invenResp.getSellingManagerProduct();
+ for(SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList){
+ SellingManagerProductDetailsType sellingManagerProductDetailsType = sellingManagerProductType.getSellingManagerProductDetails();
+ if(String.valueOf(sellingManagerProductDetailsType.getFolderID()).equals(folderId) && String.valueOf(sellingManagerProductDetailsType.getProductID()).equals(String.valueOf(ebayProductStoreInventory.getLong("ebayProductId"))) && String.valueOf(sellingManagerProductDetailsType.getCustomLabel()).equals(productId)){
+ checkProd = true;
+ break;
+ }
+ }
+ }
+
+ // checkProduct is true then update detail but is false do create new one.
+ if(checkProd == true){
+ status = updateProductInEbayInventoryFolder(dctx,context);
+ }else {
+ status = createNewProductInEbayInventoryFolder(dctx,context);
+ }
+ if(status == true){
+ Debug.logInfo("Done to updated product ".concat(context.get("productId").toString()), module);
+ result = ServiceUtil.returnSuccess("Updated ebay store inventory in folder "+context.get("folderId")+" success..");
+ }else{
+ result = ServiceUtil.returnError("Fail to update ebay store inventory.");
+ }
+ }
+ }catch (ApiException e) {
+ result = ServiceUtil.returnFailure(e.getMessage());
+ } catch (SdkSoapException e) {
+ result = ServiceUtil.returnFailure(e.getMessage());
+ } catch (SdkException e) {
+ result = ServiceUtil.returnFailure(e.getMessage());
+ } catch (GenericEntityException e) {
+ result = ServiceUtil.returnFailure(e.getMessage());
+ }
+ result.put("productStoreId", context.get("productStoreId"));
+ result.put("facilityId", context.get("facilityId"));
+ result.put("folderId", context.get("folderId"));
+ return result;
+ }
+
+ /* add new product and quantity to ebay inventory */
+ public static boolean createNewProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context){
+ Locale locale = (Locale) context.get("locale");
+ Delegator delegator = dctx.getDelegator();
+ AddSellingManagerProductRequestType productReq = null;
+ AddSellingManagerProductResponseType productResp = null;
+ boolean flag = false;
+
+ try {
+ if(context.get("productStoreId") != null && context.get("productId")!=null && context.get("folderId")!=null){
+ String productId = (String)context.get("productId");
+ String folderId = (String)context.get("folderId");
+ AddSellingManagerProductCall productCall = new AddSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+ productReq = new AddSellingManagerProductRequestType();
+ productReq.setFolderID(new Long(folderId));
+ SellingManagerProductDetailsType sellingManagerProductDetailsType = new SellingManagerProductDetailsType();
+ GenericValue ebayProductStoreInventory = delegator.findByPrimaryKey("EbayProductStoreInventory", UtilMisc.toMap("productId", productId,"facilityId",context.get("facilityId"),"productStoreId",context.get("productStoreId")));
+
+ sellingManagerProductDetailsType.setProductName((delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", productId))).getString("internalName"));
+ //Must keep productId in SKU NUMBER because ebay allow productId field only long value.
+ sellingManagerProductDetailsType.setCustomLabel(productId);
+ if(ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue());
+
+ productReq.setSellingManagerProductDetails(sellingManagerProductDetailsType);
+ productResp = (AddSellingManagerProductResponseType) productCall.execute(productReq);
+ if(productResp != null && "SUCCESS".equals(productResp.getAck().toString())){
+ flag = true;
+ ebayProductStoreInventory.put("ebayProductId", productResp.getSellingManagerProductDetails().getProductID());
+ ebayProductStoreInventory.put("folderId", folderId);
+ ebayProductStoreInventory.store();
+ }else{
+ Debug.logError("Fail to create inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(productResp.getMessage()), module);
+ }
+ }
+ } catch (ApiException e) {
+ Debug.logError(e.getMessage(), module);
+ } catch (SdkSoapException e) {
+ Debug.logError(e.getMessage(), module);
+ } catch (SdkException e) {
+ Debug.logError(e.getMessage(), module);
+ } catch (GenericEntityException e) {
+ Debug.logError(e.getMessage(), module);
+ }
+ return flag;
+ }
+
+ /* update product and quantity to ebay inventory */
+ public static boolean updateProductInEbayInventoryFolder(DispatchContext dctx, Map<String,Object> context){
+ Locale locale = (Locale) context.get("locale");
+ Delegator delegator = dctx.getDelegator();
+ ReviseSellingManagerProductRequestType req = null;
+ ReviseSellingManagerProductResponseType resp = null;
+ boolean flag = false;
+
+ try {
+ if(context.get("productStoreId") != null && context.get("productId")!=null && context.get("folderId")!=null){
+ String productId = (String)context.get("productId");
+ String folderId = (String)context.get("folderId");
+ ReviseSellingManagerProductCall call = new ReviseSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+ req = new ReviseSellingManagerProductRequestType();
+ SellingManagerProductDetailsType sellingManagerProductDetailsType = new SellingManagerProductDetailsType();
+ GenericValue ebayProductStoreInventory = delegator.findByPrimaryKey("EbayProductStoreInventory", UtilMisc.toMap("productId", productId,"facilityId",context.get("facilityId"),"productStoreId",context.get("productStoreId")));
+ Long ebayProductId = null;
+ if(ebayProductStoreInventory !=null && ebayProductStoreInventory.getLong("ebayProductId")==null){
+ Debug.logError("Can not update product "+productId+" has no ebay product Id in EbayProductStoreInventory. ", module);
+ return flag;
+ }
+ if(ebayProductStoreInventory!=null && ebayProductStoreInventory.getLong("ebayProductId")!=null){
+ ebayProductId = ebayProductStoreInventory.getLong("ebayProductId");
+ }
+ sellingManagerProductDetailsType.setProductID(ebayProductId);
+
+ sellingManagerProductDetailsType.setProductName((delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", productId))).getString("internalName"));
+ //Must keep productId in SKU NUMBER because ebay allow productId field only long value.
+ sellingManagerProductDetailsType.setCustomLabel(productId);
+ if(ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue());
+
+ req.setSellingManagerProductDetails(sellingManagerProductDetailsType);
+ resp = (ReviseSellingManagerProductResponseType) call.execute(req);
+ if(resp != null && "SUCCESS".equals(resp.getAck().toString())){
+ flag = true;
+ ebayProductStoreInventory.put("ebayProductId", ebayProductId);
+ ebayProductStoreInventory.put("folderId", folderId);
+ ebayProductStoreInventory.store();
+ }else{
+ Debug.logError("Fail to update inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(resp.getMessage()), module);
+ }
+ }
+ } catch (ApiException e) {
+ Debug.logError(e.getMessage(), module);
+ } catch (SdkSoapException e) {
+ Debug.logError(e.getMessage(), module);
+ } catch (SdkException e) {
+ Debug.logError(e.getMessage(), module);
+ } catch (GenericEntityException e) {
+ Debug.logError(e.getMessage(), module);
+ }
+ return flag;
+ }
+
+ public static Map<String,Object> getFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context){
+ Map<String,Object> result = FastMap.newInstance();
+ Locale locale = (Locale) context.get("locale");
+ Delegator delegator = dctx.getDelegator();
+ GetSellingManagerInventoryFolderRequestType req = null;
+ GetSellingManagerInventoryFolderResponseType resp = null;
+ boolean flag = false;
+
+ try {
+ if(context.get("productStoreId") != null){
+ GetSellingManagerInventoryFolderCall call = new GetSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+ req = new GetSellingManagerInventoryFolderRequestType();
+ resp = (GetSellingManagerInventoryFolderResponseType) call.execute(req);
+ if(resp != null && "SUCCESS".equals(resp.getAck().toString())){
+ SellingManagerFolderDetailsType sellingManagerFolderDetailsType = resp.getFolder();
+ if(sellingManagerFolderDetailsType!=null){
+ SellingManagerFolderDetailsType[] SellingManagerFolderDetailsTypeList = sellingManagerFolderDetailsType.getChildFolder();
+ for(SellingManagerFolderDetailsType sellingManagerFolderDetails : SellingManagerFolderDetailsTypeList){
+ Debug.logInfo("ebay inventory folders name ".concat(sellingManagerFolderDetails.getFolderName()), module);
+ if(sellingManagerFolderDetails.getFolderName().equals(defaultFolderName)){
+ folderId = String.valueOf(sellingManagerFolderDetails.getFolderID());
+ flag = true;
+ break;
+ }
+ }
+ }
+ if(flag == false){
+ folderId = createNewFolderInEbayStoreInventory(dctx,context);
+ }
+ }
+ result = ServiceUtil.returnSuccess("load ebay store folderId "+folderId+" success..");
+ }
+ } catch (ApiException e) {
+ result = ServiceUtil.returnFailure(e.getMessage());
+ } catch (SdkSoapException e) {
+ result = ServiceUtil.returnFailure(e.getMessage());
+ } catch (SdkException e) {
+ result = ServiceUtil.returnFailure(e.getMessage());
+ }
+ if(result.get("responseMessage")!=null && result.get("responseMessage").equals("fail")) folderId = null;
+ result.put("folderId", folderId);
+ Debug.logInfo("service return result "+ result, module);
+ return result;
+ }
+
+ /*create new folder for export product into inventory.*/
+ public static String createNewFolderInEbayStoreInventory(DispatchContext dctx, Map<String,Object> context){
+ Locale locale = (Locale) context.get("locale");
+ Delegator delegator = dctx.getDelegator();
+ AddSellingManagerInventoryFolderRequestType req = null;
+ AddSellingManagerInventoryFolderResponseType resp = null;
+
+ try {
+ if(context.get("productStoreId") != null){
+ AddSellingManagerInventoryFolderCall call = new AddSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator));
+ req = new AddSellingManagerInventoryFolderRequestType();
+ req.setFolderName(defaultFolderName);//req.setComment(value);//req.setParentFolderID(value)
+ resp = (AddSellingManagerInventoryFolderResponseType) call.execute(req);
+ if(resp != null && "SUCCESS".equals(resp.getAck().toString())) {
+ folderId = String.valueOf(resp.getFolderID());
+ }else {
+ Debug.logError("The problem with create new folder on ebay site.", module);
+ return folderId;
+ }
+ }
+ } catch (ApiException e) {
+ Debug.logError(e.getMessage(), module);
+ } catch (SdkSoapException e) {
+ Debug.logError(e.getMessage(), module);
+ } catch (SdkException e) {
+ Debug.logError(e.getMessage(), module);
+ }
+ return folderId;
+ }
+}
Added: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java?rev=905876&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreOptions.java Wed Feb 3 03:16:07 2010
@@ -0,0 +1,145 @@
+package org.ofbiz.ebaystore;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javolution.util.FastList;
+import javolution.util.FastMap;
+
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.service.DispatchContext;
+import org.ofbiz.service.ServiceUtil;
+import org.ofbiz.webapp.event.EventHandlerException;
+
+import com.ebay.sdk.ApiException;
+import com.ebay.sdk.SdkException;
+import com.ebay.sdk.SdkSoapException;
+import com.ebay.sdk.call.GetStoreOptionsCall;
+import com.ebay.soap.eBLBaseComponents.GetStoreOptionsRequestType;
+import com.ebay.soap.eBLBaseComponents.GetStoreOptionsResponseType;
+import com.ebay.soap.eBLBaseComponents.StoreColorSchemeType;
+import com.ebay.soap.eBLBaseComponents.StoreColorType;
+import com.ebay.soap.eBLBaseComponents.StoreFontFaceCodeType;
+import com.ebay.soap.eBLBaseComponents.StoreFontSizeCodeType;
+import com.ebay.soap.eBLBaseComponents.StoreFontType;
+import com.ebay.soap.eBLBaseComponents.StoreThemeArrayType;
+import com.ebay.soap.eBLBaseComponents.StoreThemeType;
+
+import net.sf.json.JSONObject;
+
+public class EbayStoreOptions {
+
+ public static String retrieveThemeColorSchemeByThemeId(HttpServletRequest request,HttpServletResponse response){
+
+ Locale locale = UtilHttp.getLocale(request);
+ Delegator delegator = (Delegator) request.getAttribute("delegator");
+ GetStoreOptionsRequestType req = null;
+ GetStoreOptionsResponseType resp = null;
+ StoreThemeArrayType returnedBasicThemeArray = null;
+
+ try {
+ Map paramMap = UtilHttp.getCombinedMap(request);
+ if(paramMap.get("productStoreId") != null){
+ String themeId = (String)paramMap.get("themeId");
+
+ GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)paramMap.get("productStoreId"), locale, delegator));
+ req = new GetStoreOptionsRequestType();
+
+ resp = (GetStoreOptionsResponseType) call.execute(req);
+ if(resp != null && "SUCCESS".equals(resp.getAck().toString())){
+
+ returnedBasicThemeArray = resp.getBasicThemeArray();
+ StoreThemeType[] storeBasicTheme = returnedBasicThemeArray.getTheme();
+
+ int i=0;
+ String colorSchemeId = themeId.substring(themeId.indexOf("-")+1);
+ themeId = themeId.substring(0,themeId.indexOf("-"));
+
+ Map<String,Object> storeColorSchemeMap = FastMap.newInstance();
+ while(i<storeBasicTheme.length){
+
+ StoreThemeType storeThemeType = (StoreThemeType)storeBasicTheme[i];
+ if(themeId.equals(storeThemeType.getThemeID().toString())){
+ StoreColorSchemeType colorSchemeType = storeThemeType.getColorScheme();
+ if(colorSchemeType!=null){
+ if(colorSchemeId.equals(colorSchemeType.getColorSchemeID().toString())){
+ StoreColorType storeColor = colorSchemeType.getColor();
+ storeColorSchemeMap.put("storeColorAccent",storeColor.getAccent());
+ storeColorSchemeMap.put("storeColorPrimary",storeColor.getPrimary());
+ storeColorSchemeMap.put("storeColorSecondary",storeColor.getSecondary());
+
+ // get font,size and color
+ StoreFontType storeFontType = colorSchemeType.getFont();
+ storeColorSchemeMap.put("storeFontTypeNameFaceColor",storeFontType.getNameColor());
+ storeColorSchemeMap.put("storeFontTypeFontFaceValue",storeFontType.getNameFace().value());
+ storeColorSchemeMap.put("storeFontTypeSizeFaceValue",storeFontType.getNameSize().value());
+
+ storeColorSchemeMap.put("storeFontTypeTitleColor",storeFontType.getTitleColor());
+ storeColorSchemeMap.put("storeFontTypeFontTitleValue",storeFontType.getTitleFace().value());
+ storeColorSchemeMap.put("storeFontSizeTitleValue",storeFontType.getTitleSize().value());
+
+ storeColorSchemeMap.put("storeFontTypeDescColor",storeFontType.getDescColor());
+ storeColorSchemeMap.put("storeFontTypeFontDescValue",storeFontType.getDescFace().value());
+ storeColorSchemeMap.put("storeDescSizeValue",storeFontType.getDescSize().value());
+ toJsonObject(storeColorSchemeMap,response);
+
+ break;
+ }
+ }
+ }
+ i++;
+ }
+ }
+ }
+ }catch (ApiException e) {
+ e.printStackTrace();
+ return "error";
+ } catch (SdkSoapException e) {
+ e.printStackTrace();
+ return "error";
+ } catch (SdkException e) {
+ e.printStackTrace();
+ return "error";
+ } catch (EventHandlerException e) {
+ e.printStackTrace();
+ return "error";
+ }
+
+ return "success";
+ }
+
+ public static void toJsonObject(Map<String,Object> attrMap, HttpServletResponse response) throws EventHandlerException{
+ JSONObject json = JSONObject.fromObject(attrMap);
+ String jsonStr = json.toString();
+ if (jsonStr == null) {
+ throw new EventHandlerException("JSON Object was empty; fatal error!");
+ }
+ // set the X-JSON content type
+ response.setContentType("application/json");
+ // jsonStr.length is not reliable for unicode characters
+ try {
+ response.setContentLength(jsonStr.getBytes("UTF8").length);
+ } catch (UnsupportedEncodingException e) {
+ throw new EventHandlerException("Problems with Json encoding", e);
+ }
+ // return the JSON String
+ Writer out;
+ try {
+ out = response.getWriter();
+ out.write(jsonStr);
+ out.flush();
+ } catch (IOException e) {
+ throw new EventHandlerException("Unable to get response writer", e);
+ }
+ }
+
+}
Added: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/automationPreferences/GetEbayJobsandbox.groovy
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/automationPreferences/GetEbayJobsandbox.groovy?rev=905876&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/automationPreferences/GetEbayJobsandbox.groovy (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/automationPreferences/GetEbayJobsandbox.groovy Wed Feb 3 03:16:07 2010
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.ofbiz.base.util.*;
+
+jobSandboxs = delegator.findByAnd("JobSandbox", UtilMisc.toMap("authUserLoginId", userLoginId));
+job = null
+jobId = null;
+if(jobSandboxs){
+ job = jobSandboxs.get(0);
+}else{
+ jobId = delegator.getNextSeqId("JobSandbox");
+}
+context.jobId = jobId;
+context.job = job;
\ No newline at end of file
Added: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/feedback/FeedbackList.groovy
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/feedback/FeedbackList.groovy?rev=905876&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/feedback/FeedbackList.groovy (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/feedback/FeedbackList.groovy Wed Feb 3 03:16:07 2010
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.ofbiz.base.util.*;
+import org.ofbiz.entity.condition.*;
+import java.sql.Timestamp;
+import java.util.Map;
+
+import javolution.util.FastMap;
+
+partyId = null
+inMap = FastMap.newInstance();
+inMap.put("productStoreId", parameters.productStoreId);
+inMap.put("userLogin", context.get("userLogin"));
+resultUser = dispatcher.runSync("getEbayStoreUser", inMap);
+ownerUser = resultUser.get("userLoginId");
+userLogin = delegator.findByPrimaryKey("UserLogin", UtilMisc.toMap("userLoginId", ownerUser));
+if(userLogin){
+ partyId = userLogin.get("partyId");
+}
+expr = []
+cond = null;
+
+contentId = request.getParameter("contentId");
+fromDate = request.getParameter("fromDate");
+thruDate = request.getParameter("thruDate");
+if(contentId){
+ expr.add(EntityCondition.makeCondition("contentId",EntityOperator.EQUALS, contentId));
+}
+if(fromDate && thruDate){
+ exprSub = [];
+ condSub = null;
+ exprSub.add(EntityCondition.makeCondition("createdDate",EntityOperator.GREATER_THAN, UtilDateTime.getDayStart(Timestamp.valueOf(fromDate + " 00:00:00.000"))));
+ exprSub.add(EntityCondition.makeCondition("createdDate",EntityOperator.LESS_THAN, UtilDateTime.getDayEnd(Timestamp.valueOf(thruDate + " 23:59:59.999"))));
+ condSub = EntityCondition.makeCondition(exprSub, EntityOperator.AND);
+ expr.add(condSub);
+}else if(fromDate && !thruDate){
+ expr.add(EntityCondition.makeCondition("createdDate",EntityOperator.GREATER_THAN, UtilDateTime.getDayStart(Timestamp.valueOf(fromDate + " 00:00:00.000"))));
+}else if(!fromDate && thruDate){
+ expr.add(EntityCondition.makeCondition("createdDate",EntityOperator.LESS_THAN, UtilDateTime.getDayEnd(Timestamp.valueOf(thruDate + " 23:59:59.999"))));
+}
+contentRoles = delegator.findByAnd("ContentRole", UtilMisc.toMap("roleTypeId","OWNER", "partyId", partyId));
+contentIds = [];
+contentRoles.each{content->
+ contentIds.add(content.getString("contentId"));
+}
+expr.add(EntityCondition.makeCondition("contentId", EntityOperator.IN, contentIds));
+cond = EntityCondition.makeCondition(expr, EntityOperator.AND);
+contents = delegator.findList("Content", cond, null, null, null, false);
+
+recentFeedbackList = [];
+ownerUser = null;
+commentator = null;
+contents.each{content->
+ commentatorContents = delegator.findByAnd("ContentRole", UtilMisc.toMap("contentId",content.contentId, "roleTypeId","COMMENTATOR"));
+ if(commentatorContents){
+ commentatorPartyId = commentatorContents.get(0).get("partyId");
+ commentatorUsers = delegator.findByAnd("UserLogin", UtilMisc.toMap("partyId", commentatorPartyId));
+ if(commentatorUsers){
+ commentator = commentatorUsers.get(0).get("userLoginId");
+ }
+ }
+ entry = [contentId : content.contentId,
+ dataResourceId : content.dataResourceId,
+ createdDate : content.createdDate,
+ ownerUser : ownerUser,
+ commentator : commentator];
+ recentFeedbackList.add(entry);
+}
+context.recentFeedbackList = recentFeedbackList;
\ No newline at end of file
Added: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/store/RetrieveStoreOptions.groovy
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/store/RetrieveStoreOptions.groovy?rev=905876&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/store/RetrieveStoreOptions.groovy (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/store/RetrieveStoreOptions.groovy Wed Feb 3 03:16:07 2010
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+productStoreId = parameters.productStoreId;
+
+storeThemeId = null;
+if(parameters.ebayStore){
+ ebayStore = parameters.get("ebayStore");
+ storeThemeId = ebayStore.get("storeThemeId");
+}
+
+if(productStoreId!=null){
+ flag = null;
+ storeBasicThemes = null;
+ resultsBasicThemes = dispatcher.runSync("retrieveBasicThemeArray",["productStoreId":productStoreId, "userLogin": userLogin]);
+ if(resultsBasicThemes){
+ storeBasicThemes = resultsBasicThemes.get("storeThemeList");
+ //check what kind of theme?
+ context.put("storeThemeOptList",storeBasicThemes);
+ if(storeThemeId!=null && storeBasicThemes!=null){
+ storeBasicThemes.each { storeTheme ->
+ if(storeThemeId == storeTheme.storeThemeId){
+ flag = "Basic";
+ }
+ }
+ }
+ }
+
+ storeAdvanceThemes = null;
+ storeAdvancedThemeColorOptList = null;
+ resultsAdvanceThemes = dispatcher.runSync("retrieveAdvancedThemeArray",["productStoreId":productStoreId, "userLogin": userLogin]);
+ if(resultsAdvanceThemes){
+ storeAdvanceThemes = resultsAdvanceThemes.get("storeThemeList");
+ storeAdvancedThemeColorOptList = resultsAdvanceThemes.get("storeAdvancedThemeColorOptList");
+ context.put("storeAdvanceThemeOptList",storeAdvanceThemes);
+ context.put("storeAdvancedThemeColorOptList",storeAdvancedThemeColorOptList);
+
+ if(storeThemeId!=null && storeAdvanceThemes!=null){
+ storeAdvanceThemes.each { storeAdvanceTheme ->
+ if(storeThemeId == storeAdvanceTheme.storeThemeId){
+ flag = "Advanced";
+ }
+ }
+ }
+ }
+ resultsFontTheme = dispatcher.runSync("retrieveStoreFontTheme",["productStoreId":productStoreId, "userLogin": userLogin]);
+ if(resultsFontTheme){
+ storeFontTheme = resultsFontTheme.get("advanceFontTheme");
+ context.put("storeFontTheme",storeFontTheme);
+ }
+ context.put("themeType",flag);
+
+}
Added: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/store/StoreAccount.groovy
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/store/StoreAccount.groovy?rev=905876&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/store/StoreAccount.groovy (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/actions/store/StoreAccount.groovy Wed Feb 3 03:16:07 2010
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.ofbiz.base.util.*;
+import javolution.util.FastList;
+import javolution.util.FastMap;
+
+
+
+results = FastList.newInstance();
+ebayAccountList = delegator.findByAnd("PartyRoleAndPartyDetail",["roleTypeId":"EBAY_ACCOUNT"]);
+productStoreRoles = delegator.findByAnd("ProductStoreRole",["roleTypeId":"EBAY_ACCOUNT"]);
+
+if(productStoreRoles!=null && ebayAccountList != null){
+ ebayAccountList.each{ebayAccount->
+ partyId = ebayAccount.partyId;
+ productStoreRoles.each{productStoreRole ->
+ if(partyId.equals(productStoreRole.partyId)){
+ storeMap = FastMap.newInstance();
+ storeMap.partyId = ebayAccount.partyId;
+ storeMap.firstName = ebayAccount.firstName;
+ storeMap.lastName = ebayAccount.lastName;
+ storeMap.productStoreId = productStoreRole.productStoreId;
+ results.add(storeMap);
+ }
+ }
+ }
+ context.put("stores",results);
+}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.ofbiz.base.util.*;
+import javolution.util.FastList;
+import javolution.util.FastMap;
+
+
+
+results = FastList.newInstance();
+ebayAccountList = delegator.findByAnd("PartyRoleAndPartyDetail",["roleTypeId":"EBAY_ACCOUNT"]);
+productStoreRoles = delegator.findByAnd("ProductStoreRole",["roleTypeId":"EBAY_ACCOUNT"]);
+
+if(productStoreRoles!=null && ebayAccountList != null){
+ ebayAccountList.each{ebayAccount->
+ partyId = ebayAccount.partyId;
+ productStoreRoles.each{productStoreRole ->
+ if(partyId.equals(productStoreRole.partyId)){
+ storeMap = FastMap.newInstance();
+ storeMap.partyId = ebayAccount.partyId;
+ storeMap.firstName = ebayAccount.firstName;
+ storeMap.lastName = ebayAccount.lastName;
+ storeMap.productStoreId = productStoreRole.productStoreId;
+ results.add(storeMap);
+ }
+ }
+ }
+ context.put("stores",results);
+}
Modified: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml?rev=905876&r1=905875&r2=905876&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml Wed Feb 3 03:16:07 2010
@@ -21,6 +21,7 @@
<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/site-conf.xsd">
<include location="component://product/webapp/catalog/WEB-INF/controller.xml"/>
+ <include location="component://ebay/webapp/ebay/WEB-INF/controller.xml"/>
<description>eBay Component Site Configuration File</description>
<!-- request mappings -->
@@ -28,9 +29,148 @@
<security https="true" auth="true"/>
<response name="success" type="view" value="main"/>
</request-map>
+ <!-- Export categories selected to Ebay store -->
+ <request-map uri="exportCategoryEbayStore">
+ <security https="true" auth="true"/>
+ <response name="success" type="view" value="exportCategoryEbayStore"/>
+ <response name="error" type="view" value="exportCategoryEbayStore"/>
+ </request-map>
+
+ <request-map uri="exportCategoriesSelectedToEbayStore">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="exportCategoriesSelectedToEbayStore"/>
+ <response name="success" type="view" value="exportCategoryEbayStore"/>
+ <response name="error" type="view" value="exportCategoryEbayStore"/>
+ </request-map>
+ <!-- New eBay account in OFBiz -->
+ <request-map uri="newEbayAccount">
+ <security https="true" auth="true"/>
+ <response name="success" type="view" value="NewEbayAccount"/>
+ </request-map>
+ <request-map uri="createEbayAccount">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="createEbayAccount"/>
+ <response name="error" type="view" value="NewEbayAccount"/>
+ <response name="success" type="view" value="EditEbayConfiguration"/>
+ </request-map>
+ <request-map uri="ebayAccount">
+ <security https="true" auth="true"/>
+ <response name="error" type="view" value="EbayAccount"/>
+ <response name="success" type="view" value="EbayAccount"/>
+ </request-map>
+
+ <!-- Store output -->
+ <request-map uri="ebayStores">
+ <security https="true" auth="true"/>
+ <response name="success" type="view" value="ebayStores"/>
+ <response name="error" type="view" value="ebayStores"/>
+ </request-map>
+ <request-map uri="getStoreDetail">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="getEbayStoreOutput"/>
+ <response name="success" type="view" value="ebayStoreDetail"/>
+ <response name="error" type="view" value="ebayStoreDetail"/>
+ </request-map>
+ <request-map uri="editEbayStoreDetail">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="setEbayStoreInput"/>
+ <response name="success" type="view" value="ebayStoreDetail"/>
+ <response name="error" type="view" value="ebayStoreDetail"/>
+ </request-map>
+ <request-map uri="retrieveThemeColorSchemeByThemeId">
+ <security https="true" auth="true"/>
+ <event type="java" path="org.ofbiz.ebaystore.EbayStoreOptions" invoke="retrieveThemeColorSchemeByThemeId"/>
+ <response name="success" type="view" value="ebayStoreDetail"/>
+ <response name="error" type="view" value="ebayStoreDetail"/>
+ </request-map>
+ <!-- Feedback -->
+ <request-map uri="Feedback">
+ <security https="true" auth="true"/>
+ <response name="success" type="view" value="Feedback"/>
+ </request-map>
+ <request-map uri="LeaveFeedback">
+ <security https="true" auth="true"/>
+ <response name="success" type="view" value="LeaveFeedback"/>
+ </request-map>
+ <request-map uri="sendLeaveFeedback">
+ <security https="true" auth="true"/>
+ <event type="java" path="org.ofbiz.ebaystore.EbayEvents" invoke="sendLeaveFeedback"/>
+ <response name="success" type="view" value="LeaveFeedback"/>
+ <response name="error" type="view" value="LeaveFeedback"/>
+ </request-map>
+
+ <!-- Automation Preferences -->
+ <request-map uri="automationPreferences">
+ <security auth="true" https="true"/>
+ <response name="success" type="view" value="AutomationPreferences"/>
+ </request-map>
+ <request-map uri="createEbayAutomaticRelistItems">
+ <security auth="true" https="true"/>
+ <event type="service" invoke="createEbayAutomaticRelistItems"/>
+ <response name="success" type="view" value="AutomationPreferences"/>
+ <response name="error" type="view" value="AutomationPreferences"/>
+ </request-map>
+ <request-map uri="updateEbayAutomaticRelistItems">
+ <security auth="true" https="true"/>
+ <event type="service" invoke="updateEbayAutomaticRelistItems"/>
+ <response name="success" type="view" value="AutomationPreferences"/>
+ <response name="error" type="view" value="AutomationPreferences"/>
+ </request-map>
+ <!-- Block item out of stock -->
+ <request-map uri="blockItemOutOfStock">
+ <security https="true" auth="true"/>
+ <response name="success" type="view" value="blockItemOutOfStock"/>
+ <response name="error" type="view" value="blockItemOutOfStock"/>
+ </request-map>
+ <request-map uri="runBlockItemOutOfStock">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="getSellingInventory"/>
+ <response name="success" type="view" value="blockItemOutOfStock"/>
+ <response name="error" type="view" value="blockItemOutOfStock"/>
+ </request-map>
+ <!-- Store inventory -->
+ <request-map uri="ebayStoreInventory">
+ <security https="true" auth="true"/>
+ <response name="success" type="view" value="ebayStoreInventory"/>
+ </request-map>
+ <request-map uri="reserveEbayProductInventory">
+ <security https="true" auth="true"/>
+ <response name="success" type="view" value="reserveEbayProductInventory"/>
+ </request-map>
+ <request-map uri="reserveProductInventory">
+ <security https="true" auth="true"/>
+ <event type="service" invoke="reserveEbayStoreInventory"/>
+ <response name="success" type="view" value="reserveEbayProductInventory"/>
+ </request-map>
+ <request-map uri="updateEbayStoreInventory">
+ <security https="true" auth="true"/>
+ <event type="service-multi" invoke="updateEbayStoreInventory"/>
+ <response name="success" type="view" value="ebayLoadStoreInventory"/>
+ </request-map>
<!-- end of request mappings -->
<!-- View Mappings -->
- <view-map name="main" type="screen" page="component://ebaystore/widget/CommonScreens.xml#main"/>
+ <view-map name="main" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#ebayStores"/>
+ <view-map name="exportCategoryEbayStore" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#exportCategoryEbayStore"/>
+ <!-- store output -->
+ <view-map name="ebayStores" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#ebayStores"/>
+ <view-map name="ebayStoreDetail" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#ebayStoreDetail"/>
+ <!-- ebay account -->
+ <view-map name="NewEbayAccount" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#NewEbayAccount"/>
+ <view-map name="EbayAccount" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#EbayAccount"/>
+
+ <!-- feedback -->
+ <view-map name="FeedbackStore" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#FeedbackStore"/>
+ <view-map name="Feedback" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#Feedback"/>
+ <view-map name="LeaveFeedback" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#LeaveFeedback"/>
+
+ <!-- AutomationPreferences -->
+ <view-map name="AutomationPreferences" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#EbayAutomationPreferences"/>
+ <!-- block out of stock -->
+ <view-map name="blockItemOutOfStock" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#blockItemOutOfStock"/>
+ <!-- store Inventory -->
+ <view-map name="ebayStoreInventory" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#ebayStoreInventory"/>
+ <view-map name="ebayLoadStoreInventory" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#ebayLoadStoreInventory"/>
+ <view-map name="reserveEbayProductInventory" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#reserveEbayProductInventory"/>
<!-- end of view mappings -->
</site-conf>
Added: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/feedback/LeaveFeedback.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/feedback/LeaveFeedback.ftl?rev=905876&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/feedback/LeaveFeedback.ftl (added)
+++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/feedback/LeaveFeedback.ftl Wed Feb 3 03:16:07 2010
@@ -0,0 +1,538 @@
+<#--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<#if results.itemsAwaitingFeedback?has_content>
+<script>
+ var active = "";
+ function overStar(obj){
+ if(obj.src.match("starActive")){
+ active = obj.src;
+ }else{
+ active = "";
+ }
+ obj.src = "/images/rate/starHover.gif";
+ }
+ function outStar(obj){
+ if(active != "" || obj.src == "/images/rate/starActive.gif"){
+ obj.src = "/images/rate/starActive.gif";
+ }else{
+ obj.src = "/images/rate/starDefault.gif";
+ }
+ }
+ function setRate(name,numstar,obj,feedbackCounter){
+ for(i=1; i<=5; i++){
+ id = "star"+name+feedbackCounter+"_"+i;
+ if(numstar>=i){
+ document.getElementById(id).src = "/images/rate/starActive.gif";
+ }else{
+ document.getElementById(id).src = "/images/rate/starDefault.gif";
+ }
+ }
+
+ active = "/images/rate/starActive.gif";
+ setTo = name+feedbackCounter;
+ document.getElementById(setTo).value = numstar;
+ }
+</script>
+<form name="leaveFeedback" action="<@ofbizUrl>sendLeaveFeedback</@ofbizUrl>" method="post">
+ <input type="hidden" value="${parameters.productStoreId}" name="productStoreId"/>
+<table cellspacing="0" class="basic-table">
+ <tbody>
+ <tr class="header-row">
+ <td>Item</td>
+ <td width="600">Rate this transaction</td>
+ <td>Role</td>
+ </tr>
+ <#assign row = "alternate-row">
+ <#assign FeedbackSize = 0>
+ <#assign feedbackCounter = 0>
+ <#assign role = "">
+ <#if parameters.role?has_content>
+ <#assign role = parameters.role>
+ </#if>
+ <#list results.itemsAwaitingFeedback as leaveFeedback>
+ <#if !leaveFeedback.commentType?has_content>
+ <#if parameters.role?has_content && parameters.transactionId?has_content && parameters.targetUser?has_content && parameters.commentingUser?has_content>
+ <#if parameters.transactionId == leaveFeedback.transactionID && parameters.itemId == leaveFeedback.itemID>
+ <#if role == "buyer">
+ <#assign feedbackCounter = feedbackCounter + 1>
+ <#if row == "">
+ <#assign row = "alternate-row">
+ <#else>
+ <#assign row = "">
+ </#if>
+ <input type="hidden" value="${leaveFeedback.itemID}" name="itemId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.transactionID}" name="transactionId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.userID}" name="targetUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.commentingUser}" name="commentingUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.role}" name="role${feedbackCounter}"/>
+ <tr class="${row}" style="border:#eeeeee solid thin">
+ <td valign="top">
+ ${leaveFeedback.itemID} - ${leaveFeedback.title}
+ <a target="_blank" href="http://payments.sandbox.ebay.com/ws/eBayISAPI.dll?ViewPaymentStatus&transId=${leaveFeedback.transactionID}&ssPageName=STRK:MESOX:VPS&itemid=${leaveFeedback.itemID}">order details</a>
+ </td>
+ <td>
+ <input type="radio" name="commentType${feedbackCounter}" value="positive"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Positive</span>
+ <input type="radio" name="commentType${feedbackCounter}" checked="checked" value="none"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='none';"/><span>I'll leave Feedback later</span>
+ <div id="rate${feedbackCounter}" style="display:none">
+ <input type="text" value="" maxlength="80" size="80" name="commentText${feedbackCounter}" label="Tell us more"/>
+ <br/>80 characters left<br/><br/>
+ </div>
+ </td>
+ <td>
+ Buyer:<a target="_blank" href="http://myworld.sandbox.ebay.com/${leaveFeedback.userID}">${leaveFeedback.userID}</a>
+ </td>
+ </tr>
+ <#else>
+ <#assign feedbackCounter = feedbackCounter + 1>
+ <#if row == "">
+ <#assign row = "alternate-row">
+ <#else>
+ <#assign row = "">
+ </#if>
+ <input type="hidden" value="${leaveFeedback.itemID}" name="itemId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.transactionID}" name="transactionId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.userID}" name="targetUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.commentingUser}" name="commentingUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.role}" name="role${feedbackCounter}"/>
+ <tr class="${row}" style="border:#eeeeee solid thin">
+ <td valign="top">
+ ${leaveFeedback.itemID} - ${leaveFeedback.title}
+ <a target="_blank" href="http://payments.sandbox.ebay.com/ws/eBayISAPI.dll?ViewPaymentStatus&transId=${leaveFeedback.transactionID}&ssPageName=STRK:MESOX:VPS&itemid=${leaveFeedback.itemID}">order details</a>
+ </td>
+ <td>
+ <input type="radio" name="commentType${feedbackCounter}" value="positive"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Positive</span>
+ <input type="radio" name="commentType${feedbackCounter}" value="neutral"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Neutral</span>
+ <input type="radio" name="commentType${feedbackCounter}" value="negative"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Negative</span>
+ <input type="radio" name="commentType${feedbackCounter}" checked="checked" value="none"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='none';"/><span>I'll leave Feedback later</span>
+ <div id="rate${feedbackCounter}" style="display:none">
+ <input type="text" value="" maxlength="80" size="80" name="commentText${feedbackCounter}" label="Tell us more"/>
+ <br/>80 characters left<br/><br/>
+ <b>Rate details about this purchase</b>
+ <table>
+ <tr>
+ <td>
+ How accurate was the item description?
+ </td>
+ <td>
+ <input id="ItemAsDescribedId${feedbackCounter}" type="hidden" value="0" name="ratingItem${feedbackCounter}"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',1,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='block'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',2,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='block'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',3,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='none'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',4,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='none'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',5,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='none'"/>
+ </td>
+ </tr>
+ <tr id="itemOption${feedbackCounter}" style="display:none;border:#eeeeee solid thin;text-indent:10px">
+ <td colspan="2">
+ Why weren't you satisfied with the item description?
+ <table class="answers" width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="5" type="radio">
+ </td><td>Item was not received</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="6" type="radio"></td>
+ <td>Quality did not match item description</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="2" type="radio"></td>
+ <td>Item was damaged</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="1" type="radio"></td>
+ <td>Item was a counterfeit, replica, or an unauthorized copy</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="3" type="radio"></td>
+ <td>Wrong item</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="4" type="radio" checked="checked"></td>
+ <td>Other</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ How satisfied were you with the seller's communication?
+ </td>
+ <td>
+ <input id="CommResponsivenessId${feedbackCounter}" type="hidden" value="0" name="ratingComm${feedbackCounter}"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',1,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',2,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',3,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',4,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',5,this,${feedbackCounter})"/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ How quickly did the seller ship the item?
+ </td>
+ <td>
+ <input id="ShippingTimeId${feedbackCounter}" type="hidden" value="0" name="ratingShip${feedbackCounter}"/>
+ <img id="starShippingTimeId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',1,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',2,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',3,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',4,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',5,this,${feedbackCounter})"/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ How reasonable were the shipping and handling charges?
+ </td>
+ <td>
+ <input id="ShippingHandlingChargesId${feedbackCounter}" type="hidden" value="0" name="ratingShipHand${feedbackCounter}"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',1,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',2,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',3,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',4,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',5,this,${feedbackCounter})"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ <td>
+ Seller:<a target="_blank" href="http://myworld.sandbox.ebay.com/${leaveFeedback.userID}">${leaveFeedback.userID}</a>
+ </td>
+ </tr>
+ </#if>
+ </#if>
+ <#elseif role=="buyer">
+ <#if leaveFeedback.role == "buyer">
+ <#assign feedbackCounter = feedbackCounter + 1>
+ <#if row == "">
+ <#assign row = "alternate-row">
+ <#else>
+ <#assign row = "">
+ </#if>
+ <input type="hidden" value="${leaveFeedback.itemID}" name="itemId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.transactionID}" name="transactionId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.userID}" name="targetUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.commentingUser}" name="commentingUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.role}" name="role${feedbackCounter}"/>
+ <tr class="${row}" style="border:#eeeeee solid thin">
+ <td valign="top">
+ ${leaveFeedback.itemID}]${leaveFeedback.title}
+ <a target="_blank" href="http://payments.sandbox.ebay.com/ws/eBayISAPI.dll?ViewPaymentStatus&transId=${leaveFeedback.transactionID}&ssPageName=STRK:MESOX:VPS&itemid=${leaveFeedback.itemID}">order details</a>
+ </td>
+ <td>
+ <input type="radio" name="commentType${feedbackCounter}" value="positive"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Positive</span>
+ <input type="radio" name="commentType${feedbackCounter}" checked="checked" value="none"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='none';"/><span>I'll leave Feedback later</span>
+ <div id="rate${feedbackCounter}" style="display:none">
+ <input type="text" value="" maxlength="80" size="80" name="commentText${feedbackCounter}" label="Tell us more"/>
+ <br/>80 characters left<br/><br/>
+ </div>
+ </td>
+ <td>
+ Buyer:<a target="_blank" href="http://myworld.sandbox.ebay.com/${leaveFeedback.userID}">${leaveFeedback.userID}</a>
+ </td>
+ </tr>
+ </#if>
+ <#elseif role == "seller">
+ <#if leaveFeedback.role == "seller">
+ <#assign feedbackCounter = feedbackCounter + 1>
+ <#if row == "">
+ <#assign row = "alternate-row">
+ <#else>
+ <#assign row = "">
+ </#if>
+ <input type="hidden" value="${leaveFeedback.itemID}" name="itemId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.transactionID}" name="transactionId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.userID}" name="targetUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.commentingUser}" name="commentingUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.role}" name="role${feedbackCounter}"/>
+ <tr class="${row}" style="border:#eeeeee solid thin">
+ <td valign="top">
+ ${leaveFeedback.itemID} - ${leaveFeedback.title}
+ <a target="_blank" href="http://payments.sandbox.ebay.com/ws/eBayISAPI.dll?ViewPaymentStatus&transId=${leaveFeedback.transactionID}&ssPageName=STRK:MESOX:VPS&itemid=${leaveFeedback.itemID}">order details</a>
+ </td>
+ <td>
+ <input type="radio" name="commentType${feedbackCounter}" value="positive"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Positive</span>
+ <input type="radio" name="commentType${feedbackCounter}" value="neutral"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Neutral</span>
+ <input type="radio" name="commentType${feedbackCounter}" value="negative"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Negative</span>
+ <input type="radio" name="commentType${feedbackCounter}" checked="checked" value="none"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='none';"/><span>I'll leave Feedback later</span>
+ <div id="rate${feedbackCounter}" style="display:none">
+ <input type="text" value="" maxlength="80" size="80" name="commentText${feedbackCounter}" label="Tell us more"/>
+ <br/>80 characters left<br/><br/>
+ <b>Rate details about this purchase</b>
+ <table>
+ <tr>
+ <td>
+ How accurate was the item description?
+ </td>
+ <td>
+ <input id="ItemAsDescribedId${feedbackCounter}" type="hidden" value="0" name="ratingItem${feedbackCounter}"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',1,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='block'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',2,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='block'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',3,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='none'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',4,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='none'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',5,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='none'"/>
+ </td>
+ </tr>
+ <tr id="itemOption${feedbackCounter}" style="display:none;border:#eeeeee solid thin;text-indent:10px">
+ <td colspan="2">
+ Why weren't you satisfied with the item description?
+ <table class="answers" width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="5" type="radio">
+ </td><td>Item was not received</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="6" type="radio"></td>
+ <td>Quality did not match item description</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="2" type="radio"></td>
+ <td>Item was damaged</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="1" type="radio"></td>
+ <td>Item was a counterfeit, replica, or an unauthorized copy</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="3" type="radio"></td>
+ <td>Wrong item</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="4" type="radio" checked="checked"></td>
+ <td>Other</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ How satisfied were you with the seller's communication?
+ </td>
+ <td>
+ <input id="CommResponsivenessId${feedbackCounter}" type="hidden" value="0" name="ratingComm${feedbackCounter}"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',1,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',2,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',3,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',4,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',5,this,${feedbackCounter})"/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ How quickly did the seller ship the item?
+ </td>
+ <td>
+ <input id="ShippingTimeId${feedbackCounter}" type="hidden" value="0" name="ratingShip${feedbackCounter}"/>
+ <img id="starShippingTimeId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',1,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',2,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',3,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',4,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',5,this,${feedbackCounter})"/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ How reasonable were the shipping and handling charges?
+ </td>
+ <td>
+ <input id="ShippingHandlingChargesId${feedbackCounter}" type="hidden" value="0" name="ratingShipHand${feedbackCounter}"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',1,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',2,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',3,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',4,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',5,this,${feedbackCounter})"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ <td>
+ Seller:<a target="_blank" href="http://myworld.sandbox.ebay.com/${leaveFeedback.userID}">${leaveFeedback.userID}</a>
+ </td>
+ </tr>
+ </#if>
+ <#else>
+ <#assign feedbackCounter = feedbackCounter + 1>
+ <#if row == "">
+ <#assign row = "alternate-row">
+ <#else>
+ <#assign row = "">
+ </#if>
+ <input type="hidden" value="${leaveFeedback.itemID}" name="itemId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.transactionID}" name="transactionId${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.userID}" name="targetUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.commentingUser}" name="commentingUser${feedbackCounter}"/>
+ <input type="hidden" value="${leaveFeedback.role}" name="role${feedbackCounter}"/>
+ <tr class="${row}">
+ <td>
+ ${leaveFeedback.itemID} - ${leaveFeedback.title}
+ <a target="_blank" href="http://payments.sandbox.ebay.com/ws/eBayISAPI.dll?ViewPaymentStatus&transId=${leaveFeedback.transactionID}&ssPageName=STRK:MESOX:VPS&itemid=${leaveFeedback.itemID}">order details</a>
+ </td>
+ <td>
+ <#if leaveFeedback.role == "seller">
+ <input type="radio" name="commentType${feedbackCounter}" value="positive"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Positive</span>
+ <input type="radio" name="commentType${feedbackCounter}" value="neutral"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Neutral</span>
+ <input type="radio" name="commentType${feedbackCounter}" value="negative"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Negative</span>
+ <input type="radio" name="commentType${feedbackCounter}" checked="checked" value="none"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='none';"/><span>I'll leave Feedback later</span>
+ <#else>
+ <input type="radio" name="commentType${feedbackCounter}" value="positive"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='block';"/><span>Positive</span>
+ <input type="radio" name="commentType${feedbackCounter}" checked="checked" value="none"
+ onclick="document.getElementById('rate${feedbackCounter}').style.display='none';"/><span>I'll leave Feedback later</span>
+ </#if>
+ <#if leaveFeedback.role == "seller">
+ <div id="rate${feedbackCounter}" style="display:none">
+ <input type="text" value="" maxlength="80" size="80" name="commentText${feedbackCounter}" label="Tell us more"/>
+ <br/>80 characters left<br/><br/>
+ <b>Rate details about this purchase</b>
+ <table>
+ <tr>
+ <td>
+ How accurate was the item description?
+ </td>
+ <td>
+ <input id="ItemAsDescribedId${feedbackCounter}" type="hidden" value="0" name="ratingItem${feedbackCounter}"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',1,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='block'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',2,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='block'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',3,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='none'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',4,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='none'"/>
+ <img id="starItemAsDescribedId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ItemAsDescribedId',5,this,${feedbackCounter});document.getElementById('itemOption${feedbackCounter}').style.display='none'"/>
+ </td>
+ </tr>
+ <tr id="itemOption${feedbackCounter}" style="display:none;border:#eeeeee solid thin;text-indent:10px">
+ <td colspan="2">
+ Why weren't you satisfied with the item description?
+ <table class="answers" width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="5" type="radio">
+ </td><td>Item was not received</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="6" type="radio"></td>
+ <td>Quality did not match item description</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="2" type="radio"></td>
+ <td>Item was damaged</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="1" type="radio"></td>
+ <td>Item was a counterfeit, replica, or an unauthorized copy</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="3" type="radio"/></td>
+ <td>Wrong item</td>
+ </tr>
+ <tr>
+ <td width="25"><input name="AqItemAsDescribedId${feedbackCounter}" value="4" type="radio" checked="checked"></td>
+ <td>Other</td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ How satisfied were you with the seller's communication?
+ </td>
+ <td>
+ <input id="CommResponsivenessId${feedbackCounter}" type="hidden" value="0" name="ratingComm${feedbackCounter}"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',1,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',2,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',3,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',4,this,${feedbackCounter})"/>
+ <img id="starCommResponsivenessId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('CommResponsivenessId',5,this,${feedbackCounter})"/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ How quickly did the seller ship the item?
+ </td>
+ <td>
+ <input id="ShippingTimeId${feedbackCounter}" type="hidden" value="0" name="ratingShip${feedbackCounter}"/>
+ <img id="starShippingTimeId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',1,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',2,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',3,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',4,this,${feedbackCounter})"/>
+ <img id="starShippingTimeId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingTimeId',5,this,${feedbackCounter})"/>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ How reasonable were the shipping and handling charges?
+ </td>
+ <td>
+ <input id="ShippingHandlingChargesId${feedbackCounter}" type="hidden" value="0" name="ratingShipHand${feedbackCounter}"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_1" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',1,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_2" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',2,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_3" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',3,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_4" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',4,this,${feedbackCounter})"/>
+ <img id="starShippingHandlingChargesId${feedbackCounter}_5" src="/images/rate/starDefault.gif" onmouseover="overStar(this)" onmouseout="outStar(this)" onclick="setRate('ShippingHandlingChargesId',5,this,${feedbackCounter})"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <#else>
+ <div id="rate${feedbackCounter}" style="display:none">
+ <input type="text" value="" maxlength="80" size="80" name="commentText${feedbackCounter}" label="Tell us more"/>
+ <br/>80 characters left<br/><br/>
+ </div>
+ </#if>
+ </td>
+ <td>
+ <#if leaveFeedback.role == "buyer">
+ Buyer:<a target="_blank" href="http://myworld.sandbox.ebay.com/${leaveFeedback.userID}">${leaveFeedback.userID}</a>
+ <#else>
+ Seller:<a target="_blank" href="http://myworld.sandbox.ebay.com/${leaveFeedback.userID}">${leaveFeedback.userID}</a>
+ </#if>
+ </td>
+ </tr>
+ </#if>
+ </#if>
+ </#list>
+ </tbody>
+</table>
+<br/>
+<input type="hidden" name="feedbackSize" value="${feedbackCounter}"/>
+<input type="submit" value="Leave Feedback"/>
+</form>
+<#else>
+No Leave Feedback.
+</#if>
\ No newline at end of file
|