diff --git a/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl b/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl index fd0719f00..d2230b69f 100644 --- a/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl +++ b/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl @@ -1,6 +1,5 @@ // -// Copyright (C) 2010 Jens Pelzetter, for the Center of Social Politics (ZeS) of -// the University of Bremen +// Copyright (C) 2010 Jens Pelzetter // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public License diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SelectFilter.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SelectFilter.java index 883453dab..587e8f1f2 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SelectFilter.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/panels/SelectFilter.java @@ -107,6 +107,7 @@ public class SelectFilter implements Filter { filter = parent.newChildElement("filter"); filter.addAttribute("type", "select"); + filter.addAttribute("label", label); if(options.isEmpty()) { return; @@ -123,8 +124,7 @@ public class SelectFilter implements Filter { } else { selected = value; } - - filter.addAttribute("label", label); + filter.addAttribute("selected", selected); if (emptyDefaultOption) { diff --git a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMembersTab.java b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMembersTab.java index 98703488a..6b5c00b82 100644 --- a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMembersTab.java +++ b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMembersTab.java @@ -14,7 +14,6 @@ import com.arsdigita.persistence.SessionManager; import com.arsdigita.xml.Element; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; diff --git a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsTab.java b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsTab.java index 151e4e779..5c3a08427 100644 --- a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsTab.java +++ b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsTab.java @@ -109,6 +109,7 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab { depProjectsElem.newChildElement("greeting"); + projects.addOrder("projectEnd desc"); projects.addOrder("projectBegin desc"); projects.addOrder("title"); @@ -124,22 +125,30 @@ public class SciDepartmentProjectsTab implements GenericOrgaUnitTab { statusFilter.generateXml(filtersElem); - final Paginator paginator = new Paginator(request, - (int) projects.size(), - config.getPageSize()); - - if (paginator.getPageCount() > config.getEnableSearchLimit()) { + if (projects.isEmpty()) { titleFilter.generateXml(filtersElem); + + depProjectsElem.newChildElement("noProjects"); + } else { + final Paginator paginator = new Paginator(request, + (int) projects.size(), + config.getPageSize()); + + if ((paginator.getPageCount() > config.getEnableSearchLimit()) + || ((request.getParameter(TITLE_PARAM) != null) + || !(request.getParameter(TITLE_PARAM).trim().isEmpty()))) { + titleFilter.generateXml(filtersElem); + } + + paginator.applyLimits(projects); + paginator.generateXml(depProjectsElem); } - paginator.applyLimits(projects); - paginator.generateXml(depProjectsElem); - } - - while (projects.next()) { - generateProjectXml((BigDecimal) projects.get("projectId"), - depProjectsElem, - state); + while (projects.next()) { + generateProjectXml((BigDecimal) projects.get("projectId"), + depProjectsElem, + state); + } } logger.debug(String.format("Generated projects list of department '%s' " diff --git a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationsTab.java b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationsTab.java index 35996ebbb..7bc1d0a5a 100644 --- a/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationsTab.java +++ b/ccm-sci-types-department/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPublicationsTab.java @@ -181,22 +181,41 @@ public class SciDepartmentPublicationsTab implements GenericOrgaUnitTab { publications.addOrder("title"); } - yearFilter.setDataQuery(getData(orgaunit), "year"); + final DataQuery yearQuery = getData(orgaunit); + yearFilter.setDataQuery(yearQuery, "year"); applyYearFilter(publications, request); applyTitleFilter(publications, request); applyAuthorFilter(publications, request); + + applyTitleFilter(yearQuery, request); + applyAuthorFilter(yearQuery, request); + + if (publications.isEmpty()) { + yearFilter.generateXml(filtersElem); + titleFilter.generateXml(filtersElem); + authorFilter.generateXml(filtersElem); + + depPublicationsElem.newChildElement("noPublications"); + + return; + + } final Paginator paginator = new Paginator(request, (int) publications.size(), config.getPageSize()); + yearFilter.generateXml(filtersElem); if ((paginator.getPageCount() > config.getEnableSearchLimit()) - || (yearValue != null) || !(yearValue.trim().isEmpty()) - || (titleValue != null) || !(titleValue.trim().isEmpty()) - || (authorValue != null) || !(authorValue.trim().isEmpty())) { - yearFilter.generateXml(filtersElem); + || ((request.getParameter(TITLE_PARAM) != null) + && !(request.getParameter(TITLE_PARAM).trim().isEmpty()))) { titleFilter.generateXml(filtersElem); + } + + if ((paginator.getPageCount() > config.getEnableSearchLimit()) + || ((request.getParameter(AUTHOR_PARAM) != null) + && !(request.getParameter(AUTHOR_PARAM).trim().isEmpty()))) { authorFilter.generateXml(filtersElem); } diff --git a/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstituteProjectsTab.java b/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstituteProjectsTab.java index e8b9a6341..66126cc95 100644 --- a/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstituteProjectsTab.java +++ b/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstituteProjectsTab.java @@ -99,18 +99,17 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab { "instituteProjects"); final Element filtersElem = depProjectsElem.newChildElement( "filters"); - + if (((request.getParameter(STATUS_PARAM) == null) - || (request.getParameter(STATUS_PARAM).trim().isEmpty()) - ) + || (request.getParameter(STATUS_PARAM).trim().isEmpty())) && ((request.getParameter(TITLE_PARAM) == null) - || request.getParameter(TITLE_PARAM).trim().isEmpty() - )) { + || request.getParameter(TITLE_PARAM).trim().isEmpty())) { statusFilter.generateXml(filtersElem); - + depProjectsElem.newChildElement("greeting"); + projects.addOrder("projectEnd desc"); projects.addOrder("projectBegin desc"); projects.addOrder("title"); @@ -121,28 +120,35 @@ public class SciInstituteProjectsTab implements GenericOrgaUnitTab { } else { projects.addOrder("title"); - applyStatusFilter(projects, request); applyTitleFilter(projects, request); statusFilter.generateXml(filtersElem); - - final Paginator paginator = new Paginator(request, - (int) projects.size(), - config.getPageSize()); - if (paginator.getPageCount() > config.getEnableSearchLimit()) { + if (projects.isEmpty()) { titleFilter.generateXml(filtersElem); + + depProjectsElem.newChildElement("noProjects"); + } else { + final Paginator paginator = new Paginator(request, + (int) projects.size(), + config.getPageSize()); + + if ((paginator.getPageCount() > config.getEnableSearchLimit()) + || ((request.getParameter(TITLE_PARAM) != null) + || !(request.getParameter(TITLE_PARAM).trim().isEmpty()))) { + titleFilter.generateXml(filtersElem); + } + + paginator.applyLimits(projects); + paginator.generateXml(depProjectsElem); } - paginator.applyLimits(projects); - paginator.generateXml(depProjectsElem); - } - - while (projects.next()) { - generateProjectXml((BigDecimal) projects.get("projectId"), - depProjectsElem, - state); + while (projects.next()) { + generateProjectXml((BigDecimal) projects.get("projectId"), + depProjectsElem, + state); + } } logger.debug(String.format("Generated projects list of department '%s' " diff --git a/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstitutePublicationsTab.java b/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstitutePublicationsTab.java index 1a4d528a4..2b0b1bba8 100644 --- a/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstitutePublicationsTab.java +++ b/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstitutePublicationsTab.java @@ -207,19 +207,40 @@ public class SciInstitutePublicationsTab implements GenericOrgaUnitTab { publications.addOrder("title"); } - yearFilter.setDataQuery(getData(orgaunit), "year"); + final DataQuery yearQuery = getData(orgaunit); + yearFilter.setDataQuery(yearQuery, "year"); applyYearFilter(publications, request); applyTitleFilter(publications, request); applyAuthorFilter(publications, request); + + applyTitleFilter(yearQuery, request); + applyAuthorFilter(yearQuery, request); + + if (publications.isEmpty()) { + yearFilter.generateXml(filtersElem); + titleFilter.generateXml(filtersElem); + authorFilter.generateXml(filtersElem); + + publicationsElem.newChildElement("noPublications"); + + return; + } final Paginator paginator = new Paginator(request, (int) publications.size(), config.getPageSize()); yearFilter.generateXml(filtersElem); - if (paginator.getPageCount() > config.getEnableSearchLimit()) { + if ((paginator.getPageCount() > config.getEnableSearchLimit()) + || ((request.getParameter(TITLE_PARAM) != null) + && !(request.getParameter(TITLE_PARAM).trim().isEmpty()))) { titleFilter.generateXml(filtersElem); + } + + if ((paginator.getPageCount() > config.getEnableSearchLimit()) + || ((request.getParameter(AUTHOR_PARAM) != null) + && !(request.getParameter(AUTHOR_PARAM).trim().isEmpty()))) { authorFilter.generateXml(filtersElem); } diff --git a/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstituteSummaryTab.java b/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstituteSummaryTab.java index c88ef393c..0fe71ea91 100644 --- a/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstituteSummaryTab.java +++ b/ccm-sci-types-institute/src/com/arsdigita/cms/contenttypes/ui/SciInstituteSummaryTab.java @@ -190,7 +190,7 @@ public class SciInstituteSummaryTab implements GenericOrgaUnitTab { institute. getSubordinateOrgaUnits(); departments.addFilter( - String.format("%s = '%s", + String.format("%s = '%s'", GenericOrganizationalUnitSubordinateCollection.LINK_ASSOCTYPE, SciInstituteDepartmentsStep.ASSOC_TYPE));