Jens Pelzetter 2020-10-03 19:00:23 +02:00
parent 0482a1e7ec
commit bd7fa4bbec
5 changed files with 68 additions and 34 deletions

View File

@ -74,17 +74,17 @@ public class EmailFormController {
@Inject @Inject
private UserRepository userRepository; private UserRepository userRepository;
@MvcBinding // @MvcBinding
@FormParam("address") // @FormParam("address")
@NotBlank // @NotBlank
@Email // @Email
private String address; // private String address;
//
@FormParam("bouncing") // @FormParam("bouncing")
private boolean bouncing; // private boolean bouncing;
//
@FormParam("verified") // @FormParam("verified")
private boolean verified; // private boolean verified;
@GET @GET
@Path("/new") @Path("/new")
@ -94,6 +94,10 @@ public class EmailFormController {
public String getNewEmailAddressForm( public String getNewEmailAddressForm(
@PathParam("userIdentifier") final String userIdentifierParam @PathParam("userIdentifier") final String userIdentifierParam
) { ) {
emailFormModel.setUserIdentifier(userIdentifierParam);
emailFormModel.setAddress("example@example.org");
emailFormModel.setBouncing(false);
emailFormModel.setVerified(false);
return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml"; return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
} }
@ -129,9 +133,9 @@ public class EmailFormController {
final User user = result.get(); final User user = result.get();
final EmailAddress emailAddress = new EmailAddress(); final EmailAddress emailAddress = new EmailAddress();
emailAddress.setAddress(address); emailAddress.setAddress(emailFormModel.getAddress());
emailAddress.setBouncing(bouncing); emailAddress.setBouncing(emailAddress.isBouncing());
emailAddress.setVerified(verified); emailAddress.setVerified(emailFormModel.isVerified());
user.addEmailAddress(emailAddress); user.addEmailAddress(emailAddress);
userRepository.save(user); userRepository.save(user);
@ -194,6 +198,7 @@ public class EmailFormController {
final EmailAddress emailAddress = user final EmailAddress emailAddress = user
.getEmailAddresses() .getEmailAddresses()
.get(emailId); .get(emailId);
emailFormModel.setEmailId(emailId);
emailFormModel.setAddress(emailAddress.getAddress()); emailFormModel.setAddress(emailAddress.getAddress());
emailFormModel.setBouncing(emailAddress.isBouncing()); emailFormModel.setBouncing(emailAddress.isBouncing());
emailFormModel.setVerified(emailAddress.isVerified()); emailFormModel.setVerified(emailAddress.isVerified());
@ -213,7 +218,7 @@ public class EmailFormController {
return "org/libreccm/ui/admin/users-groups-roles/user-not-found.xhtml"; return "org/libreccm/ui/admin/users-groups-roles/user-not-found.xhtml";
} }
} }
@POST @POST
@Path("/{emailId}") @Path("/{emailId}")
@AuthorizationRequired @AuthorizationRequired
@ -254,13 +259,13 @@ public class EmailFormController {
final EmailAddress emailAddress = user final EmailAddress emailAddress = user
.getEmailAddresses() .getEmailAddresses()
.get(emailId); .get(emailId);
emailAddress.setAddress(address); emailAddress.setAddress(emailFormModel.getAddress());
emailAddress.setBouncing(bouncing); emailAddress.setBouncing(emailFormModel.isBouncing());
emailAddress.setVerified(verified); emailAddress.setVerified(emailFormModel.isVerified());
userRepository.save(user); userRepository.save(user);
return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml"; return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
} }
} else { } else {

View File

@ -27,27 +27,52 @@ import javax.inject.Named;
* *
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/ */
@RequestScoped @RequestScoped
@Named("EmailFormModel") @Named("EmailFormModel")
public class EmailFormModel { public class EmailFormModel {
private String userIdentifier;
private int emailId;
private String address; private String address;
private boolean bouncing; private boolean bouncing;
private boolean verified; private boolean verified;
public void setEmailAddress(final EmailAddress emailAddress) { public void setEmailAddress(
final String userIdentifier,
final int emailId,
final EmailAddress emailAddress
) {
this.userIdentifier = userIdentifier;
this.emailId = emailId;
address = emailAddress.getAddress(); address = emailAddress.getAddress();
bouncing = emailAddress.isBouncing(); bouncing = emailAddress.isBouncing();
verified = emailAddress.isVerified(); verified = emailAddress.isVerified();
} }
public boolean isNew() { public boolean isNew() {
return address == null; return emailId == 0;
}
public String getUserIdentifier() {
return userIdentifier;
}
public void setUserIdentifier(final String userIdentifier) {
this.userIdentifier = userIdentifier;
} }
public int getEmailId() {
return emailId;
}
public void setEmailId(final int emailId) {
this.emailId = emailId;
}
public String getAddress() { public String getAddress() {
return address; return address;
} }
@ -71,6 +96,7 @@ public class EmailFormModel {
public void setVerified(boolean verified) { public void setVerified(boolean verified) {
this.verified = verified; this.verified = verified;
} }
} }

View File

@ -41,6 +41,7 @@ public class UsersGroupsRolesPage implements AdminPage {
classes.add(RolesController.class); classes.add(RolesController.class);
classes.add(UsersController.class); classes.add(UsersController.class);
classes.add(UserFormController.class); classes.add(UserFormController.class);
classes.add(EmailFormController.class);
return classes; return classes;
} }

View File

@ -25,7 +25,7 @@
#{UserDetailsModel.name} #{UserDetailsModel.name}
</a> </a>
</li> </li>
<li class=breadcrumb-item active"> <li class="breadcrumb-item active">
#{EmailFormModel.new ? AdminMessages['usersgroupsroles.users.breadcrumbs.email.add'] : AdminMessages['usersgroupsroles.users.breadcrumbs.email.edit']} #{EmailFormModel.new ? AdminMessages['usersgroupsroles.users.breadcrumbs.email.add'] : AdminMessages['usersgroupsroles.users.breadcrumbs.email.edit']}
</li> </li>
</ui:define> </ui:define>
@ -36,7 +36,7 @@
#{error} #{error}
</div> </div>
</c:forEach> </c:forEach>
<form action="#{EmailFormModel.new ? mvc.uri('EmailFormController#addNewEmailAddress') : mvc.uri('EmailFormController#updateEmailAddress')}" <form action="#{EmailFormModel.new ? mvc.uri('EmailFormController#addNewEmailAddress', {'userIdentifier': EmailFormModel.userIdentifier }) : mvc.uri('EmailFormController#updateEmailAddress', { 'userIdentifier': EmailFormController.userIdentifier, 'emailId': EmailFormModel.emailId })}"
method="post"> method="post">
<div class="form-group"> <div class="form-group">
<label for="address"> <label for="address">

View File

@ -136,7 +136,8 @@
#{AdminMessages['usergroupsroles.users.user_details.additional_email_addresses.heading']} #{AdminMessages['usergroupsroles.users.user_details.additional_email_addresses.heading']}
</h2> </h2>
<div> <div>
<a class="btn btn-primary" href="#"> <a class="btn btn-primary"
href="#{mvc.uri('EmailFormController#getNewEmailAddressForm', {'userIdentifier': UserDetailsModel.name })}">
<svg class="bi" <svg class="bi"
width="1em" width="1em"
height="1em" height="1em"
@ -193,7 +194,8 @@
</c:choose> </c:choose>
</td> </td>
<td> <td>
<a class="btn btn-info" href="#"> <a class="btn btn-info"
href="#{mvc.uri('UsersController#removeEmailAddress', { 'userIdentifier': UserDetailsModel.name, 'emailId': status.index })}">
<svg class="bi" <svg class="bi"
width="1em" width="1em"
height="1em" height="1em"
@ -223,7 +225,7 @@
id="confirm-remove-#{status.index}" id="confirm-remove-#{status.index}"
tabindex="-1"> tabindex="-1">
<div class="modal-dialog"> <div class="modal-dialog">
<form action="#{mvc.uri('UsersController#removeEmailAddress', { 'userIdentifier': UserDetailsModel.name, 'emailId': status.index })}" <form action="#"
class="modal-content" class="modal-content"
method="post"> method="post">
<div class="modal-header"> <div class="modal-header">