/** * Copyright SocialSite (C) 2009 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.socialsite; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.authorization.strategies.role.Roles; import org.apache.wicket.markup.html.IHeaderContributor; import org.apache.wicket.markup.html.IHeaderResponse; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.apache.wicket.spring.injection.annot.SpringBean; import com.socialsite.dao.UserDao; import com.socialsite.persistence.User; /** * BasePanel for the socialsite * * @author Ananth */ public class BasePanel extends Panel implements IHeaderContributor { private static final long serialVersionUID = 1L; /** spring dao to access the user object */ @SpringBean(name = "userDao") private UserDao<User> userDao; /** * constructor * * @param id * id */ public BasePanel(final String id) { super(id); } /** * constructor * * @param id * id * @param model * model */ public BasePanel(final String id, final IModel<?> model) { super(id, model); } /** * fires a event with the collection of all the updated dom elements after * the wicket ajax response. To subscribe the event call the * <code>SocialSite.Ajax.registerPostAjax</code>. Your callback function * will be called with a jQuery Wrapped set of all the update dom as the * first argument. * * NOTE: call this only once after all the components are added to the * target * * * @param target * ajax target */ public void firePostAjaxUpdateEvent(final AjaxRequestTarget target) { final StringBuffer script = new StringBuffer(" SocialSite.Ajax.handle(["); for (final Component component : target.getComponents()) { script.append("\"" + component.getMarkupId() + "\","); } script.append("])"); target.getHeaderResponse().renderOnDomReadyJavascript(script.toString()); } /** * helper to get the roles of the session user * * @return roles of the session user */ public Roles getRoles() { return SocialSiteSession.get().getSessionUser().getRoles(); } /** * gets the domain model object of the the user in the session * * @return user */ public User getSessionUser() { return userDao.load(getSessionUserId()); } /** * gets the id of the session user * * @return id of the session user */ public long getSessionUserId() { return SocialSiteSession.get().getSessionUser().getId(); } /** * gets the domain model object of the the user (current page) * * @return user */ public User getUser() { return userDao.load(getUserId()); } /** * gets the user id(the visitor id) * * @return visitor id */ public long getUserId() { return SocialSiteSession.get().getUserId(); } /** * helper to check the role * * @param role * role */ public boolean hasRole(final String role) { return SocialSiteSession.get().getSessionUser().hasRole(role); } public void renderHead(final IHeaderResponse response) { } /** * set the user id in the session and also sets the roles in the session * * @param userId * user id */ public void setUserId(final long userId) { final SocialSiteSession session = SocialSiteSession.get(); // set the user id session.setUserId(userId); // set the roles session.getSessionUser().setRoles( userDao.getUsersRelation(userId, session.getSessionUser().getId())); } }