X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FEditProfileFieldPage.java;h=1b64b08857b4e26d69a5d27fd3de38b62f998b8d;hb=043b045d6e3f3908597d789606368d0b08ef6a59;hp=2b72a818579229b612e54daacc34bbe3d315e115;hpb=396fc01133dbcb6dfe48bec4e5263b6240407449;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/web/EditProfileFieldPage.java b/src/main/java/net/pterodactylus/sone/web/EditProfileFieldPage.java index 2b72a81..1b64b08 100644 --- a/src/main/java/net/pterodactylus/sone/web/EditProfileFieldPage.java +++ b/src/main/java/net/pterodactylus/sone/web/EditProfileFieldPage.java @@ -18,9 +18,9 @@ package net.pterodactylus.sone.web; import net.pterodactylus.sone.data.Profile; +import net.pterodactylus.sone.data.Profile.Field; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.web.page.Page.Request.Method; -import net.pterodactylus.util.number.Numbers; import net.pterodactylus.util.template.DataProvider; import net.pterodactylus.util.template.Template; @@ -57,15 +57,10 @@ public class EditProfileFieldPage extends SoneTemplatePage { Profile profile = currentSone.getProfile(); /* get parameters from request. */ - int fieldIndex = Numbers.safeParseInteger(request.getHttpRequest().getParam("field"), -1); - if (fieldIndex >= currentSone.getProfile().getFieldNames().size()) { - fieldIndex = -1; - } - String fieldName = null; - String fieldValue = null; - if (fieldIndex > -1) { - fieldName = profile.getFieldNames().get(fieldIndex); - fieldValue = profile.getField(fieldName); + String fieldId = request.getHttpRequest().getParam("field"); + Field field = profile.getFieldById(fieldId); + if (field == null) { + throw new RedirectException("invalid.html"); } /* process the POST request. */ @@ -73,14 +68,15 @@ public class EditProfileFieldPage extends SoneTemplatePage { if (request.getHttpRequest().getPartAsStringFailsafe("cancel", 4).equals("true")) { throw new RedirectException("editProfile.html#profile-fields"); } - fieldIndex = Numbers.safeParseInteger(request.getHttpRequest().getPartAsStringFailsafe("field", 11), -1); - String name = request.getHttpRequest().getPartAsStringFailsafe("name", 256); - if (fieldIndex == -1) { + fieldId = request.getHttpRequest().getPartAsStringFailsafe("field", 36); + field = profile.getFieldById(fieldId); + if (field == null) { throw new RedirectException("invalid.html"); } - int existingFieldIndex = profile.getFieldNames().indexOf(name); - if ((existingFieldIndex == -1) || (existingFieldIndex == fieldIndex)) { - profile.setFieldName(fieldIndex, name); + String name = request.getHttpRequest().getPartAsStringFailsafe("name", 256); + Field existingField = profile.getFieldByName(name); + if ((existingField == null) || (existingField.equals(field))) { + field.setName(name); currentSone.setProfile(profile); throw new RedirectException("editProfile.html#profile-fields"); } @@ -88,9 +84,7 @@ public class EditProfileFieldPage extends SoneTemplatePage { } /* store current values in template. */ - dataProvider.set("fieldIndex", fieldIndex); - dataProvider.set("fieldName", fieldName); - dataProvider.set("fieldValue", fieldValue); + dataProvider.set("field", field); } }