package org.cacert.gigi.output;
+import org.cacert.gigi.PermissionCheckable;
+
/**
* Markerinterface for an {@link Outputable} speicially used in a {@link Menu}.
*
* @author janis
*/
-public interface IMenuItem extends Outputable {
- // Nothing to see here.
+public interface IMenuItem extends Outputable, PermissionCheckable {
}
import java.util.LinkedList;
import java.util.Map;
+import org.cacert.gigi.User;
import org.cacert.gigi.localisation.Language;
public class Menu implements IMenuItem {
@Override
public void output(PrintWriter out, Language l, Map<String, Object> vars) {
- out.println("<div>");
- out.print("<h3>+ ");
- out.print(l.getTranslation(menuName));
- out.print("</h3>");
- out.print("<ul class=\"menu\" id=\"");
- out.print(id);
- out.print("\">");
- for (Outputable mi : content) {
- mi.output(out, l, vars);
+ boolean visible = false;
+ User u = (User) vars.get(USER_VALUE);
+ for (IMenuItem mi : content) {
+ if (mi.isPermitted(u)) {
+ if ( !visible) {
+ visible = true;
+ out.println("<div>");
+ out.print("<h3>+ ");
+ out.print(l.getTranslation(menuName));
+ out.print("</h3>");
+ out.print("<ul class=\"menu\" id=\"");
+ out.print(id);
+ out.print("\">");
+ }
+ mi.output(out, l, vars);
+ }
+ }
+ if (visible) {
+ out.println("</ul></div>");
}
- out.println("</ul></div>");
}
public void addItem(IMenuItem item) {
public String getMenuName() {
return menuName;
}
+
+ @Override
+ public boolean isPermitted(User u) {
+ return true;
+ }
}
package org.cacert.gigi.output;
-import java.io.PrintWriter;
-import java.util.Map;
-
import org.cacert.gigi.Gigi;
import org.cacert.gigi.User;
-import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.pages.Page;
import org.cacert.gigi.util.ServerConstants;
}
@Override
- public void output(PrintWriter out, Language l, Map<String, Object> vars) {
- if (p.isPermitted((User) vars.get(Menu.USER_VALUE))) {
- super.output(out, l, vars);
- }
+ public boolean isPermitted(User u) {
+ return p.isPermitted(u);
}
}
import java.io.PrintWriter;
import java.util.Map;
+import org.cacert.gigi.User;
import org.cacert.gigi.localisation.Language;
public class SimpleMenuItem implements IMenuItem {
out.print("</a></li>");
}
+ @Override
+ public boolean isPermitted(User u) {
+ return true;
+ }
+
}