diff --git a/ccm-sci-member-navigation/src/com/arsdigita/cms/scimember/navigation/SciMemberList.java b/ccm-sci-member-navigation/src/com/arsdigita/cms/scimember/navigation/SciMemberList.java index 0591020c6..31351d26a 100644 --- a/ccm-sci-member-navigation/src/com/arsdigita/cms/scimember/navigation/SciMemberList.java +++ b/ccm-sci-member-navigation/src/com/arsdigita/cms/scimember/navigation/SciMemberList.java @@ -93,11 +93,13 @@ public class SciMemberList extends AbstractComponent { final StringBuffer whereBuffer = new StringBuffer(); final int page; final int offset; + final String surnameFilter; try { // final String surnameFilter = request.getParameter("surname"); - final String surnameFilter = Globalization.decodeParameter(request, - "surname"); +// final String + surnameFilter = Globalization.decodeParameter(request, + "surname"); if (surnameFilter != null && !surnameFilter.trim().isEmpty()) { whereBuffer @@ -161,6 +163,30 @@ public class SciMemberList extends AbstractComponent { paginatorElem.addAttribute("offset", Integer.toString(offset)); paginatorElem.addAttribute("limit", Integer.toString(limit)); + if (page < maxPages) { + final StringBuffer linkBuffer = new StringBuffer("?page="); + linkBuffer.append(page + 1); + if (surnameFilter != null) { + linkBuffer.append("&surnameFilter="); + linkBuffer.append(surnameFilter); + } + + paginatorElem.addAttribute("nextPageLink", + linkBuffer.toString()); + } + + if (page > 1) { + final StringBuffer linkBuffer = new StringBuffer("?page="); + linkBuffer.append(page - 1); + if (surnameFilter != null) { + linkBuffer.append("&surnameFilter="); + linkBuffer.append(surnameFilter); + + } + paginatorElem.addAttribute("prevPageLink", + linkBuffer.toString()); + } + while (mainQueryResult.next()) { generateResultEntry(mainQueryResult, listElem); diff --git a/ccm-sci-project-navigation/src/com/arsdigita/cms/sciproject/navigation/SciProjectList.java b/ccm-sci-project-navigation/src/com/arsdigita/cms/sciproject/navigation/SciProjectList.java index bf3101e1d..86b9817e2 100644 --- a/ccm-sci-project-navigation/src/com/arsdigita/cms/sciproject/navigation/SciProjectList.java +++ b/ccm-sci-project-navigation/src/com/arsdigita/cms/sciproject/navigation/SciProjectList.java @@ -99,22 +99,24 @@ public class SciProjectList extends AbstractComponent { final StringBuffer whereBuffer = new StringBuffer(); final int page; final int offset; + final String titleFilter; + final BigDecimal researchFieldFilter; try { // final String titleFilter = request.getParameter("title"); - final String titleFilter = Globalization.decodeParameter(request, - "title"); - final BigDecimal categoryFilter; - if (request.getParameter("category") == null) { - categoryFilter = null; - } else if (request.getParameter("category").matches("\\d*")) { - categoryFilter - = new BigDecimal(request.getParameter("category")); + titleFilter = Globalization.decodeParameter(request, + "title"); +// final BigDecimal categoryFilter; + if (request.getParameter("researchfield") == null) { + researchFieldFilter = null; + } else if (request.getParameter("researchfield").matches("\\d*")) { + researchFieldFilter + = new BigDecimal(request.getParameter("researchfield")); } else { - categoryFilter = null; + researchFieldFilter = null; } if (titleFilter != null && !titleFilter.trim().isEmpty() - || categoryFilter != null) { + || researchFieldFilter != null) { whereBuffer.append(" AND "); } @@ -127,7 +129,7 @@ public class SciProjectList extends AbstractComponent { .newChildElement("title"); titleFilterElem.setText(titleFilter); } - if (categoryFilter != null) { + if (researchFieldFilter != null) { if (titleFilter != null && !titleFilter.trim().isEmpty()) { whereBuffer.append(" AND "); } @@ -135,8 +137,12 @@ public class SciProjectList extends AbstractComponent { whereBuffer.append("parent_id IN (SELECT object_id " + "FROM cat_object_category_map " + "WHERE category_id = ") - .append(categoryFilter.toString()) + .append(researchFieldFilter.toString()) .append(") "); + + final Element researchFieldFilterElem = filtersElem + .newChildElement("researchfield"); + researchFieldFilterElem.setText(researchFieldFilter.toString()); } final String orderBy @@ -197,6 +203,40 @@ public class SciProjectList extends AbstractComponent { paginatorElem.addAttribute("offset", Integer.toString(offset)); paginatorElem.addAttribute("limit", Integer.toString(limit)); + if (page < maxPages) { + final StringBuffer linkBuffer = new StringBuffer("?page="); + linkBuffer.append(page + 1); + if (titleFilter != null) { + linkBuffer + .append("&title=") + .append(titleFilter); + } + if (researchFieldFilter != null) { + linkBuffer + .append("researchfield=") + .append(researchFieldFilter.toString()); + } + paginatorElem + .addAttribute("nextPageLink", linkBuffer.toString()); + } + + if (page > 1) { + final StringBuffer linkBuffer = new StringBuffer("?page="); + linkBuffer.append(page - 1); + if (titleFilter != null) { + linkBuffer + .append("&title=") + .append(titleFilter); + } + if (researchFieldFilter != null) { + linkBuffer + .append("researchfield=") + .append(researchFieldFilter.toString()); + } + paginatorElem + .addAttribute("prevPageLink", linkBuffer.toString()); + } + while (mainQueryResult.next()) { generateResultEntry(mainQueryResult, listElem); diff --git a/ccm-sci-publications-navigation/src/com/arsdigita/cms/scipublications/navigation/PublicationList.java b/ccm-sci-publications-navigation/src/com/arsdigita/cms/scipublications/navigation/PublicationList.java index 3e2b5f6fc..0eb0604d1 100644 --- a/ccm-sci-publications-navigation/src/com/arsdigita/cms/scipublications/navigation/PublicationList.java +++ b/ccm-sci-publications-navigation/src/com/arsdigita/cms/scipublications/navigation/PublicationList.java @@ -299,11 +299,16 @@ public class PublicationList extends AbstractComponent { final StringBuffer whereBuffer = new StringBuffer(); final int page; final int offset; + final String titleFilter; + final Integer yearFilter; + final String authorsFilter; + final String orderByParam; try { - final String titleFilter = Globalization.decodeParameter(request, - "title"); +// final String + titleFilter = Globalization.decodeParameter(request, + "title"); // final String titleFilter = request.getParameter("title"); - final Integer yearFilter; +// final Integer yearFilter; if (request.getParameter("yearOfPublication") == null) { yearFilter = null; } else if (request.getParameter("yearOfPublication").matches("\\d*")) { @@ -312,7 +317,8 @@ public class PublicationList extends AbstractComponent { } else { yearFilter = null; } - final String authorsFilter = request.getParameter("authorsStr"); +// final String + authorsFilter = request.getParameter("authorsStr"); if ((titleFilter != null && !titleFilter.trim().isEmpty()) || yearFilter != null || (authorsFilter != null && !authorsFilter.trim().isEmpty())) { @@ -351,7 +357,7 @@ public class PublicationList extends AbstractComponent { authorsFilterElem.setText(authorsFilter); } - final String orderByParam; +// final String orderByParam if (request.getParameter("sort") == null) { orderByParam = "yearDesc"; } else { @@ -457,6 +463,62 @@ public class PublicationList extends AbstractComponent { paginatorElem.addAttribute("offset", Integer.toString(offset)); paginatorElem.addAttribute("limit", Integer.toString(limit)); + if (page < maxPages) { + final StringBuffer nextPageLinkBuffer = new StringBuffer( + "?page="); + nextPageLinkBuffer.append(page + 1); + if (authorsFilter != null) { + nextPageLinkBuffer + .append("&authorsStr=") + .append(authorsFilter); + } + if (yearFilter != null) { + nextPageLinkBuffer + .append("&yearOfPublication=") + .append(yearFilter); + } + if (titleFilter != null) { + nextPageLinkBuffer + .append("&title=") + .append(titleFilter); + } + if (orderByParam != null) { + nextPageLinkBuffer + .append("&sort=") + .append(orderByParam); + } + paginatorElem.addAttribute("nextPageLink", + nextPageLinkBuffer.toString()); + } + + if (page > 1) { + final StringBuffer prevPageLinkBuffer = new StringBuffer( + "?page="); + prevPageLinkBuffer.append(page - 1); + if (authorsFilter != null) { + prevPageLinkBuffer + .append("&authorsStr=") + .append(authorsFilter); + } + if (yearFilter != null) { + prevPageLinkBuffer + .append("&yearOfPublication=") + .append(yearFilter); + } + if (titleFilter != null) { + prevPageLinkBuffer + .append("&title=") + .append(titleFilter); + } + if (orderByParam != null) { + prevPageLinkBuffer + .append("&sort=") + .append(orderByParam); + } + paginatorElem.addAttribute("prevPageLink", + prevPageLinkBuffer.toString()); + } + while (mainQueryResult.next()) { generateResultEntry(mainQueryResult, listElem);