You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Bruno Busco <br...@gmail.com> on 2008/12/24 11:03:33 UTC
Re: BLOCKER: svn commit: r725053 - in /ofbiz/trunk: applications/order/entitydef/ applications/party/webapp/partymgr/WEB-INF/ applications/party/webapp/partymgr/party/ applications/party/widget/partymgr/ framework/base/src/org/ofbiz/base/util/ framew
Hans,
I have found the following that might help:
If I change the FindInvoice screen like this:
<screen name="FindInvoices">
<section>
<actions>
<set field="headerItem" value="invoices"/>
<set field="titleProperty" value="PageTitleFindInvoice"/>
<set field="tabButtonItem" value="invoices"/>
<set field="viewIndex"
from-field="parameters.VIEW_INDEX" type="Integer"/>
<set field="viewSize"
from-field="parameters.VIEW_SIZE" type="Integer" default-value="30"/>
</actions>
<widgets>
<decorator-screen name="CommonInvoiceDecorator"
location="${parameters.invoiceDecoratorLocation}">
<decorator-section name="body">
<include-menu name="InvoiceSubTabBar"
location="component://accounting/widget/Menus.xml"/>
<screenlet title="${uiLabelMap.PageTitleFindInvoice}">
<include-form name="FindInvoices"
location="component://accounting/webapp/accounting/invoice/InvoiceForms.xml"/>
</screenlet>
<!--
<screenlet
title="${uiLabelMap.PageTitleListInvoices}"
navigation-form-name="ListInvoices">
-->
<screenlet title="${uiLabelMap.PageTitleListInvoices}">
<include-form name="ListInvoices"
location="component://accounting/webapp/accounting/invoice/InvoiceForms.xml"/>
</screenlet>
</decorator-section>
</decorator-screen>
</widgets>
</section>
</screen>
Pagination works well.
If I look in the debug.log file I find the following running the original code:
2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [
ModelForm.java:1341:INFO ] preparePager: low - high = 1 - 2
2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [
ModelForm.java:1359:INFO ] preparePager: Found rows = 2
2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [
ModelForm.java:1341:INFO ] preparePager: low - high = 0 - 1
2008-12-24 10:49:18,875 (http-0.0.0.0-8443-1) [
ModelForm.java:1359:INFO ] preparePager: Found rows = 1
and this with the code with my change:
2008-12-24 10:54:27,406 (http-0.0.0.0-8443-1) [
ModelForm.java:1341:INFO ] preparePager: low - high = 1 - 2
2008-12-24 10:54:27,406 (http-0.0.0.0-8443-1) [
ModelForm.java:1359:INFO ] preparePager: Found rows = 2
So it seems to me that the multi-pagination does not work when we use
the "navigation-form-name" attribute in a screenlet widget.
In this case it seems that the pagination calculation runs twice and
it fails to get the correct pagination index.
So a quick fix is simply to not use the "navigation-form-name"
attribute in the screenlet.
May be this will help who better knows how the multi-pagination system
works to fix it.
-Bruno
2008/12/24 Hans Bakker <ma...@antwebsystems.com>:
> This commit (or later) causes pagination to stop working...
> The page numbers change but the listing does not.....
>
> How to test? set the pagination in
> framework/widget/config/widget.properties to "1"
>
> In the latest svn go to invoice click 'find' and try to paginate....the
> invoiceId shown will not change. (although there are 3)
>
> then go back to r725022, remove the 2 statements containing
> viewindex/viewsize from the findInvoiceScreen in invoicescreens.xml
>
> and see the problem have been solved.....
>
> Bruno or Jaques or somebody else...please have a look, i could not find
> it that quickly....
>
> Regards,
> Hans
>
>
> On Wed, 2008-12-10 at 10:39 +0000, jleroux@apache.org wrote:
>> Author: jleroux
>> Date: Wed Dec 10 02:39:16 2008
>> New Revision: 725053
>>
>> URL: http://svn.apache.org/viewvc?rev=725053&view=rev
>> Log:
>> A slightly modified patch from Bilgin Ibryam "Allow multi-pagination in a page" (https://issues.apache.org/jira/browse/OFBIZ-1935) - OFBIZ-1935
>>
>> Modified:
>> ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml
>> ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
>> ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml
>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java
>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java
>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
>>
>> Modified: ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml (original)
>> +++ ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml Wed Dec 10 02:39:16 2008
>> @@ -1348,6 +1348,7 @@
>> <member-entity entity-alias="SI" entity-name="StatusItem"/>
>> <alias-all entity-alias="QWE"/>
>> <alias-all entity-alias="WE"/>
>> + <!--alias name="statusId" field="statusId" entity-alias="SI"/-->
>> <alias name="statusItemDescription" field="description" entity-alias="SI"/>
>> <view-link entity-alias="QWE" rel-entity-alias="WE">
>> <key-map field-name="workEffortId"/>
>> @@ -1361,6 +1362,9 @@
>> <relation type="one-nofk" rel-entity-name="Quote">
>> <key-map field-name="quoteId"/>
>> </relation>
>> + <relation type="one-nofk" rel-entity-name="StatusItem">
>> + <key-map field-name="statusId"/>
>> + </relation>
>> </view-entity>
>> <view-entity entity-name="RequirementAndRole"
>> package-name="org.ofbiz.order.request"
>>
>> Modified: ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml (original)
>> +++ ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml Wed Dec 10 02:39:16 2008
>> @@ -396,13 +396,13 @@
>> <request-map uri="createPartyAttribute">
>> <security https="true" auth="true"/>
>> <event type="service" path="" invoke="createPartyAttribute"/>
>> - <response name="success" type="view" value="EditPartyAttribute"/>
>> + <response name="success" type="view" value="viewprofile"/>
>> <response name="error" type="view" value="EditPartyAttribute"/>
>> </request-map>
>> <request-map uri="updatePartyAttribute">
>> <security https="true" auth="true"/>
>> <event type="service" path="" invoke="updatePartyAttribute"/>
>> - <response name="success" type="view" value="EditPartyAttribute"/>
>> + <response name="success" type="view" value="viewprofile"/>
>> <response name="error" type="view" value="EditPartyAttribute"/>
>> </request-map>
>> <request-map uri="removePartyAttribute">
>>
>> Modified: ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml (original)
>> +++ ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml Wed Dec 10 02:39:16 2008
>> @@ -612,7 +612,8 @@
>> </form>
>>
>> <form name="ListCarrierAccounts" type="list" target="updatePartyCarrierAccount"
>> - odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
>> + odd-row-style="alternate-row" default-table-style="basic-table hover-bar"
>> + paginate="true" view-size="3" paginate-target="viewprofile" paginate-target-anchor="ListCarrierAccounts">
>> <actions>
>> <entity-condition entity-name="PartyCarrierAccount" list-name="carrierAccounts" filter-by-date="true">
>> <condition-expr field-name="partyId" env-name="parameters.partyId"></condition-expr>
>>
>> Modified: ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml (original)
>> +++ ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml Wed Dec 10 02:39:16 2008
>> @@ -270,7 +270,7 @@
>> <label style="h3" text="${uiLabelMap.PageTitleFinancialAccountSummary}"/>
>> </container>
>> <container style="screenlet-body">
>> - <iterate-section entry-name="ownedFinAccount" paginate="true" paginate-target="viewprofile?partyId=${parameters.partyId}" view-size="3" list-name="ownedFinAccountList">
>> + <iterate-section entry-name="ownedFinAccount" paginate="true" paginate-target="viewprofile" view-size="3" list-name="ownedFinAccountList">
>> <section>
>> <actions>
>> <entity-condition entity-name="FinAccountTrans" list-name="ownedFinAccountTransList">
>>
>> Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java (original)
>> +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java Wed Dec 10 02:39:16 2008
>> @@ -919,11 +919,18 @@
>> }
>>
>> public static String stripViewParamsFromQueryString(String queryString) {
>> + return stripViewParamsFromQueryString(queryString, null);
>> + }
>> +
>> + public static String stripViewParamsFromQueryString(String queryString, String paginatorNumber) {
>> Set<String> paramNames = new HashSet<String>();
>> - paramNames.add("VIEW_INDEX");
>> - paramNames.add("VIEW_SIZE");
>> - paramNames.add("viewIndex");
>> - paramNames.add("viewSize");
>> + if (UtilValidate.isNotEmpty(paginatorNumber)) {
>> + paginatorNumber = "_" + paginatorNumber;
>> + }
>> + paramNames.add("VIEW_INDEX" + paginatorNumber);
>> + paramNames.add("VIEW_SIZE" + paginatorNumber);
>> + paramNames.add("viewIndex" + paginatorNumber);
>> + paramNames.add("viewSize" + paginatorNumber);
>> return stripNamedParamsFromQueryString(queryString, paramNames);
>> }
>>
>>
>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java (original)
>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java Wed Dec 10 02:39:16 2008
>> @@ -112,4 +112,27 @@
>> }
>> return result;
>> }
>> +
>> + public int getPaginatorNumber(Map<String, Object> context) {
>> + int paginator_number = 0;
>> + Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
>> + if (globalCtx != null) {
>> + Integer paginateNumberInt= (Integer)globalCtx.get("PAGINATOR_NUMBER");
>> + if (paginateNumberInt == null) {
>> + paginateNumberInt = Integer.valueOf(0);
>> + globalCtx.put("PAGINATOR_NUMBER", paginateNumberInt);
>> + }
>> + paginator_number = paginateNumberInt.intValue();
>> + }
>> + return paginator_number;
>> + }
>> +
>> + public void incrementPaginatorNumber(Map<String, Object> context) {
>> + Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
>> + if (globalCtx != null) {
>> + Integer paginateNumberInt = Integer.valueOf(getPaginatorNumber(context) + 1);
>> + globalCtx.put("PAGINATOR_NUMBER", paginateNumberInt);
>> + }
>> + }
>> +
>> }
>>
>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java (original)
>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Wed Dec 10 02:39:16 2008
>> @@ -1306,6 +1306,9 @@
>> }
>>
>> public void preparePager(Map<String, Object> context) {
>> +
>> + // increment the paginator
>> + this.incrementPaginatorNumber(context);
>> this.rowCount = 0;
>> String lookupName = this.getListName();
>> if (UtilValidate.isEmpty(lookupName)) {
>> @@ -2185,6 +2188,8 @@
>> if (UtilValidate.isEmpty(field)) {
>> field = DEFAULT_PAG_INDEX_FIELD;
>> }
>> + // append the paginator number
>> + field = field + "_" + getPaginatorNumber(context);
>> return field;
>> }
>>
>> @@ -2199,7 +2204,7 @@
>> // try parameters.VIEW_INDEX as that is an old OFBiz convention
>> Map parameters = (Map) context.get("parameters");
>> if (parameters != null) {
>> - value = parameters.get("VIEW_INDEX");
>> + value = parameters.get("VIEW_INDEX" + "_" + getPaginatorNumber(context));
>>
>> if (value == null) {
>> value = parameters.get(field);
>> @@ -2224,6 +2229,8 @@
>> if (UtilValidate.isEmpty(field)) {
>> field = DEFAULT_PAG_SIZE_FIELD;
>> }
>> + // append the paginator number
>> + field = field + "_" + getPaginatorNumber(context);
>> return field;
>> }
>>
>> @@ -2238,7 +2245,7 @@
>> // try parameters.VIEW_SIZE as that is an old OFBiz convention
>> Map parameters = (Map) context.get("parameters");
>> if (parameters != null) {
>> - value = parameters.get("VIEW_SIZE");
>> + value = parameters.get("VIEW_SIZE" + "_" + getPaginatorNumber(context));
>>
>> if (value == null) {
>> value = parameters.get(field);
>>
>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java Wed Dec 10 02:39:16 2008
>> @@ -2245,6 +2245,7 @@
>> }
>>
>> // get the parametrized pagination index and size fields
>> + int paginatorNumber = modelForm.getPaginatorNumber(context);
>> String viewIndexParam = modelForm.getPaginateIndexField(context);
>> String viewSizeParam = modelForm.getPaginateSizeField(context);
>>
>> @@ -2272,13 +2273,13 @@
>> }
>>
>> // for legacy support, the viewSizeParam is VIEW_SIZE and viewIndexParam is VIEW_INDEX when the fields are "viewSize" and "viewIndex"
>> - if (viewIndexParam.equals("viewIndex")) viewIndexParam = "VIEW_INDEX";
>> - if (viewSizeParam.equals("viewSize")) viewSizeParam = "VIEW_SIZE";
>> + if (viewIndexParam.equals("viewIndex" + "_" + paginatorNumber)) viewIndexParam = "VIEW_INDEX" + "_" + paginatorNumber;
>> + if (viewSizeParam.equals("viewSize" + "_" + paginatorNumber)) viewSizeParam = "VIEW_SIZE" + "_" + paginatorNumber;
>>
>> String str = (String) context.get("_QBESTRING_");
>>
>> // strip legacy viewIndex/viewSize params from the query string
>> - String queryString = UtilHttp.stripViewParamsFromQueryString(str);
>> + String queryString = UtilHttp.stripViewParamsFromQueryString(str, "" + paginatorNumber);
>>
>> // strip parametrized index/size params from the query string
>> HashSet<String> paramNames = new HashSet<String>();
>>
>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java (original)
>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java Wed Dec 10 02:39:16 2008
>> @@ -246,6 +246,7 @@
>> }
>>
>> // get the parametrized pagination index and size fields
>> + int paginatoNumber = modelForm.getPaginatorNumber(context);
>> String viewIndexParam = modelForm.getPaginateIndexField(context);
>> String viewSizeParam = modelForm.getPaginateSizeField(context);
>>
>> @@ -271,8 +272,8 @@
>> }
>>
>> // for legacy support, the viewSizeParam is VIEW_SIZE and viewIndexParam is VIEW_INDEX when the fields are "viewSize" and "viewIndex"
>> - if (viewIndexParam.equals("viewIndex")) viewIndexParam = "VIEW_INDEX";
>> - if (viewSizeParam.equals("viewSize")) viewSizeParam = "VIEW_SIZE";
>> + if (viewIndexParam.equals("viewIndex" + "_" + paginatoNumber)) viewIndexParam = "VIEW_INDEX" + "_" + paginatoNumber;
>> + if (viewSizeParam.equals("viewSize" + "_" + paginatoNumber)) viewSizeParam = "VIEW_SIZE" + "_" + paginatoNumber;
>>
>> ServletContext ctx = (ServletContext) request.getAttribute("servletContext");
>> RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_");
>> @@ -284,7 +285,7 @@
>> }
>> String queryString = UtilHttp.urlEncodeArgs(inputFields);
>> // strip legacy viewIndex/viewSize params from the query string
>> - queryString = UtilHttp.stripViewParamsFromQueryString(queryString);
>> + queryString = UtilHttp.stripViewParamsFromQueryString(queryString, "" + paginatoNumber);
>> // strip parametrized index/size params from the query string
>> HashSet<String> paramNames = new HashSet<String>();
>> paramNames.add(viewIndexParam);
>>
>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=725053&r1=725052&r2=725053&view=diff
>> ==============================================================================
>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java (original)
>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java Wed Dec 10 02:39:16 2008
>> @@ -21,6 +21,7 @@
>> import java.io.IOException;
>> import java.util.ArrayList;
>> import java.util.Arrays;
>> +import java.util.HashSet;
>> import java.util.Iterator;
>> import java.util.List;
>> import java.util.Locale;
>> @@ -33,6 +34,8 @@
>>
>> import org.ofbiz.base.util.Debug;
>> import org.ofbiz.base.util.GeneralException;
>> +import org.ofbiz.base.util.UtilGenerics;
>> +import org.ofbiz.base.util.UtilHttp;
>> import org.ofbiz.base.util.UtilMisc;
>> import org.ofbiz.base.util.UtilProperties;
>> import org.ofbiz.base.util.UtilValidate;
>> @@ -114,6 +117,8 @@
>> Debug.logError("Object not list or map type", module);
>> return;
>> }
>> + this.incrementPaginatorNumber(context);
>> + int startPageNumber = this.getPaginatorNumber(context);
>> getListLimits(context, theList);
>> int rowCount = 0;
>> Iterator iter = theList.iterator();
>> @@ -140,19 +145,31 @@
>> section.renderWidgetString(writer, contextMs, screenStringRenderer);
>> }
>> }
>> +
>> if ((itemIndex + 1) < highIndex) {
>> setHighIndex(itemIndex + 1);
>> }
>> setActualPageSize(highIndex - lowIndex);
>> if (paginate) {
>> try {
>> + Integer lastPageNumber = null;
>> + Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
>> + if (globalCtx != null) {
>> + lastPageNumber = (Integer)globalCtx.get("PAGINATOR_NUMBER");
>> + globalCtx.put("PAGINATOR_NUMBER", Integer.valueOf(startPageNumber));
>> + }
>> +
>> renderNextPrev(writer, context);
>> +
>> + if (globalCtx != null) {
>> + globalCtx.put("PAGINATOR_NUMBER", lastPageNumber);
>> + }
>> } catch(IOException e) {
>> Debug.logError(e, module);
>> throw new RuntimeException(e.getMessage());
>> }
>> }
>> -
>> +
>> }
>> /*
>> * @return
>> @@ -230,8 +247,10 @@
>> if (paginate) {
>> try {
>> Map params = (Map)context.get("parameters");
>> - String viewIndexString = (String) params.get("VIEW_INDEX");
>> + String viewIndexString = (String) params.get("VIEW_INDEX" + "_" + getPaginatorNumber(context));
>> + String viewSizeString = (String) params.get("VIEW_SIZE" + "_" + getPaginatorNumber(context));
>> viewIndex = Integer.parseInt(viewIndexString);
>> + viewSize = Integer.parseInt(viewSizeString);
>> } catch (Exception e) {
>> try {
>> viewIndex = ((Integer) context.get("viewIndex")).intValue();
>> @@ -240,16 +259,9 @@
>> }
>> }
>> context.put("viewIndex", Integer.valueOf(this.viewIndex));
>> -
>> - try {
>> - viewSize = ((Integer) context.get("viewSize")).intValue();
>> - } catch (Exception e) {
>> - //viewSize = DEFAULT_PAGE_SIZE;
>> - }
>> +
>> lowIndex = viewIndex * viewSize;
>> highIndex = (viewIndex + 1) * viewSize;
>> -
>> -
>> } else {
>> viewIndex = 0;
>> viewSize = DEFAULT_PAGE_SIZE;
>> @@ -265,6 +277,19 @@
>> targetService = "${targetService}";
>> }
>>
>> + Map<String, Object> inputFields = UtilGenerics.checkMap(context.get("requestParameters"));
>> + Map<String, Object> queryStringMap = UtilGenerics.toMap(context.get("queryStringMap"));
>> + if (UtilValidate.isNotEmpty(queryStringMap)) {
>> + inputFields.putAll(queryStringMap);
>> + }
>> +
>> + String queryString = UtilHttp.urlEncodeArgs(inputFields);
>> + int paginatorNumber = this.getPaginatorNumber(context);
>> + queryString = UtilHttp.stripViewParamsFromQueryString(queryString, "" + paginatorNumber);
>> +
>> +
>> +
>> +
>> if (UtilValidate.isEmpty(targetService)) {
>> Debug.logWarning("TargetService is empty.", module);
>> return;
>> @@ -331,7 +356,10 @@
>> if (linkText.indexOf("?") < 0) linkText.append("?");
>> else linkText.append("&");
>> //if (queryString != null && !queryString.equals("null")) linkText += queryString + "&";
>> - linkText.append("VIEW_SIZE=").append(viewSize).append("&VIEW_INDEX=").append(viewIndex - 1).append("\"");
>> + if (UtilValidate.isNotEmpty(queryString)) {
>> + linkText.append(queryString).append("&");
>> + }
>> + linkText.append("VIEW_SIZE_"+ paginatorNumber + "=").append(viewSize).append("&VIEW_INDEX_" + paginatorNumber + "=").append(viewIndex - 1).append("\"");
>>
>> // make the link
>> writer.append(rh.makeLink(request, response, linkText.toString(), false, false, false));
>> @@ -349,7 +377,10 @@
>> StringBuilder linkText = new StringBuilder(targetService);
>> if (linkText.indexOf("?") < 0) linkText.append("?");
>> else linkText.append("&");
>> - linkText.append("VIEW_SIZE=").append(viewSize).append("&VIEW_INDEX=").append(viewIndex + 1).append("\"");
>> + if (UtilValidate.isNotEmpty(queryString)) {
>> + linkText.append(queryString).append("&");
>> + }
>> + linkText.append("VIEW_SIZE_" + paginatorNumber + "=").append(viewSize).append("&VIEW_INDEX_" + paginatorNumber + "=").append(viewIndex + 1).append("\"");
>>
>> // make the link
>> writer.append(rh.makeLink(request, response, linkText.toString(), false, false, false));
>>
>>
> --
> Antwebsystems.com: Quality OFBiz services for competitive prices
>
>
Re: BLOCKER: svn commit: r725053 - in /ofbiz/trunk: applications/order/entitydef/ applications/party/webapp/partymgr/WEB-INF/ applications/party/webapp/partymgr/party/ applications/party/widget/partymgr/ framework/base/src/org/ofbiz/base/util/ framew
Posted by Bruno Busco <br...@gmail.com>.
I think that form renderer should be changed so that if a
"navigation-form-name" attribute is specified the pagination
calculation is not performet twice but only once.
-Bruno
2008/12/24 Jacques Le Roux <ja...@les7arts.com>:
> Thanks Bruno,
>
> This will certainly help
>
> Jacques
>
> From: "Bruno Busco" <br...@gmail.com>
>>
>> Hans,
>> I have found the following that might help:
>>
>> If I change the FindInvoice screen like this:
>>
>> <screen name="FindInvoices">
>> <section>
>> <actions>
>> <set field="headerItem" value="invoices"/>
>> <set field="titleProperty" value="PageTitleFindInvoice"/>
>> <set field="tabButtonItem" value="invoices"/>
>> <set field="viewIndex"
>> from-field="parameters.VIEW_INDEX" type="Integer"/>
>> <set field="viewSize"
>> from-field="parameters.VIEW_SIZE" type="Integer" default-value="30"/>
>> </actions>
>> <widgets>
>> <decorator-screen name="CommonInvoiceDecorator"
>> location="${parameters.invoiceDecoratorLocation}">
>> <decorator-section name="body">
>> <include-menu name="InvoiceSubTabBar"
>> location="component://accounting/widget/Menus.xml"/>
>> <screenlet
>> title="${uiLabelMap.PageTitleFindInvoice}">
>> <include-form name="FindInvoices"
>>
>> location="component://accounting/webapp/accounting/invoice/InvoiceForms.xml"/>
>> </screenlet>
>> <!--
>> <screenlet
>> title="${uiLabelMap.PageTitleListInvoices}"
>> navigation-form-name="ListInvoices">
>> -->
>> <screenlet
>> title="${uiLabelMap.PageTitleListInvoices}">
>> <include-form name="ListInvoices"
>>
>> location="component://accounting/webapp/accounting/invoice/InvoiceForms.xml"/>
>> </screenlet>
>> </decorator-section>
>> </decorator-screen>
>> </widgets>
>> </section>
>> </screen>
>>
>> Pagination works well.
>> If I look in the debug.log file I find the following running the original
>> code:
>> 2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [
>> ModelForm.java:1341:INFO ] preparePager: low - high = 1 - 2
>> 2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [
>> ModelForm.java:1359:INFO ] preparePager: Found rows = 2
>> 2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [
>> ModelForm.java:1341:INFO ] preparePager: low - high = 0 - 1
>> 2008-12-24 10:49:18,875 (http-0.0.0.0-8443-1) [
>> ModelForm.java:1359:INFO ] preparePager: Found rows = 1
>>
>> and this with the code with my change:
>> 2008-12-24 10:54:27,406 (http-0.0.0.0-8443-1) [
>> ModelForm.java:1341:INFO ] preparePager: low - high = 1 - 2
>> 2008-12-24 10:54:27,406 (http-0.0.0.0-8443-1) [
>> ModelForm.java:1359:INFO ] preparePager: Found rows = 2
>>
>> So it seems to me that the multi-pagination does not work when we use
>> the "navigation-form-name" attribute in a screenlet widget.
>> In this case it seems that the pagination calculation runs twice and
>> it fails to get the correct pagination index.
>>
>> So a quick fix is simply to not use the "navigation-form-name"
>> attribute in the screenlet.
>> May be this will help who better knows how the multi-pagination system
>> works to fix it.
>>
>> -Bruno
>>
>>
>> 2008/12/24 Hans Bakker <ma...@antwebsystems.com>:
>>>
>>> This commit (or later) causes pagination to stop working...
>>> The page numbers change but the listing does not.....
>>>
>>> How to test? set the pagination in
>>> framework/widget/config/widget.properties to "1"
>>>
>>> In the latest svn go to invoice click 'find' and try to paginate....the
>>> invoiceId shown will not change. (although there are 3)
>>>
>>> then go back to r725022, remove the 2 statements containing
>>> viewindex/viewsize from the findInvoiceScreen in invoicescreens.xml
>>>
>>> and see the problem have been solved.....
>>>
>>> Bruno or Jaques or somebody else...please have a look, i could not find
>>> it that quickly....
>>>
>>> Regards,
>>> Hans
>>>
>>>
>>> On Wed, 2008-12-10 at 10:39 +0000, jleroux@apache.org wrote:
>>>>
>>>> Author: jleroux
>>>> Date: Wed Dec 10 02:39:16 2008
>>>> New Revision: 725053
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=725053&view=rev
>>>> Log:
>>>> A slightly modified patch from Bilgin Ibryam "Allow multi-pagination in
>>>> a page" (https://issues.apache.org/jira/browse/OFBIZ-1935) - OFBIZ-1935
>>>>
>>>> Modified:
>>>> ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
>>>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml
>>>> ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
>>>> ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml
>>>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
>>>>
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
>>>>
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
>>>>
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
>>>>
>>>> Modified: ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> --- ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
>>>> (original)
>>>> +++ ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml Wed
>>>> Dec 10 02:39:16 2008
>>>> @@ -1348,6 +1348,7 @@
>>>> <member-entity entity-alias="SI" entity-name="StatusItem"/>
>>>> <alias-all entity-alias="QWE"/>
>>>> <alias-all entity-alias="WE"/>
>>>> + <!--alias name="statusId" field="statusId" entity-alias="SI"/-->
>>>> <alias name="statusItemDescription" field="description"
>>>> entity-alias="SI"/>
>>>> <view-link entity-alias="QWE" rel-entity-alias="WE">
>>>> <key-map field-name="workEffortId"/>
>>>> @@ -1361,6 +1362,9 @@
>>>> <relation type="one-nofk" rel-entity-name="Quote">
>>>> <key-map field-name="quoteId"/>
>>>> </relation>
>>>> + <relation type="one-nofk" rel-entity-name="StatusItem">
>>>> + <key-map field-name="statusId"/>
>>>> + </relation>
>>>> </view-entity>
>>>> <view-entity entity-name="RequirementAndRole"
>>>> package-name="org.ofbiz.order.request"
>>>>
>>>> Modified:
>>>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml
>>>> (original)
>>>> +++
>>>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml Wed
>>>> Dec 10 02:39:16 2008
>>>> @@ -396,13 +396,13 @@
>>>> <request-map uri="createPartyAttribute">
>>>> <security https="true" auth="true"/>
>>>> <event type="service" path="" invoke="createPartyAttribute"/>
>>>> - <response name="success" type="view"
>>>> value="EditPartyAttribute"/>
>>>> + <response name="success" type="view" value="viewprofile"/>
>>>> <response name="error" type="view" value="EditPartyAttribute"/>
>>>> </request-map>
>>>> <request-map uri="updatePartyAttribute">
>>>> <security https="true" auth="true"/>
>>>> <event type="service" path="" invoke="updatePartyAttribute"/>
>>>> - <response name="success" type="view"
>>>> value="EditPartyAttribute"/>
>>>> + <response name="success" type="view" value="viewprofile"/>
>>>> <response name="error" type="view" value="EditPartyAttribute"/>
>>>> </request-map>
>>>> <request-map uri="removePartyAttribute">
>>>>
>>>> Modified:
>>>> ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> --- ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
>>>> (original)
>>>> +++ ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
>>>> Wed Dec 10 02:39:16 2008
>>>> @@ -612,7 +612,8 @@
>>>> </form>
>>>>
>>>> <form name="ListCarrierAccounts" type="list"
>>>> target="updatePartyCarrierAccount"
>>>> - odd-row-style="alternate-row" default-table-style="basic-table
>>>> hover-bar">
>>>> + odd-row-style="alternate-row" default-table-style="basic-table
>>>> hover-bar"
>>>> + paginate="true" view-size="3" paginate-target="viewprofile"
>>>> paginate-target-anchor="ListCarrierAccounts">
>>>> <actions>
>>>> <entity-condition entity-name="PartyCarrierAccount"
>>>> list-name="carrierAccounts" filter-by-date="true">
>>>> <condition-expr field-name="partyId"
>>>> env-name="parameters.partyId"></condition-expr>
>>>>
>>>> Modified:
>>>> ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> --- ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml
>>>> (original)
>>>> +++ ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml
>>>> Wed Dec 10 02:39:16 2008
>>>> @@ -270,7 +270,7 @@
>>>> <label style="h3"
>>>> text="${uiLabelMap.PageTitleFinancialAccountSummary}"/>
>>>> </container>
>>>> <container style="screenlet-body">
>>>> - <iterate-section
>>>> entry-name="ownedFinAccount" paginate="true"
>>>> paginate-target="viewprofile?partyId=${parameters.partyId}" view-size="3"
>>>> list-name="ownedFinAccountList">
>>>> + <iterate-section
>>>> entry-name="ownedFinAccount" paginate="true" paginate-target="viewprofile"
>>>> view-size="3" list-name="ownedFinAccountList">
>>>> <section>
>>>> <actions>
>>>> <entity-condition
>>>> entity-name="FinAccountTrans" list-name="ownedFinAccountTransList">
>>>>
>>>> Modified:
>>>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java
>>>> (original)
>>>> +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java Wed
>>>> Dec 10 02:39:16 2008
>>>> @@ -919,11 +919,18 @@
>>>> }
>>>>
>>>> public static String stripViewParamsFromQueryString(String
>>>> queryString) {
>>>> + return stripViewParamsFromQueryString(queryString, null);
>>>> + }
>>>> +
>>>> + public static String stripViewParamsFromQueryString(String
>>>> queryString, String paginatorNumber) {
>>>> Set<String> paramNames = new HashSet<String>();
>>>> - paramNames.add("VIEW_INDEX");
>>>> - paramNames.add("VIEW_SIZE");
>>>> - paramNames.add("viewIndex");
>>>> - paramNames.add("viewSize");
>>>> + if (UtilValidate.isNotEmpty(paginatorNumber)) {
>>>> + paginatorNumber = "_" + paginatorNumber;
>>>> + }
>>>> + paramNames.add("VIEW_INDEX" + paginatorNumber);
>>>> + paramNames.add("VIEW_SIZE" + paginatorNumber);
>>>> + paramNames.add("viewIndex" + paginatorNumber);
>>>> + paramNames.add("viewSize" + paginatorNumber);
>>>> return stripNamedParamsFromQueryString(queryString, paramNames);
>>>> }
>>>>
>>>>
>>>> Modified:
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java
>>>> (original)
>>>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java
>>>> Wed Dec 10 02:39:16 2008
>>>> @@ -112,4 +112,27 @@
>>>> }
>>>> return result;
>>>> }
>>>> +
>>>> + public int getPaginatorNumber(Map<String, Object> context) {
>>>> + int paginator_number = 0;
>>>> + Map<String, Object> globalCtx =
>>>> UtilGenerics.checkMap(context.get("globalContext"));
>>>> + if (globalCtx != null) {
>>>> + Integer paginateNumberInt=
>>>> (Integer)globalCtx.get("PAGINATOR_NUMBER");
>>>> + if (paginateNumberInt == null) {
>>>> + paginateNumberInt = Integer.valueOf(0);
>>>> + globalCtx.put("PAGINATOR_NUMBER", paginateNumberInt);
>>>> + }
>>>> + paginator_number = paginateNumberInt.intValue();
>>>> + }
>>>> + return paginator_number;
>>>> + }
>>>> +
>>>> + public void incrementPaginatorNumber(Map<String, Object> context) {
>>>> + Map<String, Object> globalCtx =
>>>> UtilGenerics.checkMap(context.get("globalContext"));
>>>> + if (globalCtx != null) {
>>>> + Integer paginateNumberInt =
>>>> Integer.valueOf(getPaginatorNumber(context) + 1);
>>>> + globalCtx.put("PAGINATOR_NUMBER", paginateNumberInt);
>>>> + }
>>>> + }
>>>> +
>>>> }
>>>>
>>>> Modified:
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
>>>> (original)
>>>> +++
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Wed
>>>> Dec 10 02:39:16 2008
>>>> @@ -1306,6 +1306,9 @@
>>>> }
>>>>
>>>> public void preparePager(Map<String, Object> context) {
>>>> +
>>>> + // increment the paginator
>>>> + this.incrementPaginatorNumber(context);
>>>> this.rowCount = 0;
>>>> String lookupName = this.getListName();
>>>> if (UtilValidate.isEmpty(lookupName)) {
>>>> @@ -2185,6 +2188,8 @@
>>>> if (UtilValidate.isEmpty(field)) {
>>>> field = DEFAULT_PAG_INDEX_FIELD;
>>>> }
>>>> + // append the paginator number
>>>> + field = field + "_" + getPaginatorNumber(context);
>>>> return field;
>>>> }
>>>>
>>>> @@ -2199,7 +2204,7 @@
>>>> // try parameters.VIEW_INDEX as that is an old OFBiz
>>>> convention
>>>> Map parameters = (Map) context.get("parameters");
>>>> if (parameters != null) {
>>>> - value = parameters.get("VIEW_INDEX");
>>>> + value = parameters.get("VIEW_INDEX" + "_" +
>>>> getPaginatorNumber(context));
>>>>
>>>> if (value == null) {
>>>> value = parameters.get(field);
>>>> @@ -2224,6 +2229,8 @@
>>>> if (UtilValidate.isEmpty(field)) {
>>>> field = DEFAULT_PAG_SIZE_FIELD;
>>>> }
>>>> + // append the paginator number
>>>> + field = field + "_" + getPaginatorNumber(context);
>>>> return field;
>>>> }
>>>>
>>>> @@ -2238,7 +2245,7 @@
>>>> // try parameters.VIEW_SIZE as that is an old OFBiz
>>>> convention
>>>> Map parameters = (Map) context.get("parameters");
>>>> if (parameters != null) {
>>>> - value = parameters.get("VIEW_SIZE");
>>>> + value = parameters.get("VIEW_SIZE" + "_" +
>>>> getPaginatorNumber(context));
>>>>
>>>> if (value == null) {
>>>> value = parameters.get(field);
>>>>
>>>> Modified:
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
>>>> (original)
>>>> +++
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
>>>> Wed Dec 10 02:39:16 2008
>>>> @@ -2245,6 +2245,7 @@
>>>> }
>>>>
>>>> // get the parametrized pagination index and size fields
>>>> + int paginatorNumber = modelForm.getPaginatorNumber(context);
>>>> String viewIndexParam =
>>>> modelForm.getPaginateIndexField(context);
>>>> String viewSizeParam = modelForm.getPaginateSizeField(context);
>>>>
>>>> @@ -2272,13 +2273,13 @@
>>>> }
>>>>
>>>> // for legacy support, the viewSizeParam is VIEW_SIZE and
>>>> viewIndexParam is VIEW_INDEX when the fields are "viewSize" and "viewIndex"
>>>> - if (viewIndexParam.equals("viewIndex")) viewIndexParam =
>>>> "VIEW_INDEX";
>>>> - if (viewSizeParam.equals("viewSize")) viewSizeParam =
>>>> "VIEW_SIZE";
>>>> + if (viewIndexParam.equals("viewIndex" + "_" + paginatorNumber))
>>>> viewIndexParam = "VIEW_INDEX" + "_" + paginatorNumber;
>>>> + if (viewSizeParam.equals("viewSize" + "_" + paginatorNumber))
>>>> viewSizeParam = "VIEW_SIZE" + "_" + paginatorNumber;
>>>>
>>>> String str = (String) context.get("_QBESTRING_");
>>>>
>>>> // strip legacy viewIndex/viewSize params from the query string
>>>> - String queryString =
>>>> UtilHttp.stripViewParamsFromQueryString(str);
>>>> + String queryString =
>>>> UtilHttp.stripViewParamsFromQueryString(str, "" + paginatorNumber);
>>>>
>>>> // strip parametrized index/size params from the query string
>>>> HashSet<String> paramNames = new HashSet<String>();
>>>>
>>>> Modified:
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
>>>> (original)
>>>> +++
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
>>>> Wed Dec 10 02:39:16 2008
>>>> @@ -246,6 +246,7 @@
>>>> }
>>>>
>>>> // get the parametrized pagination index and size fields
>>>> + int paginatoNumber = modelForm.getPaginatorNumber(context);
>>>> String viewIndexParam =
>>>> modelForm.getPaginateIndexField(context);
>>>> String viewSizeParam = modelForm.getPaginateSizeField(context);
>>>>
>>>> @@ -271,8 +272,8 @@
>>>> }
>>>>
>>>> // for legacy support, the viewSizeParam is VIEW_SIZE and
>>>> viewIndexParam is VIEW_INDEX when the fields are "viewSize" and "viewIndex"
>>>> - if (viewIndexParam.equals("viewIndex")) viewIndexParam =
>>>> "VIEW_INDEX";
>>>> - if (viewSizeParam.equals("viewSize")) viewSizeParam =
>>>> "VIEW_SIZE";
>>>> + if (viewIndexParam.equals("viewIndex" + "_" + paginatoNumber))
>>>> viewIndexParam = "VIEW_INDEX" + "_" + paginatoNumber;
>>>> + if (viewSizeParam.equals("viewSize" + "_" + paginatoNumber))
>>>> viewSizeParam = "VIEW_SIZE" + "_" + paginatoNumber;
>>>>
>>>> ServletContext ctx = (ServletContext)
>>>> request.getAttribute("servletContext");
>>>> RequestHandler rh = (RequestHandler)
>>>> ctx.getAttribute("_REQUEST_HANDLER_");
>>>> @@ -284,7 +285,7 @@
>>>> }
>>>> String queryString = UtilHttp.urlEncodeArgs(inputFields);
>>>> // strip legacy viewIndex/viewSize params from the query string
>>>> - queryString =
>>>> UtilHttp.stripViewParamsFromQueryString(queryString);
>>>> + queryString =
>>>> UtilHttp.stripViewParamsFromQueryString(queryString, "" + paginatoNumber);
>>>> // strip parametrized index/size params from the query string
>>>> HashSet<String> paramNames = new HashSet<String>();
>>>> paramNames.add(viewIndexParam);
>>>>
>>>> Modified:
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=725053&r1=725052&r2=725053&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
>>>> (original)
>>>> +++
>>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
>>>> Wed Dec 10 02:39:16 2008
>>>> @@ -21,6 +21,7 @@
>>>> import java.io.IOException;
>>>> import java.util.ArrayList;
>>>> import java.util.Arrays;
>>>> +import java.util.HashSet;
>>>> import java.util.Iterator;
>>>> import java.util.List;
>>>> import java.util.Locale;
>>>> @@ -33,6 +34,8 @@
>>>>
>>>> import org.ofbiz.base.util.Debug;
>>>> import org.ofbiz.base.util.GeneralException;
>>>> +import org.ofbiz.base.util.UtilGenerics;
>>>> +import org.ofbiz.base.util.UtilHttp;
>>>> import org.ofbiz.base.util.UtilMisc;
>>>> import org.ofbiz.base.util.UtilProperties;
>>>> import org.ofbiz.base.util.UtilValidate;
>>>> @@ -114,6 +117,8 @@
>>>> Debug.logError("Object not list or map type", module);
>>>> return;
>>>> }
>>>> + this.incrementPaginatorNumber(context);
>>>> + int startPageNumber = this.getPaginatorNumber(context);
>>>> getListLimits(context, theList);
>>>> int rowCount = 0;
>>>> Iterator iter = theList.iterator();
>>>> @@ -140,19 +145,31 @@
>>>> section.renderWidgetString(writer, contextMs,
>>>> screenStringRenderer);
>>>> }
>>>> }
>>>> +
>>>> if ((itemIndex + 1) < highIndex) {
>>>> setHighIndex(itemIndex + 1);
>>>> }
>>>> setActualPageSize(highIndex - lowIndex);
>>>> if (paginate) {
>>>> try {
>>>> + Integer lastPageNumber = null;
>>>> + Map<String, Object> globalCtx =
>>>> UtilGenerics.checkMap(context.get("globalContext"));
>>>> + if (globalCtx != null) {
>>>> + lastPageNumber =
>>>> (Integer)globalCtx.get("PAGINATOR_NUMBER");
>>>> + globalCtx.put("PAGINATOR_NUMBER",
>>>> Integer.valueOf(startPageNumber));
>>>> + }
>>>> +
>>>> renderNextPrev(writer, context);
>>>> +
>>>> + if (globalCtx != null) {
>>>> + globalCtx.put("PAGINATOR_NUMBER", lastPageNumber);
>>>> + }
>>>> } catch(IOException e) {
>>>> Debug.logError(e, module);
>>>> throw new RuntimeException(e.getMessage());
>>>> }
>>>> }
>>>> -
>>>> +
>>>> }
>>>> /*
>>>> * @return
>>>> @@ -230,8 +247,10 @@
>>>> if (paginate) {
>>>> try {
>>>> Map params = (Map)context.get("parameters");
>>>> - String viewIndexString = (String)
>>>> params.get("VIEW_INDEX");
>>>> + String viewIndexString = (String)
>>>> params.get("VIEW_INDEX" + "_" + getPaginatorNumber(context));
>>>> + String viewSizeString = (String) params.get("VIEW_SIZE"
>>>> + "_" + getPaginatorNumber(context));
>>>> viewIndex = Integer.parseInt(viewIndexString);
>>>> + viewSize = Integer.parseInt(viewSizeString);
>>>> } catch (Exception e) {
>>>> try {
>>>> viewIndex = ((Integer)
>>>> context.get("viewIndex")).intValue();
>>>> @@ -240,16 +259,9 @@
>>>> }
>>>> }
>>>> context.put("viewIndex", Integer.valueOf(this.viewIndex));
>>>> -
>>>> - try {
>>>> - viewSize = ((Integer)
>>>> context.get("viewSize")).intValue();
>>>> - } catch (Exception e) {
>>>> - //viewSize = DEFAULT_PAGE_SIZE;
>>>> - }
>>>> +
>>>> lowIndex = viewIndex * viewSize;
>>>> highIndex = (viewIndex + 1) * viewSize;
>>>> -
>>>> -
>>>> } else {
>>>> viewIndex = 0;
>>>> viewSize = DEFAULT_PAGE_SIZE;
>>>> @@ -265,6 +277,19 @@
>>>> targetService = "${targetService}";
>>>> }
>>>>
>>>> + Map<String, Object> inputFields =
>>>> UtilGenerics.checkMap(context.get("requestParameters"));
>>>> + Map<String, Object> queryStringMap =
>>>> UtilGenerics.toMap(context.get("queryStringMap"));
>>>> + if (UtilValidate.isNotEmpty(queryStringMap)) {
>>>> + inputFields.putAll(queryStringMap);
>>>> + }
>>>> +
>>>> + String queryString = UtilHttp.urlEncodeArgs(inputFields);
>>>> + int paginatorNumber = this.getPaginatorNumber(context);
>>>> + queryString =
>>>> UtilHttp.stripViewParamsFromQueryString(queryString, "" + paginatorNumber);
>>>> +
>>>> +
>>>> +
>>>> +
>>>> if (UtilValidate.isEmpty(targetService)) {
>>>> Debug.logWarning("TargetService is empty.", module);
>>>> return;
>>>> @@ -331,7 +356,10 @@
>>>> if (linkText.indexOf("?") < 0) linkText.append("?");
>>>> else linkText.append("&");
>>>> //if (queryString != null && !queryString.equals("null"))
>>>> linkText += queryString + "&";
>>>> -
>>>> linkText.append("VIEW_SIZE=").append(viewSize).append("&VIEW_INDEX=").append(viewIndex
>>>> - 1).append("\"");
>>>> + if (UtilValidate.isNotEmpty(queryString)) {
>>>> + linkText.append(queryString).append("&");
>>>> + }
>>>> + linkText.append("VIEW_SIZE_"+ paginatorNumber +
>>>> "=").append(viewSize).append("&VIEW_INDEX_" + paginatorNumber +
>>>> "=").append(viewIndex - 1).append("\"");
>>>>
>>>> // make the link
>>>> writer.append(rh.makeLink(request, response,
>>>> linkText.toString(), false, false, false));
>>>> @@ -349,7 +377,10 @@
>>>> StringBuilder linkText = new StringBuilder(targetService);
>>>> if (linkText.indexOf("?") < 0) linkText.append("?");
>>>> else linkText.append("&");
>>>> -
>>>> linkText.append("VIEW_SIZE=").append(viewSize).append("&VIEW_INDEX=").append(viewIndex
>>>> + 1).append("\"");
>>>> + if (UtilValidate.isNotEmpty(queryString)) {
>>>> + linkText.append(queryString).append("&");
>>>> + }
>>>> + linkText.append("VIEW_SIZE_" + paginatorNumber +
>>>> "=").append(viewSize).append("&VIEW_INDEX_" + paginatorNumber +
>>>> "=").append(viewIndex + 1).append("\"");
>>>>
>>>> // make the link
>>>> writer.append(rh.makeLink(request, response,
>>>> linkText.toString(), false, false, false));
>>>>
>>>>
>>> --
>>> Antwebsystems.com: Quality OFBiz services for competitive prices
>>>
>>>
>>
>
>
Re: BLOCKER: svn commit: r725053 - in /ofbiz/trunk: applications/order/entitydef/ applications/party/webapp/partymgr/WEB-INF/ applications/party/webapp/partymgr/party/ applications/party/widget/partymgr/ framework/base/src/org/ofbiz/base/util/ framew
Posted by Jacques Le Roux <ja...@les7arts.com>.
Thanks Bruno,
This will certainly help
Jacques
From: "Bruno Busco" <br...@gmail.com>
> Hans,
> I have found the following that might help:
>
> If I change the FindInvoice screen like this:
>
> <screen name="FindInvoices">
> <section>
> <actions>
> <set field="headerItem" value="invoices"/>
> <set field="titleProperty" value="PageTitleFindInvoice"/>
> <set field="tabButtonItem" value="invoices"/>
> <set field="viewIndex"
> from-field="parameters.VIEW_INDEX" type="Integer"/>
> <set field="viewSize"
> from-field="parameters.VIEW_SIZE" type="Integer" default-value="30"/>
> </actions>
> <widgets>
> <decorator-screen name="CommonInvoiceDecorator"
> location="${parameters.invoiceDecoratorLocation}">
> <decorator-section name="body">
> <include-menu name="InvoiceSubTabBar"
> location="component://accounting/widget/Menus.xml"/>
> <screenlet title="${uiLabelMap.PageTitleFindInvoice}">
> <include-form name="FindInvoices"
> location="component://accounting/webapp/accounting/invoice/InvoiceForms.xml"/>
> </screenlet>
> <!--
> <screenlet
> title="${uiLabelMap.PageTitleListInvoices}"
> navigation-form-name="ListInvoices">
> -->
> <screenlet title="${uiLabelMap.PageTitleListInvoices}">
> <include-form name="ListInvoices"
> location="component://accounting/webapp/accounting/invoice/InvoiceForms.xml"/>
> </screenlet>
> </decorator-section>
> </decorator-screen>
> </widgets>
> </section>
> </screen>
>
> Pagination works well.
> If I look in the debug.log file I find the following running the original code:
> 2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [
> ModelForm.java:1341:INFO ] preparePager: low - high = 1 - 2
> 2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [
> ModelForm.java:1359:INFO ] preparePager: Found rows = 2
> 2008-12-24 10:49:18,859 (http-0.0.0.0-8443-1) [
> ModelForm.java:1341:INFO ] preparePager: low - high = 0 - 1
> 2008-12-24 10:49:18,875 (http-0.0.0.0-8443-1) [
> ModelForm.java:1359:INFO ] preparePager: Found rows = 1
>
> and this with the code with my change:
> 2008-12-24 10:54:27,406 (http-0.0.0.0-8443-1) [
> ModelForm.java:1341:INFO ] preparePager: low - high = 1 - 2
> 2008-12-24 10:54:27,406 (http-0.0.0.0-8443-1) [
> ModelForm.java:1359:INFO ] preparePager: Found rows = 2
>
> So it seems to me that the multi-pagination does not work when we use
> the "navigation-form-name" attribute in a screenlet widget.
> In this case it seems that the pagination calculation runs twice and
> it fails to get the correct pagination index.
>
> So a quick fix is simply to not use the "navigation-form-name"
> attribute in the screenlet.
> May be this will help who better knows how the multi-pagination system
> works to fix it.
>
> -Bruno
>
>
> 2008/12/24 Hans Bakker <ma...@antwebsystems.com>:
>> This commit (or later) causes pagination to stop working...
>> The page numbers change but the listing does not.....
>>
>> How to test? set the pagination in
>> framework/widget/config/widget.properties to "1"
>>
>> In the latest svn go to invoice click 'find' and try to paginate....the
>> invoiceId shown will not change. (although there are 3)
>>
>> then go back to r725022, remove the 2 statements containing
>> viewindex/viewsize from the findInvoiceScreen in invoicescreens.xml
>>
>> and see the problem have been solved.....
>>
>> Bruno or Jaques or somebody else...please have a look, i could not find
>> it that quickly....
>>
>> Regards,
>> Hans
>>
>>
>> On Wed, 2008-12-10 at 10:39 +0000, jleroux@apache.org wrote:
>>> Author: jleroux
>>> Date: Wed Dec 10 02:39:16 2008
>>> New Revision: 725053
>>>
>>> URL: http://svn.apache.org/viewvc?rev=725053&view=rev
>>> Log:
>>> A slightly modified patch from Bilgin Ibryam "Allow multi-pagination in a page"
>>> (https://issues.apache.org/jira/browse/OFBIZ-1935) - OFBIZ-1935
>>>
>>> Modified:
>>> ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
>>> ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml
>>> ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
>>> ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml
>>> ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java
>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java
>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
>>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
>>>
>>> Modified: ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml (original)
>>> +++ ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml Wed Dec 10 02:39:16 2008
>>> @@ -1348,6 +1348,7 @@
>>> <member-entity entity-alias="SI" entity-name="StatusItem"/>
>>> <alias-all entity-alias="QWE"/>
>>> <alias-all entity-alias="WE"/>
>>> + <!--alias name="statusId" field="statusId" entity-alias="SI"/-->
>>> <alias name="statusItemDescription" field="description" entity-alias="SI"/>
>>> <view-link entity-alias="QWE" rel-entity-alias="WE">
>>> <key-map field-name="workEffortId"/>
>>> @@ -1361,6 +1362,9 @@
>>> <relation type="one-nofk" rel-entity-name="Quote">
>>> <key-map field-name="quoteId"/>
>>> </relation>
>>> + <relation type="one-nofk" rel-entity-name="StatusItem">
>>> + <key-map field-name="statusId"/>
>>> + </relation>
>>> </view-entity>
>>> <view-entity entity-name="RequirementAndRole"
>>> package-name="org.ofbiz.order.request"
>>>
>>> Modified: ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml (original)
>>> +++ ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/controller.xml Wed Dec 10 02:39:16 2008
>>> @@ -396,13 +396,13 @@
>>> <request-map uri="createPartyAttribute">
>>> <security https="true" auth="true"/>
>>> <event type="service" path="" invoke="createPartyAttribute"/>
>>> - <response name="success" type="view" value="EditPartyAttribute"/>
>>> + <response name="success" type="view" value="viewprofile"/>
>>> <response name="error" type="view" value="EditPartyAttribute"/>
>>> </request-map>
>>> <request-map uri="updatePartyAttribute">
>>> <security https="true" auth="true"/>
>>> <event type="service" path="" invoke="updatePartyAttribute"/>
>>> - <response name="success" type="view" value="EditPartyAttribute"/>
>>> + <response name="success" type="view" value="viewprofile"/>
>>> <response name="error" type="view" value="EditPartyAttribute"/>
>>> </request-map>
>>> <request-map uri="removePartyAttribute">
>>>
>>> Modified: ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml (original)
>>> +++ ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml Wed Dec 10 02:39:16 2008
>>> @@ -612,7 +612,8 @@
>>> </form>
>>>
>>> <form name="ListCarrierAccounts" type="list" target="updatePartyCarrierAccount"
>>> - odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
>>> + odd-row-style="alternate-row" default-table-style="basic-table hover-bar"
>>> + paginate="true" view-size="3" paginate-target="viewprofile" paginate-target-anchor="ListCarrierAccounts">
>>> <actions>
>>> <entity-condition entity-name="PartyCarrierAccount" list-name="carrierAccounts" filter-by-date="true">
>>> <condition-expr field-name="partyId" env-name="parameters.partyId"></condition-expr>
>>>
>>> Modified: ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml (original)
>>> +++ ofbiz/trunk/applications/party/widget/partymgr/ProfileScreens.xml Wed Dec 10 02:39:16 2008
>>> @@ -270,7 +270,7 @@
>>> <label style="h3" text="${uiLabelMap.PageTitleFinancialAccountSummary}"/>
>>> </container>
>>> <container style="screenlet-body">
>>> - <iterate-section entry-name="ownedFinAccount" paginate="true"
>>> paginate-target="viewprofile?partyId=${parameters.partyId}" view-size="3" list-name="ownedFinAccountList">
>>> + <iterate-section entry-name="ownedFinAccount" paginate="true" paginate-target="viewprofile"
>>> view-size="3" list-name="ownedFinAccountList">
>>> <section>
>>> <actions>
>>> <entity-condition entity-name="FinAccountTrans"
>>> list-name="ownedFinAccountTransList">
>>>
>>> Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java (original)
>>> +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilHttp.java Wed Dec 10 02:39:16 2008
>>> @@ -919,11 +919,18 @@
>>> }
>>>
>>> public static String stripViewParamsFromQueryString(String queryString) {
>>> + return stripViewParamsFromQueryString(queryString, null);
>>> + }
>>> +
>>> + public static String stripViewParamsFromQueryString(String queryString, String paginatorNumber) {
>>> Set<String> paramNames = new HashSet<String>();
>>> - paramNames.add("VIEW_INDEX");
>>> - paramNames.add("VIEW_SIZE");
>>> - paramNames.add("viewIndex");
>>> - paramNames.add("viewSize");
>>> + if (UtilValidate.isNotEmpty(paginatorNumber)) {
>>> + paginatorNumber = "_" + paginatorNumber;
>>> + }
>>> + paramNames.add("VIEW_INDEX" + paginatorNumber);
>>> + paramNames.add("VIEW_SIZE" + paginatorNumber);
>>> + paramNames.add("viewIndex" + paginatorNumber);
>>> + paramNames.add("viewSize" + paginatorNumber);
>>> return stripNamedParamsFromQueryString(queryString, paramNames);
>>> }
>>>
>>>
>>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java Wed Dec 10 02:39:16 2008
>>> @@ -112,4 +112,27 @@
>>> }
>>> return result;
>>> }
>>> +
>>> + public int getPaginatorNumber(Map<String, Object> context) {
>>> + int paginator_number = 0;
>>> + Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
>>> + if (globalCtx != null) {
>>> + Integer paginateNumberInt= (Integer)globalCtx.get("PAGINATOR_NUMBER");
>>> + if (paginateNumberInt == null) {
>>> + paginateNumberInt = Integer.valueOf(0);
>>> + globalCtx.put("PAGINATOR_NUMBER", paginateNumberInt);
>>> + }
>>> + paginator_number = paginateNumberInt.intValue();
>>> + }
>>> + return paginator_number;
>>> + }
>>> +
>>> + public void incrementPaginatorNumber(Map<String, Object> context) {
>>> + Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
>>> + if (globalCtx != null) {
>>> + Integer paginateNumberInt = Integer.valueOf(getPaginatorNumber(context) + 1);
>>> + globalCtx.put("PAGINATOR_NUMBER", paginateNumberInt);
>>> + }
>>> + }
>>> +
>>> }
>>>
>>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Wed Dec 10 02:39:16 2008
>>> @@ -1306,6 +1306,9 @@
>>> }
>>>
>>> public void preparePager(Map<String, Object> context) {
>>> +
>>> + // increment the paginator
>>> + this.incrementPaginatorNumber(context);
>>> this.rowCount = 0;
>>> String lookupName = this.getListName();
>>> if (UtilValidate.isEmpty(lookupName)) {
>>> @@ -2185,6 +2188,8 @@
>>> if (UtilValidate.isEmpty(field)) {
>>> field = DEFAULT_PAG_INDEX_FIELD;
>>> }
>>> + // append the paginator number
>>> + field = field + "_" + getPaginatorNumber(context);
>>> return field;
>>> }
>>>
>>> @@ -2199,7 +2204,7 @@
>>> // try parameters.VIEW_INDEX as that is an old OFBiz convention
>>> Map parameters = (Map) context.get("parameters");
>>> if (parameters != null) {
>>> - value = parameters.get("VIEW_INDEX");
>>> + value = parameters.get("VIEW_INDEX" + "_" + getPaginatorNumber(context));
>>>
>>> if (value == null) {
>>> value = parameters.get(field);
>>> @@ -2224,6 +2229,8 @@
>>> if (UtilValidate.isEmpty(field)) {
>>> field = DEFAULT_PAG_SIZE_FIELD;
>>> }
>>> + // append the paginator number
>>> + field = field + "_" + getPaginatorNumber(context);
>>> return field;
>>> }
>>>
>>> @@ -2238,7 +2245,7 @@
>>> // try parameters.VIEW_SIZE as that is an old OFBiz convention
>>> Map parameters = (Map) context.get("parameters");
>>> if (parameters != null) {
>>> - value = parameters.get("VIEW_SIZE");
>>> + value = parameters.get("VIEW_SIZE" + "_" + getPaginatorNumber(context));
>>>
>>> if (value == null) {
>>> value = parameters.get(field);
>>>
>>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java Wed Dec 10 02:39:16 2008
>>> @@ -2245,6 +2245,7 @@
>>> }
>>>
>>> // get the parametrized pagination index and size fields
>>> + int paginatorNumber = modelForm.getPaginatorNumber(context);
>>> String viewIndexParam = modelForm.getPaginateIndexField(context);
>>> String viewSizeParam = modelForm.getPaginateSizeField(context);
>>>
>>> @@ -2272,13 +2273,13 @@
>>> }
>>>
>>> // for legacy support, the viewSizeParam is VIEW_SIZE and viewIndexParam is VIEW_INDEX when the fields are "viewSize"
>>> and "viewIndex"
>>> - if (viewIndexParam.equals("viewIndex")) viewIndexParam = "VIEW_INDEX";
>>> - if (viewSizeParam.equals("viewSize")) viewSizeParam = "VIEW_SIZE";
>>> + if (viewIndexParam.equals("viewIndex" + "_" + paginatorNumber)) viewIndexParam = "VIEW_INDEX" + "_" + paginatorNumber;
>>> + if (viewSizeParam.equals("viewSize" + "_" + paginatorNumber)) viewSizeParam = "VIEW_SIZE" + "_" + paginatorNumber;
>>>
>>> String str = (String) context.get("_QBESTRING_");
>>>
>>> // strip legacy viewIndex/viewSize params from the query string
>>> - String queryString = UtilHttp.stripViewParamsFromQueryString(str);
>>> + String queryString = UtilHttp.stripViewParamsFromQueryString(str, "" + paginatorNumber);
>>>
>>> // strip parametrized index/size params from the query string
>>> HashSet<String> paramNames = new HashSet<String>();
>>>
>>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java Wed Dec 10 02:39:16 2008
>>> @@ -246,6 +246,7 @@
>>> }
>>>
>>> // get the parametrized pagination index and size fields
>>> + int paginatoNumber = modelForm.getPaginatorNumber(context);
>>> String viewIndexParam = modelForm.getPaginateIndexField(context);
>>> String viewSizeParam = modelForm.getPaginateSizeField(context);
>>>
>>> @@ -271,8 +272,8 @@
>>> }
>>>
>>> // for legacy support, the viewSizeParam is VIEW_SIZE and viewIndexParam is VIEW_INDEX when the fields are "viewSize"
>>> and "viewIndex"
>>> - if (viewIndexParam.equals("viewIndex")) viewIndexParam = "VIEW_INDEX";
>>> - if (viewSizeParam.equals("viewSize")) viewSizeParam = "VIEW_SIZE";
>>> + if (viewIndexParam.equals("viewIndex" + "_" + paginatoNumber)) viewIndexParam = "VIEW_INDEX" + "_" + paginatoNumber;
>>> + if (viewSizeParam.equals("viewSize" + "_" + paginatoNumber)) viewSizeParam = "VIEW_SIZE" + "_" + paginatoNumber;
>>>
>>> ServletContext ctx = (ServletContext) request.getAttribute("servletContext");
>>> RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_");
>>> @@ -284,7 +285,7 @@
>>> }
>>> String queryString = UtilHttp.urlEncodeArgs(inputFields);
>>> // strip legacy viewIndex/viewSize params from the query string
>>> - queryString = UtilHttp.stripViewParamsFromQueryString(queryString);
>>> + queryString = UtilHttp.stripViewParamsFromQueryString(queryString, "" + paginatoNumber);
>>> // strip parametrized index/size params from the query string
>>> HashSet<String> paramNames = new HashSet<String>();
>>> paramNames.add(viewIndexParam);
>>>
>>> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
>>> URL:
>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=725053&r1=725052&r2=725053&view=diff
>>> ==============================================================================
>>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java (original)
>>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java Wed Dec 10 02:39:16 2008
>>> @@ -21,6 +21,7 @@
>>> import java.io.IOException;
>>> import java.util.ArrayList;
>>> import java.util.Arrays;
>>> +import java.util.HashSet;
>>> import java.util.Iterator;
>>> import java.util.List;
>>> import java.util.Locale;
>>> @@ -33,6 +34,8 @@
>>>
>>> import org.ofbiz.base.util.Debug;
>>> import org.ofbiz.base.util.GeneralException;
>>> +import org.ofbiz.base.util.UtilGenerics;
>>> +import org.ofbiz.base.util.UtilHttp;
>>> import org.ofbiz.base.util.UtilMisc;
>>> import org.ofbiz.base.util.UtilProperties;
>>> import org.ofbiz.base.util.UtilValidate;
>>> @@ -114,6 +117,8 @@
>>> Debug.logError("Object not list or map type", module);
>>> return;
>>> }
>>> + this.incrementPaginatorNumber(context);
>>> + int startPageNumber = this.getPaginatorNumber(context);
>>> getListLimits(context, theList);
>>> int rowCount = 0;
>>> Iterator iter = theList.iterator();
>>> @@ -140,19 +145,31 @@
>>> section.renderWidgetString(writer, contextMs, screenStringRenderer);
>>> }
>>> }
>>> +
>>> if ((itemIndex + 1) < highIndex) {
>>> setHighIndex(itemIndex + 1);
>>> }
>>> setActualPageSize(highIndex - lowIndex);
>>> if (paginate) {
>>> try {
>>> + Integer lastPageNumber = null;
>>> + Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
>>> + if (globalCtx != null) {
>>> + lastPageNumber = (Integer)globalCtx.get("PAGINATOR_NUMBER");
>>> + globalCtx.put("PAGINATOR_NUMBER", Integer.valueOf(startPageNumber));
>>> + }
>>> +
>>> renderNextPrev(writer, context);
>>> +
>>> + if (globalCtx != null) {
>>> + globalCtx.put("PAGINATOR_NUMBER", lastPageNumber);
>>> + }
>>> } catch(IOException e) {
>>> Debug.logError(e, module);
>>> throw new RuntimeException(e.getMessage());
>>> }
>>> }
>>> -
>>> +
>>> }
>>> /*
>>> * @return
>>> @@ -230,8 +247,10 @@
>>> if (paginate) {
>>> try {
>>> Map params = (Map)context.get("parameters");
>>> - String viewIndexString = (String) params.get("VIEW_INDEX");
>>> + String viewIndexString = (String) params.get("VIEW_INDEX" + "_" + getPaginatorNumber(context));
>>> + String viewSizeString = (String) params.get("VIEW_SIZE" + "_" + getPaginatorNumber(context));
>>> viewIndex = Integer.parseInt(viewIndexString);
>>> + viewSize = Integer.parseInt(viewSizeString);
>>> } catch (Exception e) {
>>> try {
>>> viewIndex = ((Integer) context.get("viewIndex")).intValue();
>>> @@ -240,16 +259,9 @@
>>> }
>>> }
>>> context.put("viewIndex", Integer.valueOf(this.viewIndex));
>>> -
>>> - try {
>>> - viewSize = ((Integer) context.get("viewSize")).intValue();
>>> - } catch (Exception e) {
>>> - //viewSize = DEFAULT_PAGE_SIZE;
>>> - }
>>> +
>>> lowIndex = viewIndex * viewSize;
>>> highIndex = (viewIndex + 1) * viewSize;
>>> -
>>> -
>>> } else {
>>> viewIndex = 0;
>>> viewSize = DEFAULT_PAGE_SIZE;
>>> @@ -265,6 +277,19 @@
>>> targetService = "${targetService}";
>>> }
>>>
>>> + Map<String, Object> inputFields = UtilGenerics.checkMap(context.get("requestParameters"));
>>> + Map<String, Object> queryStringMap = UtilGenerics.toMap(context.get("queryStringMap"));
>>> + if (UtilValidate.isNotEmpty(queryStringMap)) {
>>> + inputFields.putAll(queryStringMap);
>>> + }
>>> +
>>> + String queryString = UtilHttp.urlEncodeArgs(inputFields);
>>> + int paginatorNumber = this.getPaginatorNumber(context);
>>> + queryString = UtilHttp.stripViewParamsFromQueryString(queryString, "" + paginatorNumber);
>>> +
>>> +
>>> +
>>> +
>>> if (UtilValidate.isEmpty(targetService)) {
>>> Debug.logWarning("TargetService is empty.", module);
>>> return;
>>> @@ -331,7 +356,10 @@
>>> if (linkText.indexOf("?") < 0) linkText.append("?");
>>> else linkText.append("&");
>>> //if (queryString != null && !queryString.equals("null")) linkText += queryString + "&";
>>> - linkText.append("VIEW_SIZE=").append(viewSize).append("&VIEW_INDEX=").append(viewIndex - 1).append("\"");
>>> + if (UtilValidate.isNotEmpty(queryString)) {
>>> + linkText.append(queryString).append("&");
>>> + }
>>> + linkText.append("VIEW_SIZE_"+ paginatorNumber + "=").append(viewSize).append("&VIEW_INDEX_" + paginatorNumber +
>>> "=").append(viewIndex - 1).append("\"");
>>>
>>> // make the link
>>> writer.append(rh.makeLink(request, response, linkText.toString(), false, false, false));
>>> @@ -349,7 +377,10 @@
>>> StringBuilder linkText = new StringBuilder(targetService);
>>> if (linkText.indexOf("?") < 0) linkText.append("?");
>>> else linkText.append("&");
>>> - linkText.append("VIEW_SIZE=").append(viewSize).append("&VIEW_INDEX=").append(viewIndex + 1).append("\"");
>>> + if (UtilValidate.isNotEmpty(queryString)) {
>>> + linkText.append(queryString).append("&");
>>> + }
>>> + linkText.append("VIEW_SIZE_" + paginatorNumber + "=").append(viewSize).append("&VIEW_INDEX_" + paginatorNumber
>>> + "=").append(viewIndex + 1).append("\"");
>>>
>>> // make the link
>>> writer.append(rh.makeLink(request, response, linkText.toString(), false, false, false));
>>>
>>>
>> --
>> Antwebsystems.com: Quality OFBiz services for competitive prices
>>
>>
>