Index: site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java =================================================================== --- site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java (revision 111886) +++ site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java (working copy) @@ -207,6 +207,8 @@ private static final String SITE_MODE_HELPER_DONE = "helper.done"; private static final String STATE_SITE_MODE = "site_mode"; + + private static final String TERM_OPTION_ALL = "-1"; protected final static String[] TEMPLATE = { "-list",// 0 @@ -312,6 +314,8 @@ /** Name of the state attribute holding the site list View selected */ private static final String STATE_VIEW_SELECTED = "site.view.selected"; + + private static final String STATE_TERM_VIEW_SELECTED = "site.termview.selected"; /** Names of lists related to tools */ private static final String STATE_TOOL_REGISTRATION_LIST = "toolRegistrationList"; @@ -1373,12 +1377,41 @@ Collections.sort(viewKeys); context.put("viewKeys", viewKeys); context.put("views", views); - + if (state.getAttribute(STATE_VIEW_SELECTED) != null) { context.put("viewSelected", (String) state .getAttribute(STATE_VIEW_SELECTED)); } + //term filter: + Hashtable termViews = new Hashtable(); + termViews.put(TERM_OPTION_ALL, rb.getString("list.allTerms")); + List aSessions = setTermListForContext(context, state, true); + if(aSessions != null){ + for(AcademicSession s : aSessions){ + termViews.put(s.getTitle(), s.getTitle()); + } + } + // default term view + if (state.getAttribute(STATE_TERM_VIEW_SELECTED) == null) { + state.setAttribute(STATE_TERM_VIEW_SELECTED, TERM_OPTION_ALL); + } + if (state.getAttribute(STATE_TERM_VIEW_SELECTED) != null) { + context.put("viewTermSelected", (String) state + .getAttribute(STATE_TERM_VIEW_SELECTED)); + } + // sort the keys in the termViews lookup + List termViewKeys = Collections.list(termViews.keys()); + Collections.sort(termViewKeys); + context.put("termViewKeys", termViewKeys); + context.put("termViews", termViews); + if(termViews.size() == 1){ + //this means the terms are empty, only the default option exist + context.put("hideTermFilter", true); + }else{ + context.put("hideTermFilter", false); + } + String search = (String) state.getAttribute(STATE_SEARCH); context.put("search_term", search); @@ -4037,7 +4070,13 @@ int size = 0; String search = ""; String userId = SessionManager.getCurrentSessionUserId(); - + String term = (String) state.getAttribute(STATE_TERM_VIEW_SELECTED); + Map termProp = null; + if(term != null && !"".equals(term) && !TERM_OPTION_ALL.equals(term)){ + termProp = new HashMap(); + termProp.put(Site.PROP_SITE_TERM, term); + } + // if called from the site list page if (((String) state.getAttribute(STATE_TEMPLATE_INDEX)).equals("0")) { search = StringUtils.trimToNull((String) state @@ -4052,7 +4091,7 @@ size = SiteService .countSites( org.sakaiproject.site.api.SiteService.SelectionType.NON_USER, - null, search, null); + null, search, termProp); } else if (view.equals(SiteConstants.SITE_TYPE_MYWORKSPACE)) { // search for a specific user site // for the particular user id in the @@ -4068,7 +4107,7 @@ size = SiteService .countSites( org.sakaiproject.site.api.SiteService.SelectionType.NON_USER, - view, search, null); + view, search, termProp); } } } else { @@ -4099,7 +4138,7 @@ size += SiteService .countSites( org.sakaiproject.site.api.SiteService.SelectionType.ACCESS, - null, search, null); + null, search, termProp); } else if (view.equals(SiteConstants.SITE_TYPE_MYWORKSPACE)) { // get the current user MyWorkspace site try { @@ -4113,7 +4152,7 @@ size += SiteService .countSites( org.sakaiproject.site.api.SiteService.SelectionType.ACCESS, - view, search, null); + view, search, termProp); } } } @@ -4157,6 +4196,13 @@ : SortType.PUBLISHED_DESC; } + String term = (String) state.getAttribute(STATE_TERM_VIEW_SELECTED); + Map termProp = null; + if(term != null && !"".equals(term) && !TERM_OPTION_ALL.equals(term)){ + termProp = new HashMap(); + termProp.put(Site.PROP_SITE_TERM, term); + } + if (SecurityService.isSuperUser()) { // admin-type of user String view = (String) state.getAttribute(STATE_VIEW_SELECTED); @@ -4167,7 +4213,7 @@ return SiteService .getSites( org.sakaiproject.site.api.SiteService.SelectionType.NON_USER, - null, search, null, sortType, + null, search, termProp, sortType, new PagingPosition(first, last)); } else if (view.equalsIgnoreCase(SiteConstants.SITE_TYPE_MYWORKSPACE)) { // search for a specific user site for @@ -4187,7 +4233,7 @@ return SiteService .getSites( org.sakaiproject.site.api.SiteService.SelectionType.ANY, - view, search, null, sortType, + view, search, termProp, sortType, new PagingPosition(first, last)); } } @@ -4220,7 +4266,7 @@ .addAll(SiteService .getSites( org.sakaiproject.site.api.SiteService.SelectionType.ACCESS, - null, search, null, sortType, + null, search, termProp, sortType, new PagingPosition(first, last))); } else if (view.equals(SiteConstants.SITE_TYPE_MYWORKSPACE)) { @@ -4233,7 +4279,7 @@ rv.addAll(SiteService .getSites( org.sakaiproject.site.api.SiteService.SelectionType.ACCESS, - view, search, null, sortType, + view, search, termProp, sortType, new PagingPosition(first, last))); } } @@ -4566,6 +4612,7 @@ .getPortletSessionState(((JetspeedRunData) data).getJs_peid()); ParameterParser params = data.getParameters(); state.setAttribute(STATE_VIEW_SELECTED, params.getString("view")); + state.setAttribute(STATE_TERM_VIEW_SELECTED, params.getString("termview")); state.setAttribute(STATE_TEMPLATE_INDEX, "0"); resetPaging(state); Index: site-manage-tool/tool/src/bundle/sitesetupgeneric.properties =================================================================== --- site-manage-tool/tool/src/bundle/sitesetupgeneric.properties (revision 111886) +++ site-manage-tool/tool/src/bundle/sitesetupgeneric.properties (working copy) @@ -252,6 +252,8 @@ #List Vm list.view = View: +list.selectTerm=Filter by Term: +list.allTerms=None list.search = Search list.cls = Clear Search list.onesite = 1 site was Index: site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-list.vm =================================================================== --- site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-list.vm (revision 111886) +++ site-manage-tool/tool/src/webapp/vm/sitesetup/chef_site-list.vm (working copy) @@ -55,6 +55,17 @@ > $views.get($view) #end + #if(!$hideTermFilter) +
+ + + #end