/* * HeadsUp Agile * Copyright 2009-2014 Heads Up Development Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.headsupdev.agile.app.dashboard; import org.apache.wicket.PageParameters; import org.apache.wicket.ResourceReference; import org.apache.wicket.markup.html.CSSPackageResource; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.headsupdev.agile.web.components.GravatarLinkPanel; import org.headsupdev.agile.api.Permission; import org.headsupdev.agile.api.User; import org.headsupdev.agile.app.dashboard.permission.MemberListPermission; import org.headsupdev.agile.web.HeadsUpPage; import org.headsupdev.agile.web.HeadsUpSession; import org.headsupdev.agile.web.MountPoint; import java.util.Collections; import java.util.List; /** * A simple members page, listing the current members. * * @author Andrew Williams * @version $Id$ * @since 1.0 */ @MountPoint("accounts") public class Accounts extends HeadsUpPage { public Permission getRequiredPermission() { return new MemberListPermission(); } private static final int ICON_EDGE_LENGTH = 64; public void layout() { super.layout(); add( CSSPackageResource.getHeaderContribution( getClass(), "welcome.css" ) ); List<org.headsupdev.agile.api.User> users = getSecurityManager().getUsers(); Collections.sort( users ); add( new ListView<User>( "users", users ) { protected void populateItem( ListItem<User> listItem ) { User user = listItem.getModelObject(); if ( !user.canLogin() ) { listItem.setVisible( false ); return; } if ( user.equals( HeadsUpSession.ANONYMOUS_USER ) ) { listItem.setVisible( false ); return; } listItem.add( new Label( "fullname", user.getFullname() ) ); PageParameters params = new PageParameters(); params.add( "username", user.getUsername() ); params.add( "silent", "true" ); BookmarkablePageLink link = new BookmarkablePageLink( "user-link", getPageClass( "account" ), params ); link.add( new Image( "activity", new ResourceReference( "member.png" ), params ) ); listItem.add( link ); link = new BookmarkablePageLink( "user-link2", getPageClass( "account" ), params ); link.add( new Label( "user-label", user.getUsername() ) ); listItem.add( link ); listItem.add( new GravatarLinkPanel( "gravatar" , user, ICON_EDGE_LENGTH ) ); } } ); } @Override public String getTitle() { return "Accounts"; } }