package hu.sch.web.profile.show; import hu.sch.domain.user.IMAccount; import hu.sch.domain.user.User; import hu.sch.domain.user.UserAttributeName; import hu.sch.web.kp.user.ShowUser; import hu.sch.web.kp.user.UserHistory; import hu.sch.web.profile.ProfilePage; import hu.sch.web.profile.admin.AdminPage; import hu.sch.web.wicket.components.ProfileImageResource; import hu.sch.web.wicket.components.customlinks.SearchLink; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Locale; import org.apache.commons.lang3.StringUtils; import org.apache.wicket.RestartResponseException; import org.apache.wicket.extensions.markup.html.basic.SmartLinkLabel; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.NonCachingImage; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; /** * Homepage */ public class ShowPersonPage extends ProfilePage { private User user; public ShowPersonPage() { user = userManager.findUserByScreenName(getRemoteUser()); bindPerson(); } public ShowPersonPage(PageParameters params) { String uid = params.get("uid").toString(); long virid = params.get("virid").toLong(-1); if ((uid == null && virid == -1) || (uid != null && virid != -1)) { // ha se uid se virid, vagy mindkettő meg van adva, akkor nem játszunk getSession().error("A felhasználó nem található!"); throw new RestartResponseException(getApplication().getHomePage()); } // vagy uid alapján vagy virid alapján keresünk usert if (uid != null) { user = userManager.findUserByScreenName(uid); } else { user = userManager.findUserById(virid); } if (user != null) { bindPerson(); } else { getSession().error("A felhasználó nem található!"); throw new RestartResponseException(getApplication().getHomePage()); } } private void bindPerson() { setDefaultModel(new CompoundPropertyModel<>(user)); setHeaderLabelText(user.getFullName()); PageParameters params = new PageParameters().add("id", user.getId()); add(new BookmarkablePageLink("simpleView", ShowUser.class, params)); add(new BookmarkablePageLink("detailView", UserHistory.class, params)); Link<AdminPage> adminLink = new BookmarkablePageLink<>("adminLink", AdminPage.class, new PageParameters().add("uid", user.getScreenName())); if (!isCurrentUserAdmin()) { adminLink.setVisible(false); } add(adminLink); add(new SmartLinkLabel("emailAddress") { @Override public boolean isVisible() { return user.isAttributeVisible(UserAttributeName.EMAIL) && user.getEmailAddress() != null; } }); List<IMAccount> imList = new ArrayList<>(); imList.addAll(user.getImAccounts()); add(new ListView<IMAccount>("ims", imList) { @Override protected void populateItem(ListItem<IMAccount> item) { final IMAccount acc = item.getModelObject(); item.add(new Label("imProtocol", new PropertyModel<IMAccount>(acc, "protocol"))); item.add(new Label("imAccountName", new PropertyModel<IMAccount>(acc, "accountName"))); } }); add(new Label("cellPhone") { @Override public boolean isVisible() { return user.isAttributeVisible(UserAttributeName.CELL_PHONE) && user.getCellPhone() != null; } }); add(new Label("webpage") { @Override public boolean isVisible() { return user.isAttributeVisible(UserAttributeName.WEBPAGE) && user.getWebpage() != null; } }); add(new SearchLink("fullRoomNumber", SearchLink.USER_TYPE, user.getFullRoomNumber()) { @Override public boolean isVisible() { return user.isAttributeVisible(UserAttributeName.ROOM_NUMBER) && !StringUtils.isBlank(user.getFullRoomNumber()); } }); add(new Label("nickName") { @Override public boolean isVisible() { return user.getNickName() != null; } }); add(new Label("homeAddress") { @Override public boolean isVisible() { return user.isAttributeVisible(UserAttributeName.HOME_ADDRESS) && user.getHomeAddress()!= null; } }); String labelText = user.getDateOfBirth() == null ? null : new SimpleDateFormat("yyyy. MMMM dd.", new Locale("hu")) .format(user.getDateOfBirth()); Label dateOfBirth = new Label("dateOfBirth", labelText) { @Override public boolean isVisible() { return user.isAttributeVisible(UserAttributeName.DATE_OF_BIRTH) && user.getDateOfBirth() != null; } }; add(dateOfBirth); NonCachingImage photo = new NonCachingImage("photo", new AbstractReadOnlyModel<ProfileImageResource>() { @Override public ProfileImageResource getObject() { return new ProfileImageResource(user); } }); photo.setVisible(user.getPhotoPath()!= null); add(photo); } }