Commit 7760d10c by Tuukka Kivilahti

Nopea ilmoittautuminen, Nyt voi katsoa kursseja vaikka ei olisi ostanut lippua -…

…> ei tartte uloskirjautua että voi ilmota
1 parent 4bda07e3
...@@ -2,6 +2,7 @@ package fi.codecrew.moya.beans; ...@@ -2,6 +2,7 @@ package fi.codecrew.moya.beans;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed; import javax.annotation.security.RolesAllowed;
...@@ -15,6 +16,7 @@ import fi.codecrew.moya.enums.apps.LecturePermission; ...@@ -15,6 +16,7 @@ import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.facade.EventUserFacade; import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.LectureFacade; import fi.codecrew.moya.facade.LectureFacade;
import fi.codecrew.moya.facade.LectureGroupFacade; import fi.codecrew.moya.facade.LectureGroupFacade;
import fi.codecrew.moya.model.ApplicationPermission;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.Lecture; import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup; import fi.codecrew.moya.model.LectureGroup;
...@@ -198,4 +200,18 @@ public class LectureBean implements LectureBeanLocal { ...@@ -198,4 +200,18 @@ public class LectureBean implements LectureBeanLocal {
return maxCount - userLectureSelects(group, user); return maxCount - userLectureSelects(group, user);
} }
@Override
public boolean isUserCanParticipate(EventUser user) {
List<Role> roles = userBean.findUsersRoles(user);
for (Role role : roles) {
for (ApplicationPermission apperm : role.getPermissions()) {
if(apperm.getPermission().getFullName().equals(LecturePermission.PARTICIPATE.getFullName()))
return true;
}
}
return false;
}
} }
...@@ -129,7 +129,7 @@ public class UserBean implements UserBeanLocal { ...@@ -129,7 +129,7 @@ public class UserBean implements UserBeanLocal {
// changed bean to this bcause of loop // changed bean to this bcause of loop
@EJB @EJB
private PrintedCardFacade printedcardfacade; private PrintedCardFacade printedcardfacade;
@EJB @EJB
private LoggingBeanLocal loggerbean; private LoggingBeanLocal loggerbean;
...@@ -156,7 +156,6 @@ public class UserBean implements UserBeanLocal { ...@@ -156,7 +156,6 @@ public class UserBean implements UserBeanLocal {
@EJB @EJB
private ProductFacade productFacade; private ProductFacade productFacade;
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL) @RolesAllowed(UserPermission.S_VIEW_ALL)
public List<EventUser> getUsers() { public List<EventUser> getUsers() {
...@@ -217,16 +216,19 @@ public class UserBean implements UserBeanLocal { ...@@ -217,16 +216,19 @@ public class UserBean implements UserBeanLocal {
// add roles from events default role. // add roles from events default role.
addRecursive(checkedRoles, event.getDefaultRole()); addRecursive(checkedRoles, event.getDefaultRole());
} }
// add roles from accountEvents of the user
addRecursive(checkedRoles, productbean.getRolesFromAccountEvents(u)); if (!u.isAnonymous()) {
// add roles from accountEvents of the user
for (GroupMembership member : gmfacade.findMemberships(u)) { addRecursive(checkedRoles, productbean.getRolesFromAccountEvents(u));
if (member != null && member.getPlaceReservation() != null)
{ for (GroupMembership member : gmfacade.findMemberships(u)) {
addRecursive(checkedRoles, member.getPlaceReservation().getProvidesRole()); if (member != null && member.getPlaceReservation() != null)
if (member.getPlaceReservation().getProduct() != null)
{ {
addRecursive(checkedRoles, member.getPlaceReservation().getProduct().getProvides()); addRecursive(checkedRoles, member.getPlaceReservation().getProvidesRole());
if (member.getPlaceReservation().getProduct() != null)
{
addRecursive(checkedRoles, member.getPlaceReservation().getProduct().getProvides());
}
} }
} }
} }
......
...@@ -32,4 +32,6 @@ public interface LectureBeanLocal { ...@@ -32,4 +32,6 @@ public interface LectureBeanLocal {
public int userLectureSelectsLeft(LectureGroup group, EventUser user); public int userLectureSelectsLeft(LectureGroup group, EventUser user);
public int userLectureSelects(LectureGroup group, EventUser user); public int userLectureSelects(LectureGroup group, EventUser user);
public boolean isUserCanParticipate(EventUser user);
} }
...@@ -4,7 +4,8 @@ import fi.codecrew.moya.enums.BortalApplication; ...@@ -4,7 +4,8 @@ import fi.codecrew.moya.enums.BortalApplication;
public enum LecturePermission implements IAppPermission { public enum LecturePermission implements IAppPermission {
VIEW, VIEW,
PARTICIPATE,
MANAGE, MANAGE,
; ;
......
...@@ -14,6 +14,11 @@ ...@@ -14,6 +14,11 @@
<ui:define name="content"> <ui:define name="content">
<h:form id="viewlecturesform"> <h:form id="viewlecturesform">
<p:outputPanel styleClass="messagebox" rendered="#{!lectureUserView.participateActive}">
<h2><p:outputLabel value="#{i18n['lecture.participateNotActive.title']}" /></h2>
<p:outputLabel value="#{i18n['lecture.participateNotActive.message']}" />
</p:outputPanel>
<p:fieldset rendered="#{lectureUserView.lectureGroupsVisible}" id="lectureGroups" legend="#{i18n['lecture.selectgroup']}"> <p:fieldset rendered="#{lectureUserView.lectureGroupsVisible}" id="lectureGroups" legend="#{i18n['lecture.selectgroup']}">
<p:dataTable value="#{lectureUserView.lectureGroups}" var="lectureGroup"> <p:dataTable value="#{lectureUserView.lectureGroups}" var="lectureGroup">
...@@ -37,7 +42,7 @@ ...@@ -37,7 +42,7 @@
</h1> </h1>
<p:fieldset id="participatedLectures" legend="#{i18n['lecture.participatedLectures']} #{lectureUserView.currentGroupParticipateCount} / #{lectureUserView.currentLectureGroup.selectCount}"> <p:fieldset id="participatedLectures" rendered="#{lectureUserView.participateActive}" legend="#{i18n['lecture.participatedLectures']} #{lectureUserView.currentGroupParticipateCount} / #{lectureUserView.currentLectureGroup.selectCount}">
<p:dataTable value="#{lectureUserView.participatedLectures}" var="lecture"> <p:dataTable value="#{lectureUserView.participatedLectures}" var="lecture">
<p:column headerText="#{i18n['lecture.name']}" style="width:125px"> <p:column headerText="#{i18n['lecture.name']}" style="width:125px">
<h:outputText value="#{lecture.name}" /> <h:outputText value="#{lecture.name}" />
...@@ -82,7 +87,7 @@ ...@@ -82,7 +87,7 @@
<h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" /> <h:outputText value="#{lecture.participantsCount}" /> / <h:outputText value="#{lecture.maxParticipantsCount}" />
</p:column> </p:column>
<p:column style="width:80px"> <p:column style="width:80px">
<p:commandButton value="#{i18n['lecture.participate']}" rendered="#{!lectureUserView.currentGroupFull and !lecture.full}" actionListener="#{lectureUserView.participateCurrent}" update=":viewlecturesform:availableLectures :viewlecturesform:participatedLectures" onerror="location.reload(true)" /> <p:commandButton value="#{i18n['lecture.participate']}" rendered="#{!lectureUserView.currentGroupFull and !lecture.full and lectureUserView.participateActive}" actionListener="#{lectureUserView.participateCurrent}" update=":viewlecturesform:availableLectures :viewlecturesform:participatedLectures" onerror="location.reload(true)" />
<h:outputText value="#{i18n['lecture.full']}" rendered="#{lecture.full}" /> <h:outputText value="#{i18n['lecture.full']}" rendered="#{lecture.full}" />
<h:outputText value="#{i18n['lecture.groupFull']}" rendered="#{lectureUserView.currentGroupFull}" /> <h:outputText value="#{i18n['lecture.groupFull']}" rendered="#{lectureUserView.currentGroupFull}" />
</p:column> </p:column>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<composite:implementation> <composite:implementation>
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h:panelGrid columns="3" cellpadding="20" columnClasses="topalign,topalign,topalign"> <h:panelGrid columns="3" cellpadding="20" columnClasses="topalign,topalign,topalign">
<h:form id="userform" enctype="multipart/form-data"> <h:form id="userform" enctype="multipart/form-data">
<h:panelGroup> <h:panelGroup>
...@@ -78,94 +78,96 @@ ...@@ -78,94 +78,96 @@
</h:form> </h:form>
<h:form> <h:form>
<h:panelGroup> <h:panelGrid columns="2" columnClasses="topalign,topalign">
<table> <h:panelGroup>
<ui:fragment rendered="#{!cc.attrs.creating}"> <table>
<ui:fragment rendered="#{!cc.attrs.creating}">
<tr>
<td colspan="2"><b><h:outputLabel for="login" value="#{i18n['user.login']}" /></b><br /> <h:outputText value="#{userView.selectedUser.login}" id="login" /></td>
</tr>
</ui:fragment>
<tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.nick']}" for="nick" /> </b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="45" id="nick" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.nick}" />
</p:inplace></td>
</tr>
<tr> <tr>
<td colspan="2"><b><h:outputLabel for="login" value="#{i18n['user.login']}" /></b><br /> <h:outputText value="#{userView.selectedUser.login}" id="login" /></td> <td><b><h:outputLabel value="#{i18n['user.firstNames']}" for="firstnames" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="22" id="firstnames" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.firstnames}" />
</p:inplace></td>
<td><b><h:outputLabel value="#{i18n['user.lastName']}" for="lastname" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="30" id="lastname" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.lastname}" />
</p:inplace></td>
</tr>
<tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.sex']}" for="sex" /></b> <br /> <p:selectOneMenu disabled="#{!cc.attrs.creating and !userView.canSave}" id="sex" value="#{userView.selectedUser.gender}">
<f:selectItem id="undefined" itemLabel="#{i18n['user.sex.UNDEFINED']}" itemValue="UNDEFINED" />
<f:selectItem id="male" itemLabel="#{i18n['user.sex.MALE']}" itemValue="MALE" />
<f:selectItem id="female" itemLabel="#{i18n['user.sex.FEMALE']}" itemValue="FEMALE" />
</p:selectOneMenu></td>
</tr>
<tr>
<td><b><h:outputLabel for="birthday" value="#{i18n['user.birthday']}" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:calendar id="birthday" navigator="true" yearRange="c-80:c-0" value="#{userView.selectedUser.birthday}">
<f:convertDateTime pattern="#{sessionHandler.dateFormat}" timeZone="#{sessionHandler.timezone}" />
</p:calendar>
</p:inplace> <h:message for="birthday" /></td>
<td><b><h:outputLabel for="age" value="#{i18n['user.age']}" /></b><br /> <h:outputText value="#{userView.selectedUser.user.age}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
</h:outputText></td>
</tr> </tr>
</ui:fragment> </table>
<tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.nick']}" for="nick" /> </b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}"> <table>
<p:inputText size="45" id="nick" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.nick}" /> <tr>
</p:inplace></td> <td colspan="2"><b><p:outputLabel value="#{i18n['user.address']}" for="address" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
</tr> <p:inputText size="45" id="address" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.address}" />
<tr> </p:inplace></td>
<td><b><h:outputLabel value="#{i18n['user.firstNames']}" for="firstnames" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}"> </tr>
<p:inputText size="22" id="firstnames" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.firstnames}" /> <tr>
</p:inplace></td> <td><b><p:outputLabel value="#{i18n['user.zipCode']}" for="zip" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<td><b><h:outputLabel value="#{i18n['user.lastName']}" for="lastname" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}"> <p:inputText styleClass="ui-input" size="7" id="zip" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.zip}" />
<p:inputText size="30" id="lastname" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.lastname}" /> </p:inplace> <p:message for="zip" /></td>
</p:inplace></td> <td><b><p:outputLabel value="#{i18n['user.town']}" for="town" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
</tr> <p:inputText styleClass="ui-input" size="25" id="town" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.town}" />
<tr> </p:inplace> <p:message for="town" /></td>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.sex']}" for="sex" /></b> <br /> <p:selectOneMenu disabled="#{!cc.attrs.creating and !userView.canSave}" id="sex" value="#{userView.selectedUser.gender}"> </tr>
<f:selectItem id="undefined" itemLabel="#{i18n['user.sex.UNDEFINED']}" itemValue="UNDEFINED" /> <tr>
<f:selectItem id="male" itemLabel="#{i18n['user.sex.MALE']}" itemValue="MALE" /> <td colspan="2"><b><h:outputLabel value="#{i18n['user.email']}" for="email" /></b> <br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<f:selectItem id="female" itemLabel="#{i18n['user.sex.FEMALE']}" itemValue="FEMALE" /> <p:inputText validator="#{userValidator.validateEmail}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" />
</p:selectOneMenu></td> </p:inplace></td>
</tr> </tr>
<tr>
<tr> <td><b><p:outputLabel value="#{i18n['user.phone']}" for="phone" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<td><b><h:outputLabel for="birthday" value="#{i18n['user.birthday']}" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}"> <p:inputText styleClass="ui-input" size="7" id="phone" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.phone}" />
<p:calendar id="birthday" navigator="true" yearRange="c-80:c-0" value="#{userView.selectedUser.birthday}"> </p:inplace> <p:message for="phone" /></td>
<f:convertDateTime pattern="#{sessionHandler.dateFormat}" timeZone="#{sessionHandler.timezone}" /> </tr>
</p:calendar>
</p:inplace> <h:message for="birthday" /></td> </table>
<td><b><h:outputLabel for="age" value="#{i18n['user.age']}" /></b><br /> <h:outputText value="#{userView.selectedUser.user.age}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2" /> <p:commandButton rendered="#{cc.attrs.creating or userView.canSave}" id="commitbtn" action="#{cc.attrs.commitaction}" ajax="false" value="#{cc.attrs.commitvalue}" onerror="location.reload(true);" />
</h:outputText></td>
</tr> </h:panelGroup>
</table>
<h:panelGroup rendered="#{userView.showUserSelectableRoles and cc.attrs.showRoles}">
<table>
<tr> <h2>
<td colspan="2"><b><p:outputLabel value="#{i18n['user.address']}" for="address" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}"> <h:outputText value="#{i18n['user.userSelectableRoles']}:" />
<p:inputText size="45" id="address" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.address}" /> </h2>
</p:inplace></td>
</tr> <p:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" value="#{userView.userSelectableRoles}">
<tr> <f:selectItems value="#{roleDataView.userSelectableRoles}" var="roleitem" itemLabel="#{roleitem.name}" itemValue="#{roleitem}" />
<td><b><p:outputLabel value="#{i18n['user.zipCode']}" for="zip" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}"> </p:selectManyCheckbox>
<p:inputText styleClass="ui-input" size="7" id="zip" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.zip}" /> <div>
</p:inplace> <p:message for="zip" /></td> <h:message rendered="#{roleView.canReadRoles}" for="roles" />
<td><b><p:outputLabel value="#{i18n['user.town']}" for="town" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}"> </div>
<p:inputText styleClass="ui-input" size="25" id="town" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.town}" /> <h:commandButton action="#{userView.saveUserSelectableRoles}" value="#{i18n['user.saveUserSelectableRoles']}" />
</p:inplace> <p:message for="town" /></td>
</tr> </h:panelGroup>
<tr> </h:panelGrid>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.email']}" for="email" /></b> <br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText validator="#{userValidator.validateEmail}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" />
</p:inplace></td>
</tr>
<tr>
<td><b><p:outputLabel value="#{i18n['user.phone']}" for="phone" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText styleClass="ui-input" size="7" id="phone" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.phone}" />
</p:inplace> <p:message for="phone" /></td>
</tr>
</table>
<p:commandButton rendered="#{cc.attrs.creating or userView.canSave}" id="commitbtn" action="#{cc.attrs.commitaction}" ajax="false" value="#{cc.attrs.commitvalue}" onerror="location.reload(true);" />
</h:panelGroup>
</h:form>
<h:form>
<h:panelGroup rendered="#{userView.showUserSelectableRoles and cc.attrs.showRoles}">
<h2>
<h:outputText value="#{i18n['user.userSelectableRoles']}:" />
</h2>
<h:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" id="roles" value="#{userView.usersRoles}">
<f:selectItems var="roleitem" itemLabel="#{roleitem.name}" value="#{roleDataView.userSelectableRoles}" />
</h:selectManyCheckbox>
<div>
<h:message rendered="#{roleView.canReadRoles}" for="roles" />
</div>
<h:commandButton action="#{userView.saveUserSelectableRoles}" value="#{i18n['user.saveUserSelectableRoles']}" />
</h:panelGroup>
</h:form> </h:form>
......
...@@ -211,3 +211,10 @@ th, td { ...@@ -211,3 +211,10 @@ th, td {
vertical-align: top; vertical-align: top;
padding-left: 20px; padding-left: 20px;
} }
.messagebox {
border: 1px red solid;
padding-left: 20px;
padding-right: 20px;
padding-bottom: 20px;
}
...@@ -201,23 +201,26 @@ lanEventProperty.defaultValue = Default value ...@@ -201,23 +201,26 @@ lanEventProperty.defaultValue = Default value
lanEventProperty.save = Save lanEventProperty.save = Save
lanEventProperty.textValue = Text value lanEventProperty.textValue = Text value
lecture.availableLectures = Aihealueen kurssit ja luennot lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.createLecture = Uuden tiedot lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi lecture.createNew = Luo uusi
lecture.description = Kuvaus lecture.description = Kuvaus
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4 lecture.full = Kurssi t\u00E4ynn\u00E4
lecture.hours = Kesto, tunteja lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.maxParticipantsCount = Max. osallistujia lecture.hours = Kesto, tunteja
lecture.multicreate = Luo monta putkeen lecture.maxParticipantsCount = Max. osallistujia
lecture.name = Nimi lecture.multicreate = Luo monta putkeen
lecture.participants = Osallistujia lecture.name = Nimi
lecture.participate = Ilmoittaudu lecture.participants = Osallistujia
lecture.participatedLectures = Kurssi-ilmoittautumisesi lecture.participate = Ilmoittaudu
lecture.roles = Roolit lecture.participateNotActive.message = Voit ilmoittautua kursseille kun olet ostanut lipun tapahtumaan
lecture.saveLecture = Muokkaa lecture.participateNotActive.title = Osta ensiksi p\u00E4\u00E4sylippu
lecture.selectgroup = Valitse aihealue lecture.participatedLectures = Kurssi-ilmoittautumisesi
lecture.startTime = Aloitusaika lecture.roles = Roolit
lecture.unparticipate = Poista ilmoittautuminen lecture.saveLecture = Muokkaa
lecture.selectgroup = Valitse aihealue
lecture.startTime = Aloitusaika
lecture.unparticipate = Poista ilmoittautuminen
lectureGroup.createLectureGroup = Luo kurssikokonaisuus lectureGroup.createLectureGroup = Luo kurssikokonaisuus
lectureGroup.createNew = Luo uusi lectureGroup.createNew = Luo uusi
......
...@@ -553,23 +553,26 @@ layout.editBottom = Edit bottom content ...@@ -553,23 +553,26 @@ layout.editBottom = Edit bottom content
layout.editContent = Edit center layout.editContent = Edit center
layout.editTop = Edit topcontent layout.editTop = Edit topcontent
lecture.availableLectures = available lectures lecture.availableLectures = available lectures
lecture.createLecture = New lecture lecture.createLecture = New lecture
lecture.createNew = Create new lecture.createNew = Create new
lecture.description = Description lecture.description = Description
lecture.groupFull = Limit reached lecture.full = Lecture full
lecture.hours = Duration hours lecture.groupFull = Limit reached
lecture.maxParticipantsCount = Max participants lecture.hours = Duration hours
lecture.multicreate = Create multible in row lecture.maxParticipantsCount = Max participants
lecture.name = Name lecture.multicreate = Create multible in row
lecture.participants = Participants lecture.name = Name
lecture.participate = Participate lecture.participants = Participants
lecture.participatedLectures = Your lectures lecture.participate = Participate
lecture.roles = Roles lecture.participateNotActive.message = You can participate to lectures when you have bought a ticket to event.
lecture.saveLecture = Edit lecture.participateNotActive.title = Buy tickets before participating
lecture.selectgroup = Select lecturegroup lecture.participatedLectures = Your lectures
lecture.startTime = Start time lecture.roles = Roles
lecture.unparticipate = Remove participation lecture.saveLecture = Edit
lecture.selectgroup = Select lecturegroup
lecture.startTime = Start time
lecture.unparticipate = Remove participation
lectureGroup.createLectureGroup = Create lecturegroup lectureGroup.createLectureGroup = Create lecturegroup
lectureGroup.createNew = Create new lectureGroup.createNew = Create new
......
...@@ -563,23 +563,26 @@ layout.editBottom = Muokkaa alasis\u00E4lt\u00F6\u00E4 ...@@ -563,23 +563,26 @@ layout.editBottom = Muokkaa alasis\u00E4lt\u00F6\u00E4
layout.editContent = Muokkaa sis\u00E4lt\u00F6\u00E4 layout.editContent = Muokkaa sis\u00E4lt\u00F6\u00E4
layout.editTop = Muokkaa yl\u00E4sis\u00E4lt\u00F6\u00E4 layout.editTop = Muokkaa yl\u00E4sis\u00E4lt\u00F6\u00E4
lecture.availableLectures = Aihealueen kurssit ja luennot lecture.availableLectures = Aihealueen kurssit ja luennot
lecture.createLecture = Uuden tiedot lecture.createLecture = Uuden tiedot
lecture.createNew = Luo uusi lecture.createNew = Luo uusi
lecture.description = Kuvaus lecture.description = Kuvaus
lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4 lecture.full = Kurssi t\u00E4ynn\u00E4
lecture.hours = Kesto tunteina lecture.groupFull = Kiinti\u00F6 t\u00E4ynn\u00E4
lecture.maxParticipantsCount = Osallistujia enint. lecture.hours = Kesto tunteina
lecture.multicreate = Luo monta putkeen lecture.maxParticipantsCount = Osallistujia enint.
lecture.name = Nimi lecture.multicreate = Luo monta putkeen
lecture.participants = Osallistujia lecture.name = Nimi
lecture.participate = Ilmoittaudu lecture.participants = Osallistujia
lecture.participatedLectures = Ilmoittautumisesi lecture.participate = Ilmoittaudu
lecture.roles = Roolit lecture.participateNotActive.message = Voit ilmoittautua kursseille vasta kun olet ostanut lipun tapahtumaan. Osta lippu valitsemalla vasemmalta Kauppa -> Osta tuotteita.
lecture.saveLecture = Muokkaa lecture.participateNotActive.title = Aloita ostamalla lippu tapahtumaan
lecture.selectgroup = Valitse aihealue lecture.participatedLectures = Ilmoittautumisesi
lecture.startTime = Aloitusaika lecture.roles = Roolit
lecture.unparticipate = Poista ilmoittautuminen lecture.saveLecture = Muokkaa
lecture.selectgroup = Valitse aihealue
lecture.startTime = Aloitusaika
lecture.unparticipate = Poista ilmoittautuminen
lectureGroup.createLectureGroup = Luo kurssikokonaisuus lectureGroup.createLectureGroup = Luo kurssikokonaisuus
lectureGroup.createNew = Luo uusi lectureGroup.createNew = Luo uusi
......
...@@ -120,6 +120,7 @@ public class AuthView extends GenericCDIView { ...@@ -120,6 +120,7 @@ public class AuthView extends GenericCDIView {
} }
HttpServletRequest request = getRequest(); HttpServletRequest request = getRequest();
if (request.getUserPrincipal() != null) { if (request.getUserPrincipal() != null) {
logger.info("Principal not empty. need to logout first"); logger.info("Principal not empty. need to logout first");
......
...@@ -55,10 +55,7 @@ public class RoleDataView extends GenericCDIView { ...@@ -55,10 +55,7 @@ public class RoleDataView extends GenericCDIView {
return roles; return roles;
} }
public ListDataModel<Role> getUserSelectableRoles() { public List<Role> getUserSelectableRoles() {
if (roles == null) { return rolebean.listUserSelectableRoles();
roles = new ListDataModel<Role>(rolebean.listUserSelectableRoles());
}
return roles;
} }
} }
...@@ -94,6 +94,9 @@ public class UserView extends GenericCDIView { ...@@ -94,6 +94,9 @@ public class UserView extends GenericCDIView {
private transient CardTemplateBeanLocal cardBean; private transient CardTemplateBeanLocal cardBean;
private List<Role> usersRoles; private List<Role> usersRoles;
private List<Role> userSelectableRoles = null;
@EJB @EJB
private transient RoleBeanLocal rolebean; private transient RoleBeanLocal rolebean;
@EJB @EJB
...@@ -188,6 +191,17 @@ public class UserView extends GenericCDIView { ...@@ -188,6 +191,17 @@ public class UserView extends GenericCDIView {
return null; return null;
} }
public List<Role> getUserSelectableRoles() {
if (userSelectableRoles == null && user != null)
{
userSelectableRoles = rolebean.getRoles(getSelectedUser());
}
return userSelectableRoles;
}
public List<Role> getUsersRoles() { public List<Role> getUsersRoles() {
if (usersRoles == null && user != null) if (usersRoles == null && user != null)
{ {
...@@ -327,6 +341,12 @@ public class UserView extends GenericCDIView { ...@@ -327,6 +341,12 @@ public class UserView extends GenericCDIView {
} }
public String saveUser() { public String saveUser() {
if(userSelectableRoles != null) {
saveUserSelectableRoles();
}
logger.info("Saving user"); logger.info("Saving user");
if (permbean.getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY)) { if (permbean.getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY)) {
...@@ -481,6 +501,10 @@ public class UserView extends GenericCDIView { ...@@ -481,6 +501,10 @@ public class UserView extends GenericCDIView {
public void setUsersRoles(List<Role> usersRoles) { public void setUsersRoles(List<Role> usersRoles) {
this.usersRoles = usersRoles; this.usersRoles = usersRoles;
} }
public void setUserSelectableRoles(List<Role> usersRoles) {
this.userSelectableRoles = usersRoles;
}
public String getUsername() { public String getUsername() {
return username; return username;
...@@ -536,10 +560,11 @@ public class UserView extends GenericCDIView { ...@@ -536,10 +560,11 @@ public class UserView extends GenericCDIView {
public String saveUserSelectableRoles() public String saveUserSelectableRoles()
{ {
rolebean.saveUserSelectableRoles(user, usersRoles); rolebean.saveUserSelectableRoles(user, userSelectableRoles);
usersRoles = null; userSelectableRoles = null;
return null; return null;
} }
......
...@@ -10,6 +10,7 @@ import javax.inject.Named; ...@@ -10,6 +10,7 @@ import javax.inject.Named;
import fi.codecrew.moya.beans.EventBeanLocal; import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.LectureBeanLocal; import fi.codecrew.moya.beans.LectureBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.apps.LecturePermission; import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.model.Lecture; import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup; import fi.codecrew.moya.model.LectureGroup;
...@@ -31,6 +32,7 @@ public class LectureUserView extends GenericCDIView { ...@@ -31,6 +32,7 @@ public class LectureUserView extends GenericCDIView {
@EJB @EJB
EventBeanLocal eventBean; EventBeanLocal eventBean;
ListDataModel<LectureGroup> lectureGroups = null; ListDataModel<LectureGroup> lectureGroups = null;
ListDataModel<Lecture> lectures = null; ListDataModel<Lecture> lectures = null;
ListDataModel<Lecture> participatedLectures = null; ListDataModel<Lecture> participatedLectures = null;
...@@ -49,6 +51,10 @@ public class LectureUserView extends GenericCDIView { ...@@ -49,6 +51,10 @@ public class LectureUserView extends GenericCDIView {
return false; return false;
return true; return true;
} }
public boolean isParticipateActive() {
return lectureBean.isUserCanParticipate(userView.getCurrentUser());
}
public ListDataModel<LectureGroup> getLectureGroups() { public ListDataModel<LectureGroup> getLectureGroups() {
lectureGroups = new ListDataModel<LectureGroup>(lectureBean.getLectureGroups()); lectureGroups = new ListDataModel<LectureGroup>(lectureBean.getLectureGroups());
...@@ -91,6 +97,9 @@ public class LectureUserView extends GenericCDIView { ...@@ -91,6 +97,9 @@ public class LectureUserView extends GenericCDIView {
} }
public void participateCurrent() { public void participateCurrent() {
if(!isParticipateActive()) {
return;
}
if (lectures != null && lectures.isRowAvailable()) { if (lectures != null && lectures.isRowAvailable()) {
Lecture lecture = lectures.getRowData(); Lecture lecture = lectures.getRowData();
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!