public static String makeLinkHiddenFormName( Map<String, Object> context, ModelFormField modelFormField) { ModelForm modelForm = modelFormField.getModelForm(); Integer itemIndex = (Integer) context.get("itemIndex"); String iterateId = ""; String formUniqueId = ""; String formName = (String) context.get("formName"); if (UtilValidate.isEmpty(formName)) { formName = modelForm.getName(); } if (UtilValidate.isNotEmpty(context.get("iterateId"))) { iterateId = (String) context.get("iterateId"); } if (UtilValidate.isNotEmpty(context.get("formUniqueId"))) { formUniqueId = (String) context.get("formUniqueId"); } if (itemIndex != null) { return formName + modelForm.getItemIndexSeparator() + itemIndex.intValue() + iterateId + formUniqueId + modelForm.getItemIndexSeparator() + modelFormField.getName(); } else { return formName + modelForm.getItemIndexSeparator() + modelFormField.getName(); } }
protected void renderScreenletPaginateMenu( Appendable writer, Map<String, Object> context, ModelScreenWidget.Form form) throws IOException { HttpServletResponse response = (HttpServletResponse) context.get("response"); HttpServletRequest request = (HttpServletRequest) context.get("request"); ModelForm modelForm = form.getModelForm(context); modelForm.runFormActions(context); modelForm.preparePager(context); String targetService = modelForm.getPaginateTarget(context); if (targetService == null) { targetService = "${targetService}"; } // get the parametrized pagination index and size fields int paginatorNumber = WidgetWorker.getPaginatorNumber(context); String viewIndexParam = modelForm.getMultiPaginateIndexField(context); String viewSizeParam = modelForm.getMultiPaginateSizeField(context); int viewIndex = modelForm.getViewIndex(context); int viewSize = modelForm.getViewSize(context); int listSize = modelForm.getListSize(context); int highIndex = modelForm.getHighIndex(context); int actualPageSize = modelForm.getActualPageSize(context); // if this is all there seems to be (if listSize < 0, then size is unknown) if (actualPageSize >= listSize && listSize >= 0) return; // needed for the "Page" and "rows" labels Map<String, String> uiLabelMap = UtilGenerics.cast(context.get("uiLabelMap")); String ofLabel = ""; if (uiLabelMap == null) { Debug.logWarning("Could not find uiLabelMap in context", module); } else { ofLabel = uiLabelMap.get("CommonOf"); ofLabel = ofLabel.toLowerCase(); } // for legacy support, the viewSizeParam is VIEW_SIZE and viewIndexParam is VIEW_INDEX when the // fields are "viewSize" and "viewIndex" if (viewIndexParam.equals("viewIndex" + "_" + paginatorNumber)) viewIndexParam = "VIEW_INDEX" + "_" + paginatorNumber; if (viewSizeParam.equals("viewSize" + "_" + paginatorNumber)) viewSizeParam = "VIEW_SIZE" + "_" + paginatorNumber; ServletContext ctx = (ServletContext) request.getAttribute("servletContext"); RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_"); Map<String, Object> inputFields = UtilGenerics.toMap(context.get("requestParameters")); // strip out any multi form fields if the form is of type multi if (modelForm.getType().equals("multi")) { inputFields = UtilHttp.removeMultiFormParameters(inputFields); } String queryString = UtilHttp.urlEncodeArgs(inputFields); // strip legacy viewIndex/viewSize params from the query string queryString = UtilHttp.stripViewParamsFromQueryString(queryString, "" + paginatorNumber); // strip parametrized index/size params from the query string HashSet<String> paramNames = new HashSet<String>(); paramNames.add(viewIndexParam); paramNames.add(viewSizeParam); queryString = UtilHttp.stripNamedParamsFromQueryString(queryString, paramNames); String anchor = ""; String paginateAnchor = modelForm.getPaginateTargetAnchor(); if (paginateAnchor != null) anchor = "#" + paginateAnchor; // preparing the link text, so that later in the code we can reuse this and just add the // viewIndex String prepLinkText = ""; prepLinkText = targetService; if (prepLinkText.indexOf("?") < 0) { prepLinkText += "?"; } else if (!prepLinkText.endsWith("?")) { prepLinkText += "&"; } if (!UtilValidate.isEmpty(queryString) && !queryString.equals("null")) { prepLinkText += queryString + "&"; } prepLinkText += viewSizeParam + "=" + viewSize + "&" + viewIndexParam + "="; String linkText; // The current screenlet title bar navigation syling requires rendering // these links in reverse order // Last button String lastLinkUrl = ""; if (highIndex < listSize) { int page = (listSize / viewSize); linkText = prepLinkText + page + anchor; lastLinkUrl = rh.makeLink(request, response, linkText); } String nextLinkUrl = ""; if (highIndex < listSize) { linkText = prepLinkText + (viewIndex + 1) + anchor; // - make the link nextLinkUrl = rh.makeLink(request, response, linkText); } String previousLinkUrl = ""; if (viewIndex > 0) { linkText = prepLinkText + (viewIndex - 1) + anchor; previousLinkUrl = rh.makeLink(request, response, linkText); } String firstLinkUrl = ""; if (viewIndex > 0) { linkText = prepLinkText + 0 + anchor; firstLinkUrl = rh.makeLink(request, response, linkText); } Map<String, Object> parameters = FastMap.newInstance(); parameters.put("lowIndex", modelForm.getLowIndex(context)); parameters.put("actualPageSize", actualPageSize); parameters.put("ofLabel", ofLabel); parameters.put("listSize", listSize); parameters.put("paginateLastStyle", modelForm.getPaginateLastStyle()); parameters.put("lastLinkUrl", lastLinkUrl); parameters.put("paginateLastLabel", modelForm.getPaginateLastLabel(context)); parameters.put("paginateNextStyle", modelForm.getPaginateNextStyle()); parameters.put("nextLinkUrl", nextLinkUrl); parameters.put("paginateNextLabel", modelForm.getPaginateNextLabel(context)); parameters.put("paginatePreviousStyle", modelForm.getPaginatePreviousStyle()); parameters.put("paginatePreviousLabel", modelForm.getPaginatePreviousLabel(context)); parameters.put("previousLinkUrl", previousLinkUrl); parameters.put("paginateFirstStyle", modelForm.getPaginateFirstStyle()); parameters.put("paginateFirstLabel", modelForm.getPaginateFirstLabel(context)); parameters.put("firstLinkUrl", firstLinkUrl); executeMacro(writer, "renderScreenletPaginateMenu", parameters); }