66,18 → 66,22 |
} |
else if("edit".equals(mapping.getParameter())) { |
DynaActionForm theForm = (DynaActionForm)form; |
MailAlias alias; |
Long aliasId = StringConverter.parseLong(theForm.get("id")); |
List dests; |
|
DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm( |
this, request, "ak.hostcaptain.core.form.MailAliasEditForm"); |
|
if(aliasId == null) { |
alias = MailAliasManager.getInstance().create(user); |
dests = new ArrayList(); |
showForm.set("enabled", new Boolean(true)); |
} |
else { |
MailAlias alias = MailAliasManager.getInstance().get(user, aliasId); |
List dests = new ArrayList(MailAliasDestinationManager.getInstance() |
.listMailAliasesDestination(alias)); |
alias = MailAliasManager.getInstance().get(user, aliasId); |
dests = new ArrayList(MailAliasDestinationManager.getInstance() |
.listMailAliasesDestination(alias)); |
MailAliasDestBean[] d = new MailAliasDestBean[dests.size()]; |
|
// FIXME: sort dests here |
97,7 → 101,14 |
} |
|
initLists(request, user); |
return mapping.findForward("default"); |
request.setAttribute("alias", alias); |
request.setAttribute("dests", dests); |
if(alias.editableBy(user)) |
return mapping.findForward("default"); |
else if(alias.mayChangeDestinations(user)) |
return mapping.findForward("editdests"); |
else |
return mapping.findForward("view"); |
} |
else if("delete".equals(mapping.getParameter())) { |
DynaActionForm theForm = (DynaActionForm)form; |
111,7 → 122,8 |
else if("submit".equals(mapping.getParameter())) { |
DynaActionForm theForm = (DynaActionForm)form; |
Long aliasId = StringConverter.parseLong(theForm.get("id")); |
MailAlias alias = (aliasId == null) ? null |
MailAlias alias = (aliasId == null) |
? MailAliasManager.getInstance().create(user) |
: MailAliasManager.getInstance().get(user, aliasId); |
MailAliasDestBean[] dests = (MailAliasDestBean[])theForm.get("dests"); |
|
121,16 → 133,19 |
// by submit |
|
// validate required fields, because it cannot be done in general case |
if(StringConverter.isEmpty(theForm.get("address"))) |
if(StringConverter.isEmpty(theForm.get("address"))) { |
handleErrors(mapping, form, request, response); |
throw new UserException("ak.hostcaptain.core.mail.alias.edit.address.empty"); |
if(StringConverter.isEmpty(theForm.get("domain"))) |
} |
if(StringConverter.isEmpty(theForm.get("domain"))) { |
handleErrors(mapping, form, request, response); |
throw new UserException("ak.hostcaptain.core.mail.alias.edit.domain.wrong"); |
if(StringConverter.isEmpty(theForm.get("owner"))) |
} |
if(StringConverter.isEmpty(theForm.get("owner"))) { |
handleErrors(mapping, form, request, response); |
throw new UserException("ak.hostcaptain.core.mail.alias.edit.owner.wrong"); |
} |
|
if(alias == null) |
alias = MailAliasManager.getInstance().create(user); |
|
alias.getDestinations(user).clear(); |
for(int i = 0; i < dests.length; i++) { |
// FIXME: validate dest id, mailbox id, email |
149,6 → 164,10 |
else |
dest = MailAliasDestinationManager.getInstance().get(user, destId); |
|
// connect |
dest.setAlias(user, alias); |
alias.getDestinations(user).add(dest); |
|
// set mailbox or email |
if(mailboxId != null) { |
dest.setMailbox(user, MailboxManager.getInstance().get(user, mailboxId)); |
161,10 → 180,6 |
|
dest.setEnabled(user, dests[i].getEnabled()); |
dest.setComment(user, dests[i].getComment()); |
|
// connect |
dest.setAlias(user, alias); |
alias.getDestinations(user).add(dest); |
} |
|
alias.setAddress(user, (String)theForm.get("address")); |
194,7 → 209,14 |
theForm.set("dests", newDests); |
|
initLists(request, user); |
return mapping.findForward("back"); |
request.setAttribute("alias", alias); |
request.setAttribute("dests", newDests); |
if(alias.editableBy(user)) |
return mapping.findForward("default"); |
else if(alias.mayChangeDestinations(user)) |
return mapping.findForward("editdests"); |
else |
return mapping.findForward("view"); |
} |
|
// delete |
218,6 → 240,7 |
System.arraycopy(dests, n+1, newDests, |
n, dests.length-n-1); |
theForm.set("dests", newDests); |
request.setAttribute("dests", newDests); |
break; |
} |
catch(NumberFormatException ex) { |
227,7 → 250,13 |
} |
|
initLists(request, user); |
return mapping.findForward("back"); |
request.setAttribute("alias", alias); |
if(alias.editableBy(user)) |
return mapping.findForward("default"); |
else if(alias.mayChangeDestinations(user)) |
return mapping.findForward("editdests"); |
else |
return mapping.findForward("view"); |
} |
} |
else { |