/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.app.xmlui.aspect.administrative.authorization; import java.sql.SQLException; import java.util.ArrayList; import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer; import org.dspace.app.xmlui.wing.Message; import org.dspace.app.xmlui.wing.WingException; import org.dspace.app.xmlui.wing.element.Body; import org.dspace.app.xmlui.wing.element.Division; import org.dspace.app.xmlui.wing.element.Item; import org.dspace.app.xmlui.wing.element.List; import org.dspace.app.xmlui.wing.element.PageMeta; import org.dspace.app.xmlui.wing.element.Text; import org.dspace.content.Collection; import org.dspace.content.Community; /** * @author Alexey Maslov */ public class AuthorizationMain extends AbstractDSpaceTransformer { private static final Message T_title = message("xmlui.administrative.authorization.AuthorizationMain.title"); private static final Message T_authorize_trail = message("xmlui.administrative.authorization.general.authorize_trail"); private static final Message T_main_head = message("xmlui.administrative.authorization.AuthorizationMain.main_head"); private static final Message T_actions_head = message("xmlui.administrative.authorization.AuthorizationMain.actions_head"); private static final Message T_actions_item_lookup = message("xmlui.administrative.authorization.AuthorizationMain.actions_item_lookup"); private static final Message T_bad_name = message("xmlui.administrative.authorization.AuthorizationMain.bad_name"); private static final Message T_search_help = message("xmlui.administrative.authorization.AuthorizationMain.search_help"); private static final Message T_submit_find = message("xmlui.administrative.authorization.AuthorizationMain.submit_find"); private static final Message T_actions_advanced = message("xmlui.administrative.authorization.AuthorizationMain.actions_advanced"); private static final Message T_actions_advanced_link = message("xmlui.administrative.authorization.AuthorizationMain.actions_advanced_link"); private static final Message T_containerList_head = message("xmlui.administrative.authorization.AuthorizationMain.containerList_head"); private static final Message T_containerList_para = message("xmlui.administrative.authorization.AuthorizationMain.containerList_para"); private static final Message T_dspace_home = message("xmlui.general.dspace_home"); private static final Message T_untitled = message("xmlui.general.untitled"); public void addPageMeta(PageMeta pageMeta) throws WingException { pageMeta.addMetadata("title").addContent(T_title); pageMeta.addTrailLink(contextPath + "/", T_dspace_home); pageMeta.addTrailLink(null, T_authorize_trail); } public void addBody(Body body) throws WingException, SQLException { /* Get and setup our parameters */ String query = decodeFromURL(parameters.getParameter("query", null)); String baseURL = contextPath + "/admin/epeople?administrative-continue=" + knot.getId(); String errorString = parameters.getParameter("errors", null); ArrayList<String> errors = new ArrayList<String>(); if (errorString != null) { for (String error : errorString.split(",")) { errors.add(error); } } Division main = body.addInteractiveDivision("authorization-main", contextPath + "/admin/authorize", Division.METHOD_POST, "primary administrative authorization"); main.setHead(T_main_head); //main.addPara(T_main_para); // DIVISION: authorization-actions Division actions = main.addDivision("authorization-actions"); actions.setHead(T_actions_head); List actionsList = actions.addList("actions"); actionsList.addLabel(T_actions_item_lookup); Item actionItem = actionsList.addItem(); Text queryField = actionItem.addText("identifier"); queryField.setAutofocus("autofocus"); if (query != null) { queryField.setValue(query); } if (errors.contains("identifier")) { queryField.addError(T_bad_name); } queryField.setHelp(T_search_help); actionItem.addButton("submit_edit").setValue(T_submit_find); actionsList.addLabel(T_actions_advanced); actionsList.addItemXref(baseURL+"&submit_wildcard", T_actions_advanced_link); // DIVISION: authorization-containerList Division containers = main.addDivision("authorization-containerList"); containers.setHead(T_containerList_head); containers.addPara(T_containerList_para); List containerList = containers.addList("containerList"); this.containerListBuilder(baseURL,containerList,null); main.addHidden("administrative-continue").setValue(knot.getId()); } /* A recursive helper method to build the community/collection hierarchy list */ private void containerListBuilder(String baseURL, List parentList, Community currentCommunity) throws SQLException, WingException { if (currentCommunity == null) { for (Community topLevel : Community.findAllTop(context)) { containerListBuilder(baseURL, parentList, topLevel); } } else { parentList.addItem().addHighlight("bold").addXref(baseURL + "&submit_edit&community_id=" + currentCommunity.getID(), currentCommunity.getMetadata("name")); List containerSubList = null; for (Collection subCols : currentCommunity.getCollections()) { if (containerSubList == null) { containerSubList = parentList.addList("subList" + currentCommunity.getID()); } String name = subCols.getMetadata("name"); if (name == null || name.length() == 0) { containerSubList.addItemXref(baseURL + "&submit_edit&collection_id=" + subCols.getID(), T_untitled); } else { containerSubList.addItemXref(baseURL + "&submit_edit&collection_id=" + subCols.getID(), name); } } for (Community subComs : currentCommunity.getSubcommunities()) { if (containerSubList == null) { containerSubList = parentList.addList("subList" + currentCommunity.getID()); } containerListBuilder(baseURL, containerSubList, subComs); } } } }