From a995a3619a629d010f2ab8ebd053f44547b3ff3b Mon Sep 17 00:00:00 2001 From: INOPIAE Date: Thu, 18 Aug 2016 11:47:30 +0200 Subject: [PATCH] add: show assigned groups to an account in My Detail fixes issue #114 Change-Id: I2072080316247b6fca283cf548c4418da63ab8fc --- src/org/cacert/gigi/output/GroupIterator.java | 37 +++++++++++++++++++ src/org/cacert/gigi/output/GroupSelector.java | 6 ++- .../gigi/pages/account/MyDetailsForm.java | 12 ++++++ .../gigi/pages/account/MyDetailsRoles.templ | 9 +++++ .../admin/support/SupportUserDetailsForm.java | 19 ++-------- .../support/SupportUserDetailsForm.templ | 11 +++++- 6 files changed, 74 insertions(+), 20 deletions(-) create mode 100644 src/org/cacert/gigi/output/GroupIterator.java create mode 100644 src/org/cacert/gigi/pages/account/MyDetailsRoles.templ diff --git a/src/org/cacert/gigi/output/GroupIterator.java b/src/org/cacert/gigi/output/GroupIterator.java new file mode 100644 index 00000000..4e35db48 --- /dev/null +++ b/src/org/cacert/gigi/output/GroupIterator.java @@ -0,0 +1,37 @@ +package org.cacert.gigi.output; + +import java.util.Iterator; +import java.util.Map; + +import org.cacert.gigi.dbObjects.Group; +import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.template.IterableDataset; + +public class GroupIterator implements IterableDataset { + + private final boolean asSupport; + + private final Iterator i; + + public GroupIterator(Iterator i, boolean asSupport) { + this.asSupport = asSupport; + this.i = i; + } + + private int j = 0; + + @Override + public boolean next(Language l, Map vars) { + while (i.hasNext()) { + Group g = i.next(); + if (g.isManagedBySupport() == asSupport) { + vars.put("group_concat", (j > 0 ? ", " : "")); + vars.put("group", g.getName()); + j++; + return true; + } + } + + return false; + } +} diff --git a/src/org/cacert/gigi/output/GroupSelector.java b/src/org/cacert/gigi/output/GroupSelector.java index f65fab75..66236e16 100644 --- a/src/org/cacert/gigi/output/GroupSelector.java +++ b/src/org/cacert/gigi/output/GroupSelector.java @@ -39,11 +39,13 @@ public class GroupSelector implements Outputable { out.println(""); diff --git a/src/org/cacert/gigi/pages/account/MyDetailsForm.java b/src/org/cacert/gigi/pages/account/MyDetailsForm.java index a8ca49fc..d6b65e01 100644 --- a/src/org/cacert/gigi/pages/account/MyDetailsForm.java +++ b/src/org/cacert/gigi/pages/account/MyDetailsForm.java @@ -2,16 +2,19 @@ package org.cacert.gigi.pages.account; import java.io.PrintWriter; import java.util.Map; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.cacert.gigi.GigiApiException; +import org.cacert.gigi.dbObjects.Group; import org.cacert.gigi.dbObjects.Name; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.ArrayIterable; import org.cacert.gigi.output.CountrySelector; import org.cacert.gigi.output.DateSelector; +import org.cacert.gigi.output.GroupIterator; import org.cacert.gigi.output.NameInput; import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.Template; @@ -25,6 +28,8 @@ public class MyDetailsForm extends Form { private static final Template names = new Template(MyDetailsForm.class.getResource("NamesForm.templ")); + private static final Template roles = new Template(MyDetailsForm.class.getResource("MyDetailsRoles.templ")); + private User target; private DateSelector ds; @@ -131,7 +136,13 @@ public class MyDetailsForm extends Form { }); vars.put("name", ni); + final Set gr = target.getGroups(); names.output(out, l, vars); + + vars.put("support-groups", new GroupIterator(gr.iterator(), true)); + vars.put("groups", new GroupIterator(gr.iterator(), false)); + roles.output(out, l, vars); + vars.put("residenceCountry", cs); if (target.getReceivedAssurances().length == 0) { vars.put("DoB", ds); @@ -140,6 +151,7 @@ public class MyDetailsForm extends Form { vars.put("DoB", target.getDoB()); assured.output(out, l, vars); } + } } diff --git a/src/org/cacert/gigi/pages/account/MyDetailsRoles.templ b/src/org/cacert/gigi/pages/account/MyDetailsRoles.templ new file mode 100644 index 00000000..d01dd3f4 --- /dev/null +++ b/src/org/cacert/gigi/pages/account/MyDetailsRoles.templ @@ -0,0 +1,9 @@ +
+
+
+

:

+ +

:

+ +
+
\ No newline at end of file diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java index df784058..28597ca2 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java @@ -1,7 +1,6 @@ package org.cacert.gigi.pages.admin.support; import java.io.PrintWriter; -import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -15,9 +14,9 @@ import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.ArrayIterable; import org.cacert.gigi.output.DateSelector; +import org.cacert.gigi.output.GroupIterator; import org.cacert.gigi.output.GroupSelector; import org.cacert.gigi.output.template.Form; -import org.cacert.gigi.output.template.IterableDataset; import org.cacert.gigi.output.template.Outputable; import org.cacert.gigi.output.template.SprintfCommand; import org.cacert.gigi.output.template.Template; @@ -107,20 +106,8 @@ public class SupportUserDetailsForm extends Form { vars.put("assurancepoints", user.getAssurancePoints()); vars.put("exppoints", user.getExperiencePoints()); final Set gr = user.getGroups(); - vars.put("groups", new IterableDataset() { - - Iterator i = gr.iterator(); - - @Override - public boolean next(Language l, Map vars) { - if ( !i.hasNext()) { - return false; - } - Group g = i.next(); - vars.put("group_name", g.getName()); - return true; - } - }); + vars.put("support-groups", new GroupIterator(gr.iterator(), true)); + vars.put("groups", new GroupIterator(gr.iterator(), false)); vars.put("groupSelector", value); t.output(out, l, vars); } diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.templ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.templ index e259cd26..ced40d83 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.templ +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.templ @@ -42,11 +42,18 @@ - : -

,

+ : +

+ + + : +

+ + + : -- 2.39.2