You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2003/10/03 12:52:09 UTC

cvs commit: cocoon-lenya/src/webapp/lenya/content/admin/groups group-admin.js

andreas     2003/10/03 03:52:09

  Modified:    src/webapp/lenya/content/admin/ipranges iprange-admin.js
               src/webapp/lenya/content/admin/common access-control.js
               src/webapp/lenya/content/admin/groups group-admin.js
  Log:
  fixed "cancel does not work" bug
  
  Revision  Changes    Path
  1.6       +161 -144  cocoon-lenya/src/webapp/lenya/content/admin/ipranges/iprange-admin.js
  
  Index: iprange-admin.js
  ===================================================================
  RCS file: /home/cvs/cocoon-lenya/src/webapp/lenya/content/admin/ipranges/iprange-admin.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- iprange-admin.js	7 Aug 2003 12:15:12 -0000	1.5
  +++ iprange-admin.js	3 Oct 2003 10:52:09 -0000	1.6
  @@ -3,7 +3,7 @@
   // Modify an IP range.
   //
   function iprange_change_profile(iprangeId) {
  -    iprange_change_profile(iprangeId, true);
  +    iprange_change_profile(iprangeId, false);
   }
   
   //
  @@ -55,133 +55,139 @@
   //
   function iprange_change_profile(iprangeId, newRange) {
   
  -    var ipRangeManager = getIPRangeManager();
  -    var range;
  -    if (newRange) {
  -        range = new Packages.org.apache.lenya.cms.ac.FileIPRange();
  -    }
  -    else {
  -        range = ipRangeManager.getIPRange(iprangeId);
  -    }
  -	var name = range.getName();
  -	var description = range.getDescription();
  -	
  -	var net = new Array(4);
  -	var mask = new Array(4);
  -
  -	for (i = 0; i < 4; i++) {
  -        net[i] = getInt(range.getNetworkAddress().getAddress()[i]);
  -        mask[i] = getInt(range.getSubnetMask().getAddress()[i]);
  -	}
  -	
  -	var netErrors = new Array(4);
  -	var maskErrors = new Array(4);
  -	
  -    var message = "";
  -	
  -  	for (i = 0; i < 4; i++) {
  -        netErrors[i] = "false";
  -        maskErrors[i] = "false";
  -   	}
  +	resolve();
  +	try {
  +	    var ipRangeManager = getAccreditableManager().getIPRangeManager();
  +	    var range;
  +	    if (newRange == true) {
  +	        range = new Packages.org.apache.lenya.cms.ac.FileIPRange();
  +	    }
  +	    else {
  +	        range = ipRangeManager.getIPRange(iprangeId);
  +	    }
  +		var name = range.getName();
  +		var description = range.getDescription();
  +		
  +		var net = new Array(4);
  +		var mask = new Array(4);
   	
  -    while (true) {
  -    
  -    	var url;
  -    	if (newRange) {
  -    		url = "ipranges/profile.xml";
  -    	}
  -    	else {
  -    		url = "ipranges/" + iprangeId + "/profile.xml";
  -    	}
  -    
  -	    sendPageAndWait(url, {
  -	    	"iprange-id" : iprangeId,
  -	    	"name" : name,
  -	    	"description" : description,
  -	    	"page-title" : "Edit IP Range",
  -	    	"net" : java.util.Arrays.asList(net),
  -	    	"net-errors" : java.util.Arrays.asList(netErrors),
  -	    	"mask" : java.util.Arrays.asList(mask),
  -	    	"mask-errors" : java.util.Arrays.asList(maskErrors),
  -	    	"new-iprange" : newRange,
  -	    	"message" : message
  -	    });
  -	    
  +		for (i = 0; i < 4; i++) {
  +	        net[i] = getInt(range.getNetworkAddress().getAddress()[i]);
  +	        mask[i] = getInt(range.getSubnetMask().getAddress()[i]);
  +		}
  +		
  +		var netErrors = new Array(4);
  +		var maskErrors = new Array(4);
  +		
  +	    var message = "";
  +		
   	  	for (i = 0; i < 4; i++) {
   	        netErrors[i] = "false";
   	        maskErrors[i] = "false";
   	   	}
  -	   	message = "";
  +		
  +	    while (true) {
  +	    
  +	    	var url;
  +	    	if (newRange == true) {
  +	    		url = "ipranges/profile.xml";
  +	    	}
  +	    	else {
  +	    		url = "ipranges/" + iprangeId + "/profile.xml";
  +	    	}
  +	    
  +		    cocoon.sendPageAndWait(url, {
  +		    	"iprange-id" : iprangeId,
  +		    	"name" : name,
  +		    	"description" : description,
  +		    	"page-title" : "Edit IP Range",
  +		    	"net" : java.util.Arrays.asList(net),
  +		    	"net-errors" : java.util.Arrays.asList(netErrors),
  +		    	"mask" : java.util.Arrays.asList(mask),
  +		    	"mask-errors" : java.util.Arrays.asList(maskErrors),
  +		    	"new-iprange" : newRange,
  +		    	"message" : message
  +		    });
  +		    
  +		  	for (i = 0; i < 4; i++) {
  +		        netErrors[i] = "false";
  +		        maskErrors[i] = "false";
  +		   	}
  +		   	message = "";
  +		
  +		    if (cocoon.request.get("cancel")) {
  +		    	break;
  +		    }
  +		    
  +		    if (cocoon.request.get("submit")) {
  +	
  +		        var ok = true;
  +		        
  +	            // get values from request
  +			    name = cocoon.request.get("name");
  +		       	description = cocoon.request.get("description");
  +		       	for (i = 0; i < 4; i++) {
  +		       	    net[i] = cocoon.request.get("net-" + (i+1));
  +		       	    if (!checkIPNumber(net[i])) {
  +		       	        netErrors[i] = "true";
  +		       	        ok = false;
  +		       	        message = "Please correct the errors.";
  +		       	    }
  +		       	    
  +		       	    mask[i] = cocoon.request.get("mask-" + (i+1));
  +		       	    if (!checkIPNumber(mask[i])) {
  +		       	        maskErrors[i] = "true";
  +		       	        ok = false;
  +		       	        message = "Please correct the errors.";
  +		       	    }
  +		       	}
  +		       	
  +		       	// initialize new IP range
  +		        if (newRange == true) {
  +				    iprangeId = cocoon.request.get("iprange-id");
  +			        if (ok) {
  +		                var existingIPRange = ipRangeManager.getIPRange(iprangeId);
  +		                if (existingIPRange != null) {
  +		                    message = "This IP range already exists.";
  +		                    ok = false;
  +		                }
  +						else if (!Packages.org.apache.lenya.cms.ac.AbstractItem.isValidId(iprangeId)) {
  +		                	message = "This is not a valid IP range ID. [" + iprangeId + "]";
  +		                	ok = false;
  +		                }
  +		                else {
  +		                    range = new Packages.org.apache.lenya.cms.ac.FileIPRange(
  +		                        ipRangeManager.getConfigurationDirectory(), iprangeId);
  +		                    ipRangeManager.add(range);
  +		                }
  +		            }
  +		        }
  +	
  +	            // save IP range	    
  +		       	if (ok == true) {
  +	                range.setName(name);
  +	                range.setDescription(description);
  +	                range.setNetworkAddress(getIPString(net));
  +	                range.setSubnetMask(getIPString(mask));
  +	                range.save();
  +	                break;
  +		       	}
  +		    }
   	
  -	    if (cocoon.request.get("cancel")) {
  -	    	break;
   	    }
   	    
  -	    if (cocoon.request.get("submit")) {
  -
  -	        var ok = true;
  -	        
  -            // get values from request
  -		    name = cocoon.request.get("name");
  -	       	description = cocoon.request.get("description");
  -	       	for (i = 0; i < 4; i++) {
  -	       	    net[i] = cocoon.request.get("net-" + (i+1));
  -	       	    if (!checkIPNumber(net[i])) {
  -	       	        netErrors[i] = "true";
  -	       	        ok = false;
  -	       	        message = "Please correct the errors.";
  -	       	    }
  -	       	    
  -	       	    mask[i] = cocoon.request.get("mask-" + (i+1));
  -	       	    if (!checkIPNumber(mask[i])) {
  -	       	        maskErrors[i] = "true";
  -	       	        ok = false;
  -	       	        message = "Please correct the errors.";
  -	       	    }
  -	       	}
  -	       	
  -	       	// initialize new IP range
  -	        if (newRange) {
  -			    iprangeId = cocoon.request.get("iprange-id");
  -		        if (ok) {
  -	                var existingIPRange = ipRangeManager.getIPRange(iprangeId);
  -	                if (existingIPRange != null) {
  -	                    message = "This IP range already exists.";
  -	                    ok = false;
  -	                }
  -					else if (!Packages.org.apache.lenya.cms.ac.AbstractItem.isValidId(iprangeId)) {
  -	                	message = "This is not a valid IP range ID. [" + iprangeId + "]";
  -	                	ok = false;
  -	                }
  -	                else {
  -	                    range = new Packages.org.apache.lenya.cms.ac.FileIPRange(
  -	                        ipRangeManager.getConfigurationDirectory(), iprangeId);
  -	                    ipRangeManager.add(range);
  -	                }
  -	            }
  -	        }
  -
  -            // save IP range	    
  -	       	if (ok) {
  -                range.setName(name);
  -                range.setDescription(description);
  -                range.setNetworkAddress(getIPString(net));
  -                range.setSubnetMask(getIPString(mask));
  -                range.save();
  -                break;
  -	       	}
  +	    var url;
  +	    if (newRange == true) {
  +	    	url = "../ipranges.html";
   	    }
  -
  -    }
  -    
  -    var url;
  -    if (newRange) {
  -    	url = "../ipranges.html";
  -    }
  -    else {
  -    	url = "index.html";
  -    }
  -   	sendPage("redirect.html", { "url" : url });
  +	    else {
  +	    	url = "index.html";
  +	    }
  +	   	cocoon.sendPage("redirect.html", { "url" : url });
  +   	}
  +   	finally {
  +   		release();
  +   	}
   }
   
   //
  @@ -196,39 +202,50 @@
   //
   function iprange_delete_iprange() {
   
  -    var ipRangeManager = getIPRangeManager();
  -	var ipRangeId = cocoon.request.get("iprange-id");
  -	var range = ipRangeManager.getIPRange(ipRangeId);
  -	var name = range.getName();
  -	var showPage = true;
  -	
  -	while (showPage) {
  -		sendPageAndWait("ipranges/confirm-delete-common.xml", {
  -			"type" : "IP range",
  -			"id" : ipRangeId,
  -			"name" : name
  -		});
  -		
  -		if (cocoon.request.get("submit")) {
  -			ipRangeManager.remove(range);
  -			range['delete']();
  -			showPage = false;
  -		}
  -	}
  +	resolve();
  +	try {
   
  -   	sendPage("redirect.html", { "url" : "../ipranges.html" });
  +	    var ipRangeManager = getAccreditableManager().getIPRangeManager();
  +		var ipRangeId = cocoon.request.get("iprange-id");
  +		var range = ipRangeManager.getIPRange(ipRangeId);
  +		var name = range.getName();
  +		var showPage = true;
  +		
  +		while (showPage) {
  +			cocoon.sendPageAndWait("ipranges/confirm-delete-common.xml", {
  +				"type" : "IP range",
  +				"id" : ipRangeId,
  +				"name" : name
  +			});
  +			
  +			if (cocoon.request.get("cancel")) {
  +				break;
  +			}
  +			
  +			if (cocoon.request.get("submit")) {
  +				ipRangeManager.remove(range);
  +				range['delete']();
  +				showPage = false;
  +			}
  +		}
  +	
  +	   	cocoon.sendPage("redirect.html", { "url" : "../ipranges.html" });
  +   	}
  +   	finally {
  +   		release();
  +   	}
   }
   
   //
   // Change the group affiliation of an IP range.
   //
   function iprange_change_groups(iprangeId) {
  -    var range = getIPRangeManager().getIPRange(iprangeId);
  +    var range = getAccreditableManager().getIPRangeManager().getIPRange(iprangeId);
       
       var rangeGroupArray = range.getGroups();
       var rangeGroups = new java.util.ArrayList(java.util.Arrays.asList(rangeGroupArray));
       
  -    var iterator = getGroupManager().getGroups();
  +    var iterator = getAccreditableManager().getGroupManager().getGroups();
       var groups = new java.util.ArrayList();
       while (iterator.hasNext()) {
       	var group = iterator.next();
  @@ -238,7 +255,7 @@
       }
       
       while (true) {
  -	    sendPageAndWait("ipranges/" + iprangeId + "/groups.xml", {
  +	    cocoon.sendPageAndWait("ipranges/" + iprangeId + "/groups.xml", {
   	    	"iprange-id" : iprangeId,
   	    	"groups" : groups,
   	    	"iprange-groups" : rangeGroups
  @@ -246,7 +263,7 @@
   	    
   		var groupId = cocoon.request.get("group");
   		if (cocoon.request.get("add_group") && groupId != "") {
  -			var group = getGroupManager().getGroup(groupId);
  +			var group = getAccreditableManager().getGroupManager().getGroup(groupId);
   			if (!rangeGroups.contains(group)) {
   				rangeGroups.add(group);
   				groups.remove(group);
  @@ -255,7 +272,7 @@
   	    
   		var rangeGroupId = cocoon.request.get("iprange_group");
   		if (cocoon.request.get("remove_group") && rangeGroupId != "") {
  -			var group = getGroupManager().getGroup(rangeGroupId);
  +			var group = getAccreditableManager().getGroupManager().getGroup(rangeGroupId);
   			if (rangeGroups.contains(group)) {
   				rangeGroups.remove(group);
   				groups.add(group);
  
  
  
  1.2       +17 -11    cocoon-lenya/src/webapp/lenya/content/admin/common/access-control.js
  
  Index: access-control.js
  ===================================================================
  RCS file: /home/cvs/cocoon-lenya/src/webapp/lenya/content/admin/common/access-control.js,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- access-control.js	22 Jul 2003 17:06:41 -0000	1.1
  +++ access-control.js	3 Oct 2003 10:52:09 -0000	1.2
  @@ -1,17 +1,23 @@
   
  -function getUserManager() {
  -    return getManager("user");
  +function getAccreditableManager() {
  +	return accreditableManager;
   }
   
  -function getGroupManager() {
  -    return getManager("group");
  -}
  +var accreditableManager;
  +var selector;
  +var resolver;
   
  -function getIPRangeManager() {
  -    return getManager("iprange");
  +function resolve() {
  +    selector = cocoon.getComponent("org.apache.lenya.cms.ac2.AccessControllerResolverSelector");
  +	resolver = selector.select(Packages.org.apache.lenya.cms.ac2.AccessControllerResolver.DEFAULT_RESOLVER);
  +	var requestUrl = cocoon.parameters["requestUri"];
  +	var contextPath = cocoon.parameters["contextPath"];
  +	var webappUrl = Packages.org.apache.lenya.util.ServletHelper.getWebappURI(contextPath, requestUrl);
  +	var accessController = resolver.resolveAccessController(webappUrl);
  +	accreditableManager = accessController.getAccreditableManager();
   }
   
  -function getManager(type) {
  -    var manager = cocoon.inputModuleGetAttribute("access-control", type + "-manager");
  -    return manager;
  -}
  \ No newline at end of file
  +function release() {
  +	cocoon.releaseComponent(resolver);
  +	cocoon.releaseComponent(selector);
  +}
  
  
  
  1.8       +192 -161  cocoon-lenya/src/webapp/lenya/content/admin/groups/group-admin.js
  
  Index: group-admin.js
  ===================================================================
  RCS file: /home/cvs/cocoon-lenya/src/webapp/lenya/content/admin/groups/group-admin.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- group-admin.js	7 Aug 2003 14:55:45 -0000	1.7
  +++ group-admin.js	3 Oct 2003 10:52:09 -0000	1.8
  @@ -4,37 +4,44 @@
   //
   function group_change_profile(groupId) {
   
  -    var groupManager = getGroupManager();
  -    var group = groupManager.getGroup(groupId);
  -	var name = group.getName();
  -	var description = group.getDescription();
  -	
  -	// at the moment the loop is executed only once (no form validation)
  -	
  -    while (true) {
  -	    sendPageAndWait("groups/" + groupId + "/profile.xml", {
  -	    	"group-id" : groupId,
  -	    	"name" : name,
  -	    	"description" : description,
  -	    	"page-title" : "Edit Group"
  -	    });
  -	    
  -	    if (cocoon.request.get("cancel")) {
  -	    	break;
  +	resolve();
  +	try {
  +	
  +	    var groupManager = getAccreditableManager().getGroupManager();
  +	    var group = groupManager.getGroup(groupId);
  +		var name = group.getName();
  +		var description = group.getDescription();
  +		
  +		// at the moment the loop is executed only once (no form validation)
  +		
  +	    while (true) {
  +		    cocoon.sendPageAndWait("groups/" + groupId + "/profile.xml", {
  +		    	"group-id" : groupId,
  +		    	"name" : name,
  +		    	"description" : description,
  +		    	"page-title" : "Edit Group"
  +		    });
  +		    
  +		    if (cocoon.request.get("cancel")) {
  +		    	break;
  +		    }
  +		    
  +		    if (cocoon.request.get("submit")) {
  +			    name = cocoon.request.get("name");
  +		       	group.setName(name);
  +		       	description = cocoon.request.get("description");
  +		       	group.setDescription(description);
  +		   		group.save();
  +		    	break;
  +		    }
  +	
   	    }
   	    
  -	    if (cocoon.request.get("submit")) {
  -		    name = cocoon.request.get("name");
  -	       	group.setName(name);
  -	       	description = cocoon.request.get("description");
  -	       	group.setDescription(description);
  -	   		group.save();
  -	    	break;
  -	    }
  -
  -    }
  -    
  -   	sendPage("redirect.html", { "url" : "index.html" });
  +	   	cocoon.sendPage("redirect.html", { "url" : "index.html" });
  +   	}
  +   	finally {
  +	   	release();
  +   	}
   }
   
   
  @@ -43,80 +50,87 @@
   //
   function group_change_members(groupId) {
   
  -    var userManager = getUserManager();
  -    var groupManager = getGroupManager();
  -    var group = groupManager.getGroup(groupId);
  -    
  -    var memberArray = group.getMembers();
  -    
  -    var groupUsers = new java.util.ArrayList();
  -    var otherUsers = new java.util.ArrayList();
  -    var groupMachines = new java.util.ArrayList();
  -    var otherMachines = new java.util.ArrayList();
  -    
  -    for (var i = 0; i < memberArray.length; i++) {
  -    	var member = memberArray[i];
  -    	if (member instanceof Packages.org.apache.lenya.cms.ac.User) {
  -    		groupUsers.add(member);
  -    	}
  -    	if (member instanceof Packages.org.apache.lenya.cms.ac.Machine) {
  -    		groupMachines.add(machine);
  -    	}
  -    }
  -    
  -    var userIterator = userManager.getUsers();
  -    while (userIterator.hasNext()) {
  -    	var user = userIterator.next();
  -    	if (!groupUsers.contains(user)) {
  -    		otherUsers.add(user);
  -    	}
  -    }
  -    
  -    while (true) {
  -	    sendPageAndWait("groups/" + groupId + "/members.xml", {
  -	    	"group-id" : groupId,
  -	    	"users" : otherUsers,
  -	    	"group-users" : groupUsers,
  -	    	"machines" : otherMachines,
  -	    	"group-machines" : groupMachines,
  -	    });
  -	    
  -		var otherUserId = cocoon.request.get("user");
  -		if (cocoon.request.get("add_user") && otherUserId != "") {
  -			var user = userManager.getUser(otherUserId);
  -			if (!groupUsers.contains(user)) {
  -				groupUsers.add(user);
  -				otherUsers.remove(user);
  -			}
  -		}
  +	resolve();
  +	try {
  +	
  +	    var userManager = getAccreditableManager().getUserManager();
  +	    var groupManager = getAccreditableManager().getGroupManager();
  +	    var group = groupManager.getGroup(groupId);
  +	    
  +	    var memberArray = group.getMembers();
  +	    
  +	    var groupUsers = new java.util.ArrayList();
  +	    var otherUsers = new java.util.ArrayList();
  +	    var groupMachines = new java.util.ArrayList();
  +	    var otherMachines = new java.util.ArrayList();
  +	    
  +	    for (var i = 0; i < memberArray.length; i++) {
  +	    	var member = memberArray[i];
  +	    	if (member instanceof Packages.org.apache.lenya.cms.ac.User) {
  +	    		groupUsers.add(member);
  +	    	}
  +	    	if (member instanceof Packages.org.apache.lenya.cms.ac.Machine) {
  +	    		groupMachines.add(machine);
  +	    	}
  +	    }
   	    
  -		var groupUserId = cocoon.request.get("group_user");
  -		if (cocoon.request.get("remove_user") && groupUserId != "") {
  -			var user = userManager.getUser(groupUserId);
  -			if (groupUsers.contains(user)) {
  -				groupUsers.remove(user);
  -				otherUsers.add(user);
  -			}
  -		}
  -
  -	    if (cocoon.request.get("cancel")) {
  -	    	break;
  +	    var userIterator = userManager.getUsers();
  +	    while (userIterator.hasNext()) {
  +	    	var user = userIterator.next();
  +	    	if (!groupUsers.contains(user)) {
  +	    		otherUsers.add(user);
  +	    	}
   	    }
   	    
  -		if (cocoon.request.get("submit")) {
  -			group.removeAllMembers();
  -			
  -			var userIterator = groupUsers.iterator();
  -			while (userIterator.hasNext()) {
  -				var user = userIterator.next();
  -				group.add(user);
  -				user.save();
  +	    while (true) {
  +		    cocoon.sendPageAndWait("groups/" + groupId + "/members.xml", {
  +		    	"group-id" : groupId,
  +		    	"users" : otherUsers,
  +		    	"group-users" : groupUsers,
  +		    	"machines" : otherMachines,
  +		    	"group-machines" : groupMachines,
  +		    });
  +		    
  +			var otherUserId = cocoon.request.get("user");
  +			if (cocoon.request.get("add_user") && otherUserId != "") {
  +				var user = userManager.getUser(otherUserId);
  +				if (!groupUsers.contains(user)) {
  +					groupUsers.add(user);
  +					otherUsers.remove(user);
  +				}
  +			}
  +		    
  +			var groupUserId = cocoon.request.get("group_user");
  +			if (cocoon.request.get("remove_user") && groupUserId != "") {
  +				var user = userManager.getUser(groupUserId);
  +				if (groupUsers.contains(user)) {
  +					groupUsers.remove(user);
  +					otherUsers.add(user);
  +				}
  +			}
  +	
  +		    if (cocoon.request.get("cancel")) {
  +		    	break;
  +		    }
  +		    
  +			if (cocoon.request.get("submit")) {
  +				group.removeAllMembers();
  +				
  +				var userIterator = groupUsers.iterator();
  +				while (userIterator.hasNext()) {
  +					var user = userIterator.next();
  +					group.add(user);
  +					user.save();
  +				}
  +				
  +				break;
   			}
  -			
  -			break;
   		}
  -	}
  -   	sendPage("redirect.html", { "url" : "index.html" });
  +	   	cocoon.sendPage("redirect.html", { "url" : "index.html" });
  +   	}
  +   	finally {
  +	   	release();
  +   	}
   }
   
   //
  @@ -124,49 +138,55 @@
   //
   function group_add_group() {
   
  -    var groupManager = getGroupManager();
  -	var groupId = "";
  -	var name = "";
  -	var description = "";
  -	var message = "";
  -	
  -	while (true) {
  -		sendPageAndWait("groups/profile.xml", {
  -			"page-title" : "Add Group",
  -			"group-id" : groupId,
  -	    	"name" : name,
  -	    	"description" : description,
  -	    	"message" : message,
  -	    	"new-group" : true
  -		});
  +	resolve();
  +	try {
  +	    var groupManager = getAccreditableManager().getGroupManager();
  +		var groupId = "";
  +		var name = "";
  +		var description = "";
  +		var message = "";
   		
  -	    if (cocoon.request.get("cancel")) {
  -	    	break;
  -	    }
  -	    
  -		message = "";
  -		groupId = cocoon.request.get("group-id");
  -		name = cocoon.request.get("name");
  -		description = cocoon.request.get("description");
  -		
  -		var existingGroup = groupManager.getGroup(groupId);
  -		if (existingGroup != null) {
  -			message = "This group already exists.";
  -		}
  -		else if (!Packages.org.apache.lenya.cms.ac.AbstractItem.isValidId(groupId)) {
  -          	message = "This is not a valid group ID.";
  -		}
  -		else {
  -			var configDir = groupManager.getConfigurationDirectory();
  -			var group = new Packages.org.apache.lenya.cms.ac.FileGroup(configDir, groupId);
  -			group.setName(name);
  -			group.setDescription(description);
  -			group.save();
  -			groupManager.add(group);
  -			break;
  +		while (true) {
  +			cocoon.sendPageAndWait("groups/profile.xml", {
  +				"page-title" : "Add Group",
  +				"group-id" : groupId,
  +		    	"name" : name,
  +		    	"description" : description,
  +		    	"message" : message,
  +		    	"new-group" : true
  +			});
  +			
  +		    if (cocoon.request.get("cancel")) {
  +		    	break;
  +		    }
  +		    
  +			message = "";
  +			groupId = cocoon.request.get("group-id");
  +			name = cocoon.request.get("name");
  +			description = cocoon.request.get("description");
  +			
  +			var existingGroup = groupManager.getGroup(groupId);
  +			if (existingGroup != null) {
  +				message = "This group already exists.";
  +			}
  +			else if (!Packages.org.apache.lenya.cms.ac.AbstractItem.isValidId(groupId)) {
  +	          	message = "This is not a valid group ID.";
  +			}
  +			else {
  +				var configDir = groupManager.getConfigurationDirectory();
  +				var group = new Packages.org.apache.lenya.cms.ac.FileGroup(configDir, groupId);
  +				group.setName(name);
  +				group.setDescription(description);
  +				group.save();
  +				groupManager.add(group);
  +				break;
  +			}
   		}
  -	}
  -   	sendPage("redirect.html", { "url" : "../groups.html" });
  +	   	cocoon.sendPage("redirect.html", { "url" : "../groups.html" });
  +   	}
  +   	finally {
  +	   	release();
  +   	}
   }
   
   //
  @@ -174,30 +194,41 @@
   //
   function group_delete_group() {
   
  -    var groupManager = getGroupManager();
  -	var groupId = cocoon.request.get("group-id");
  -	var group = groupManager.getGroup(groupId);
  -	var name = group.getName();
  -	var showPage = true;
  -	
  -	while (showPage) {
  -		sendPageAndWait("groups/confirm-delete-common.xml", {
  -			"type" : "group",
  -			"id" : groupId,
  -			"name" : name
  -		});
  +	resolve();
  +	try {
  +	
  +	    var groupManager = getAccreditableManager().getGroupManager();
  +		var groupId = cocoon.request.get("group-id");
  +		var group = groupManager.getGroup(groupId);
  +		var name = group.getName();
  +		var showPage = true;
   		
  -		if (cocoon.request.get("submit")) {
  -			groupManager.remove(group);
  -			var members = group.getMembers();
  -			group['delete']();
  -			for (var i = 0; i < members.length; i++) {
  -			    members[i].save();
  +		while (showPage) {
  +			cocoon.sendPageAndWait("groups/confirm-delete-common.xml", {
  +				"type" : "group",
  +				"id" : groupId,
  +				"name" : name
  +			});
  +			
  +			if (cocoon.request.get("cancel")) {
  +				break;
  +			}
  +			
  +			if (cocoon.request.get("submit")) {
  +				groupManager.remove(group);
  +				var members = group.getMembers();
  +				group['delete']();
  +				for (var i = 0; i < members.length; i++) {
  +				    members[i].save();
  +				}
  +				showPage = false;
   			}
  -			showPage = false;
   		}
  -	}
  -
  -   	sendPage("redirect.html", { "url" : "../groups.html" });
  +	
  +	   	cocoon.sendPage("redirect.html", { "url" : "../groups.html" });
  +   	}
  +   	finally {
  +   		release();
  +   	}
   }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: lenya-cvs-unsubscribe@cocoon.apache.org
For additional commands, e-mail: lenya-cvs-help@cocoon.apache.org