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("&amp;");
>>              //if (queryString != null && !queryString.equals("null")) linkText += queryString + "&";
>> -            linkText.append("VIEW_SIZE=").append(viewSize).append("&amp;VIEW_INDEX=").append(viewIndex - 1).append("\"");
>> +            if (UtilValidate.isNotEmpty(queryString)) {
>> +                linkText.append(queryString).append("&amp;");
>> +            }
>> +            linkText.append("VIEW_SIZE_"+ paginatorNumber + "=").append(viewSize).append("&amp;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("&amp;");
>> -            linkText.append("VIEW_SIZE=").append(viewSize).append("&amp;VIEW_INDEX=").append(viewIndex + 1).append("\"");
>> +            if (UtilValidate.isNotEmpty(queryString)) {
>> +                linkText.append(queryString).append("&amp;");
>> +            }
>> +            linkText.append("VIEW_SIZE_" + paginatorNumber + "=").append(viewSize).append("&amp;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("&amp;");
>>>>             //if (queryString != null && !queryString.equals("null"))
>>>> linkText += queryString + "&";
>>>> -
>>>>  linkText.append("VIEW_SIZE=").append(viewSize).append("&amp;VIEW_INDEX=").append(viewIndex
>>>> - 1).append("\"");
>>>> +            if (UtilValidate.isNotEmpty(queryString)) {
>>>> +                linkText.append(queryString).append("&amp;");
>>>> +            }
>>>> +            linkText.append("VIEW_SIZE_"+ paginatorNumber +
>>>> "=").append(viewSize).append("&amp;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("&amp;");
>>>> -
>>>>  linkText.append("VIEW_SIZE=").append(viewSize).append("&amp;VIEW_INDEX=").append(viewIndex
>>>> + 1).append("\"");
>>>> +            if (UtilValidate.isNotEmpty(queryString)) {
>>>> +                linkText.append(queryString).append("&amp;");
>>>> +            }
>>>> +            linkText.append("VIEW_SIZE_" + paginatorNumber +
>>>> "=").append(viewSize).append("&amp;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("&amp;");
>>>              //if (queryString != null && !queryString.equals("null")) linkText += queryString + "&";
>>> -            linkText.append("VIEW_SIZE=").append(viewSize).append("&amp;VIEW_INDEX=").append(viewIndex - 1).append("\"");
>>> +            if (UtilValidate.isNotEmpty(queryString)) {
>>> +                linkText.append(queryString).append("&amp;");
>>> +            }
>>> +            linkText.append("VIEW_SIZE_"+ paginatorNumber + "=").append(viewSize).append("&amp;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("&amp;");
>>> -            linkText.append("VIEW_SIZE=").append(viewSize).append("&amp;VIEW_INDEX=").append(viewIndex + 1).append("\"");
>>> +            if (UtilValidate.isNotEmpty(queryString)) {
>>> +                linkText.append(queryString).append("&amp;");
>>> +            }
>>> +            linkText.append("VIEW_SIZE_" + paginatorNumber + "=").append(viewSize).append("&amp;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
>>
>>
>