Commit 723eeb02 by Tuomas Riihimäki

Merge branch 'devel' of codecrew.fi:bortal into devel

2 parents 703de789 68240770
...@@ -27,6 +27,7 @@ public class BootstrapBean implements BootstrapBeanLocal { ...@@ -27,6 +27,7 @@ public class BootstrapBean implements BootstrapBeanLocal {
static { static {
// {"Query1","Query2",...} // {"Query1","Query2",...}
dbUpdates.add(new String[] { "" }); // first version, no changes dbUpdates.add(new String[] { "" }); // first version, no changes
dbUpdates.add(new String[] { "ALTER TABLE tournaments ADD COLUMN game integer NOT NULL REFERENCES tournament_games(id)" });
// dbUpdates.add(new String[] { "ALTER TABLE users ALTER COLUMN birthday TYPE date" }); // dbUpdates.add(new String[] { "ALTER TABLE users ALTER COLUMN birthday TYPE date" });
} }
......
...@@ -116,7 +116,8 @@ public class MenuBean implements MenuBeanLocal { ...@@ -116,7 +116,8 @@ public class MenuBean implements MenuBeanLocal {
MenuNavigation userprofile = usermenu.addPage(null, null); MenuNavigation userprofile = usermenu.addPage(null, null);
userprofile.setKey("topnavi.profile"); userprofile.setKey("topnavi.profile");
userprofile.addPage(menuitemfacade.findOrCreate("/user/edit"), UserPermission.MODIFY); userprofile.addPage(menuitemfacade.findOrCreate("/user/edit"), UserPermission.MODIFY);
userprofile.addPage(menuitemfacade.findOrCreate("/user/changePassword"), UserPermission.VIEW_SELF);
userprofile.addPage(menuitemfacade.findOrCreate("/auth/logout"), UserPermission.LOGOUT); userprofile.addPage(menuitemfacade.findOrCreate("/auth/logout"), UserPermission.LOGOUT);
/* /*
...@@ -195,6 +196,12 @@ public class MenuBean implements MenuBeanLocal { ...@@ -195,6 +196,12 @@ public class MenuBean implements MenuBeanLocal {
adminPlaces.addPage(menuitemfacade.findOrCreate("/place/adminPlacemap"), UserPermission.VIEW_ALL); adminPlaces.addPage(menuitemfacade.findOrCreate("/place/adminPlacemap"), UserPermission.VIEW_ALL);
// adminPlaces.addPage(menuitemfacade.findOrCreate("/place/adminGroups"), UserPermission.VIEW_ALL); // todo: make new view for managing // adminPlaces.addPage(menuitemfacade.findOrCreate("/place/adminGroups"), UserPermission.VIEW_ALL); // todo: make new view for managing
MenuNavigation mapnavi = adminPlaces.addPage(null, null);
mapnavi.setKey("topnavi.maps");
mapnavi.addPage(menuitemfacade.findOrCreate("/map/list"), MapPermission.MANAGE_MAPS);
mapnavi.addPage(menuitemfacade.findOrCreate("/map/create"), MapPermission.MANAGE_MAPS);
mapnavi.addPage(menuitemfacade.findOrCreate("/map/edit"), null).setVisible(false);
// event // event
MenuNavigation adminevent = adminmenu.addPage(null, null); MenuNavigation adminevent = adminmenu.addPage(null, null);
......
...@@ -8,7 +8,7 @@ import javax.ejb.Stateless; ...@@ -8,7 +8,7 @@ import javax.ejb.Stateless;
*/ */
@Stateless @Stateless
@LocalBean @LocalBean
public class TournamentBean { public class TournamentBean implements TournamentBeanLocal {
/** /**
* Default constructor. * Default constructor.
...@@ -16,6 +16,5 @@ public class TournamentBean { ...@@ -16,6 +16,5 @@ public class TournamentBean {
public TournamentBean() { public TournamentBean() {
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
} }
...@@ -642,6 +642,12 @@ public class UserBean implements UserBeanLocal { ...@@ -642,6 +642,12 @@ public class UserBean implements UserBeanLocal {
} }
@Override @Override
@RolesAllowed(SpecialPermission.S_SUPERADMIN)
public List<Feedback> getFeedbacks() {
return feedbackFacade.findAll();
}
@Override
public UserApproval setUserApproval(EventUser user, String approvalName, boolean approvalValue, String notes) { public UserApproval setUserApproval(EventUser user, String approvalName, boolean approvalValue, String notes) {
Approval approval = approvalFacade.findOrCreate(approvalName); Approval approval = approvalFacade.findOrCreate(approvalName);
UserApproval ret = userApprovalFacade.findOrCreateApproval(user, approval); UserApproval ret = userApprovalFacade.findOrCreateApproval(user, approval);
......
...@@ -5,6 +5,7 @@ import javax.ejb.Stateless; ...@@ -5,6 +5,7 @@ import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
...@@ -39,7 +40,9 @@ public class DBModelFacade extends GenericFacade<DBModel> { ...@@ -39,7 +40,9 @@ public class DBModelFacade extends GenericFacade<DBModel> {
CriteriaQuery<DBModel> cq = cb.createQuery(DBModel.class); CriteriaQuery<DBModel> cq = cb.createQuery(DBModel.class);
Root<DBModel> root = cq.from(DBModel.class); Root<DBModel> root = cq.from(DBModel.class);
cq.orderBy(cb.desc(root.get(DBModel_.revision))); cq.orderBy(cb.desc(root.get(DBModel_.revision)));
return getSingleNullableResult(getEm().createQuery(cq)); TypedQuery<DBModel> q = getEm().createQuery(cq);
q.setMaxResults(1);
return getSingleNullableResult(q);
} }
@PersistenceContext @PersistenceContext
......
package fi.codecrew.moya.beans;
import javax.ejb.Local;
@Local
public interface TournamentBeanLocal {
}
...@@ -7,6 +7,7 @@ import java.util.List; ...@@ -7,6 +7,7 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Feedback;
import fi.codecrew.moya.model.GroupMembership; import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.Role; import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.User; import fi.codecrew.moya.model.User;
...@@ -83,6 +84,8 @@ public interface UserBeanLocal { ...@@ -83,6 +84,8 @@ public interface UserBeanLocal {
SearchResult<EventUser> getThisEventsUsers(UserSearchQuery searchQuery); SearchResult<EventUser> getThisEventsUsers(UserSearchQuery searchQuery);
void submitFeedback(String feedback); void submitFeedback(String feedback);
List<Feedback> getFeedbacks();
UserApproval setUserApproval(EventUser user, String approvalName, boolean approvalValue, String notes); UserApproval setUserApproval(EventUser user, String approvalName, boolean approvalValue, String notes);
......
...@@ -60,6 +60,9 @@ public class Tournament extends GenericEntity implements Serializable { ...@@ -60,6 +60,9 @@ public class Tournament extends GenericEntity implements Serializable {
@Column(name="players_per_team") @Column(name="players_per_team")
private Integer playersPerTeam; private Integer playersPerTeam;
@JoinColumn(name="game", nullable=false)
private TournamentGame tournamentGame;
@OneToMany @OneToMany
@OrderBy("id ASC") @OrderBy("id ASC")
private List<Tournament> subTournaments; private List<Tournament> subTournaments;
...@@ -105,4 +108,12 @@ public class Tournament extends GenericEntity implements Serializable { ...@@ -105,4 +108,12 @@ public class Tournament extends GenericEntity implements Serializable {
public void setTournamentType(TournamentType tournamentType) { public void setTournamentType(TournamentType tournamentType) {
this.tournamentType = tournamentType; this.tournamentType = tournamentType;
} }
public TournamentGame getTournamentGame() {
return tournamentGame;
}
public void setTournamentGame(TournamentGame tournamentGame) {
this.tournamentGame = tournamentGame;
}
} }
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:users="http://java.sun.com/jsf/composite/tools/user" xmlns:p="http://primefaces.org/ui" xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="#{sessionHandler.template}">
<ui:param name="thispage" value="page.feedback.list" />
<f:metadata>
<f:event type="preRenderView" listener="#{feedbackView.initFeedback}" />
</f:metadata>
<ui:define name="content">
<h1>Avautumiset:</h1>
<p:dataList value="#{feedbackView.feedbacks}" var="feedback">
#{feedback.message}, #{feedback.sender.user.nick}
</p:dataList>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jsp/jstl/core" <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:f="http://java.sun.com/jsf/core"> xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui">
<h:body> <h:body>
<ui:composition template="#{sessionHandler.template}"> <ui:composition template="#{sessionHandler.template}">
<ui:param name="thispage" value="page.place.mygroups" /> <ui:param name="thispage" value="page.place.mygroups" />
...@@ -18,41 +18,41 @@ ...@@ -18,41 +18,41 @@
<h:outputText rendered="#{empty placeGroupView.groupMemberships}" value="#{i18n['placegroupview.noMemberships']}" /> <h:outputText rendered="#{empty placeGroupView.groupMemberships}" value="#{i18n['placegroupview.noMemberships']}" />
<h:form rendered="#{!empty placeGroupView.groupMemberships}" id="placelistform"> <h:form rendered="#{!empty placeGroupView.groupMemberships}" id="placelistform">
<h:dataTable value="#{placeGroupView.groupMemberships}" var="member"> <p:dataTable value="#{placeGroupView.groupMemberships}" var="member">
<h:column> <p:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['placegroupview.reservationName']}" /> <h:outputText value="#{i18n['placegroupview.reservationName']}" />
</f:facet> </f:facet>
<h:outputText value="#{member.placeReservation.name}" /> <h:outputText value="#{member.placeReservation.name}" />
</h:column> </p:column>
<h:column> <p:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['placegroupview.reservationProduct']}" /> <h:outputText value="#{i18n['placegroupview.reservationProduct']}" />
</f:facet> </f:facet>
<h:outputText value="#{member.placeReservation.product.name}" /> <h:outputText value="#{member.placeReservation.product.name}" />
</h:column> </p:column>
<h:column> <p:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['placegroupview.token']}" /> <h:outputText value="#{i18n['placegroupview.token']}" />
</f:facet> </f:facet>
<h:outputText rendered="#{empty member.user}" value="#{member.inviteToken}" /> <h:outputText rendered="#{empty member.user}" value="#{member.inviteToken}" />
<h:outputText rendered="#{!empty member.user}" value="#{member.user.firstnames} #{member.user.lastname} (#{member.user.nick})" /> <h:outputText rendered="#{!empty member.user}" value="#{member.user.firstnames} #{member.user.lastname} (#{member.user.nick})" />
</h:column> </p:column>
<h:column> <p:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['placegroupview.groupCreator']}" /> <h:outputText value="#{i18n['placegroupview.groupCreator']}" />
</f:facet> </f:facet>
<h:outputText value="#{member.placeGroup.creator.firstnames} #{member.placeGroup.creator.lastname} (#{member.placeGroup.creator.nick})" /> <h:outputText value="#{member.placeGroup.creator.firstnames} #{member.placeGroup.creator.lastname} (#{member.placeGroup.creator.nick})" />
</h:column> </p:column>
<h:column> <p:column>
<h:commandButton rendered="#{placeGroupView.canModifyCurrent and placeGroupView.currentMemberUserNotNull}" action="#{placeGroupView.releasePlace()}" value="#{i18n['placegroupview.releasePlace']}" /> <h:commandButton rendered="#{placeGroupView.canModifyCurrent and placeGroupView.currentMemberUserNotNull}" action="#{placeGroupView.releasePlace()}" value="#{i18n['placegroupview.releasePlace']}" />
</h:column> </p:column>
</h:dataTable> </p:dataTable>
</h:form> </h:form>
<p> <p>
......
...@@ -17,6 +17,10 @@ ...@@ -17,6 +17,10 @@
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<login:login isOneliner="true" /> <login:login isOneliner="true" />
<br/>
<h:link value="#{i18n['submenu.user.create']}" outcome="/user/create" />
<br/>
<h:link value="#{i18n['submenu.auth.sendResetMail']}" outcome="/auth/sendResetMail" />
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
</composite:implementation> </composite:implementation>
......
...@@ -2,7 +2,11 @@ package fi.codecrew.moya.web.cdiview.tournaments; ...@@ -2,7 +2,11 @@ package fi.codecrew.moya.web.cdiview.tournaments;
import java.io.Serializable; import java.io.Serializable;
import fi.codecrew.moya.beans.TournamentBeanLocal;
import fi.codecrew.moya.model.Role; import fi.codecrew.moya.model.Role;
import fi.codecrew.moya.model.Tournament;
import fi.codecrew.moya.model.TournamentGame;
import fi.codecrew.moya.model.TournamentRule;
import fi.codecrew.moya.web.cdiview.GenericCDIView; import fi.codecrew.moya.web.cdiview.GenericCDIView;
import javax.ejb.EJB; import javax.ejb.EJB;
...@@ -14,26 +18,29 @@ import org.primefaces.event.FlowEvent; ...@@ -14,26 +18,29 @@ import org.primefaces.event.FlowEvent;
@Named @Named
@ConversationScoped @ConversationScoped
public class TournamentCreateView implements Serializable { public class TournamentCreateView extends GenericCDIView {
/**
*
*/
private static final long serialVersionUID = 2547358764980373797L; private static final long serialVersionUID = 2547358764980373797L;
private TournamentRule rules = null;
private TournamentGame game = null;
private Tournament tournament = null;
@EJB TournamentBeanLocal tournamentBean;
public void initView() { public void initView() {
System.out.println("MOI"); if(tournament == null) {
this.beginConversation();
tournament = new Tournament();
}
} }
// called on finish
public void save(ActionEvent actionEvent) { public void save(ActionEvent actionEvent) {
} }
public String onFlowProcess(FlowEvent event) { public String onFlowProcess(FlowEvent event) {
System.out.println(event.getOldStep());
return event.getNewStep(); return event.getNewStep();
} }
} }
...@@ -2,11 +2,13 @@ package fi.codecrew.moya.web.helper; ...@@ -2,11 +2,13 @@ package fi.codecrew.moya.web.helper;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Named; import javax.inject.Named;
import fi.codecrew.moya.beans.PermissionBeanLocal; import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal; import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.Feedback;
import fi.codecrew.moya.web.cdiview.GenericCDIView; import fi.codecrew.moya.web.cdiview.GenericCDIView;
@Named @Named
...@@ -19,6 +21,8 @@ public class FeedbackView extends GenericCDIView { ...@@ -19,6 +21,8 @@ public class FeedbackView extends GenericCDIView {
private String feedback; private String feedback;
private transient ListDataModel<Feedback> feedbacks;
public void initFeedback() { public void initFeedback() {
super.beginConversation(); super.beginConversation();
} }
...@@ -39,6 +43,17 @@ public class FeedbackView extends GenericCDIView { ...@@ -39,6 +43,17 @@ public class FeedbackView extends GenericCDIView {
return null; return null;
} }
public ListDataModel<Feedback> getFeedbacks() {
if (feedbacks == null && permissionBean.getCurrentUser().isSuperadmin())
{
feedbacks = new ListDataModel<Feedback>(userbean.getFeedbacks());
}
else {
feedbacks = new ListDataModel<Feedback>();
}
return feedbacks;
}
public String getFeedback() { public String getFeedback() {
return feedback; return feedback;
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!