Commit 8b3780fd by Tuomas Riihimäki

Merge branch 'vectoinfo' into 'master'

Vectoinfo

Incomingflown muutoksia paljon, ny tuotantovalmis mut pientä viilailua tulee tapahtumaan vielä.
2 parents 6ba9b1c9 107fc909
Showing with 1126 additions and 325 deletions
...@@ -32,6 +32,7 @@ import fi.codecrew.moya.model.CardObjectData; ...@@ -32,6 +32,7 @@ import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData; import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.LanEvent; import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.LanEventProperty; import fi.codecrew.moya.model.LanEventProperty;
import fi.codecrew.moya.model.LanEventPropertyKey; import fi.codecrew.moya.model.LanEventPropertyKey;
...@@ -81,10 +82,12 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -81,10 +82,12 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
@EJB @EJB
private CardTextDataFacade ctdFacade; private CardTextDataFacade ctdFacade;
@EJB @EJB
private CardObjectDataFacade codFacade; private CardObjectDataFacade codFacade;
// @Override // @Override
// @RolesAllowed("USER_MANAGEMENT/WRITE") // @RolesAllowed("USER_MANAGEMENT/WRITE")
// public List<CardTemplate> findAll() { // public List<CardTemplate> findAll() {
...@@ -109,13 +112,13 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -109,13 +112,13 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
public CardTemplate find(Integer id) { public CardTemplate find(Integer id) {
return cdFacade.find(id); return cdFacade.find(id);
} }
@Override @Override
@RolesAllowed(UserPermission.S_WRITE_ROLES) @RolesAllowed(UserPermission.S_WRITE_ROLES)
public CardTextData findTextData(Integer id) { public CardTextData findTextData(Integer id) {
return ctdFacade.find(id); return ctdFacade.find(id);
} }
@Override @Override
@RolesAllowed(UserPermission.S_WRITE_ROLES) @RolesAllowed(UserPermission.S_WRITE_ROLES)
public CardObjectData findObjectData(Integer id) { public CardObjectData findObjectData(Integer id) {
...@@ -195,9 +198,9 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -195,9 +198,9 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
msg.setMessage("User ", user.getUser().getLogin(), "has too powerful card!\nCurrent power ", existingPower, ". Should be ", newPower, ". Card replaced with less power.\n\n-- \nLippukauppa"); msg.setMessage("User ", user.getUser().getLogin(), "has too powerful card!\nCurrent power ", existingPower, ". Should be ", newPower, ". Card replaced with less power.\n\n-- \nLippukauppa");
mailbean.sendMail(msg); mailbean.sendMail(msg);
} }
logger.info("User {} has too much power old role {} New role {}, old card revoked.", new Object[] { user.getUser().getLogin(), existingPower, newPower }); logger.info("User {} has too much power old role {} New role {}, old card revoked.", new Object[] { user.getUser().getLogin(), existingPower, newPower });
biggestCard.setEnabled(false); biggestCard.setEnabled(false);
return this.checkPrintedCard(user); return this.checkPrintedCard(user);
} else { } else {
...@@ -248,38 +251,38 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -248,38 +251,38 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
public List<CardTextData> findCardTextDatas(CardTemplate template) { public List<CardTextData> findCardTextDatas(CardTemplate template) {
return this.ctdFacade.findAll(template); return this.ctdFacade.findAll(template);
} }
@Override @Override
@RolesAllowed(UserPermission.S_WRITE_ROLES) @RolesAllowed(UserPermission.S_WRITE_ROLES)
public List<CardObjectData> findCardObjectDatas(CardTemplate template) { public List<CardObjectData> findCardObjectDatas(CardTemplate template) {
return this.codFacade.findAll(template); return this.codFacade.findAll(template);
} }
@RolesAllowed(UserPermission.S_WRITE_ROLES) @RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override @Override
public CardTemplate save(CardTemplate card) { public CardTemplate save(CardTemplate card) {
return cdFacade.merge(card); return cdFacade.merge(card);
} }
@RolesAllowed(UserPermission.S_WRITE_ROLES) @RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override @Override
public CardTextData save(CardTextData textData) { public CardTextData save(CardTextData textData) {
if(textData.getId() != null && textData.getId() != 0) if (textData.getId() != null && textData.getId() != 0)
return ctdFacade.merge(textData); return ctdFacade.merge(textData);
else else
return ctdFacade.create(textData); return ctdFacade.create(textData);
} }
@RolesAllowed(UserPermission.S_WRITE_ROLES) @RolesAllowed(UserPermission.S_WRITE_ROLES)
@Override @Override
public CardObjectData save(CardObjectData objectData) { public CardObjectData save(CardObjectData objectData) {
if(objectData.getId() != null && objectData.getId() != 0 ) if (objectData.getId() != null && objectData.getId() != 0)
return codFacade.merge(objectData); return codFacade.merge(objectData);
else else
return codFacade.create(objectData); return codFacade.create(objectData);
} }
@Override @Override
public PrintedCard getCard(Integer id) { public PrintedCard getCard(Integer id) {
return printedcardfacade.find(id); return printedcardfacade.find(id);
...@@ -350,4 +353,28 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -350,4 +353,28 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
return card; return card;
} }
@Override
public EventUser giveCard(EventUser user, boolean markUserPlacesDelivered) {
PrintedCard card = checkPrintedCard(user);
if (card.getCardState() != CardState.DELIVERED) {
card.setCardState(CardState.DELIVERED);
card = printedcardfacade.merge(card);
} else {
logger.info("Not marking card to delivered: " + card.getCardState() + " : " + card.getId());
}
if (markUserPlacesDelivered) {
for (GroupMembership membership : gmFacade.findMemberships(user)) {
membership.setEnteredEvent(Calendar.getInstance());
membership = gmFacade.merge(membership);
}
}
return eventUserFacade.reload(user);
}
} }
...@@ -292,6 +292,7 @@ public class MenuBean implements MenuBeanLocal { ...@@ -292,6 +292,7 @@ public class MenuBean implements MenuBeanLocal {
infonavi.setKey("subnavi.info"); infonavi.setKey("subnavi.info");
infonavi.addPage(menuitemfacade.findOrCreate("/info/index"), TerminalPermission.INFO); infonavi.addPage(menuitemfacade.findOrCreate("/info/index"), TerminalPermission.INFO);
infonavi.addPage(menuitemfacade.findOrCreate("/info/incoming"), TerminalPermission.INFO); infonavi.addPage(menuitemfacade.findOrCreate("/info/incoming"), TerminalPermission.INFO);
infonavi.addPage(menuitemfacade.findOrCreate("/info/shop"), TerminalPermission.INFO);
navifacade.create(adminmenu); navifacade.create(adminmenu);
......
...@@ -267,7 +267,13 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal { ...@@ -267,7 +267,13 @@ public class PlaceGroupBean implements PlaceGroupBeanLocal {
@Override @Override
@RolesAllowed({ SpecialPermission.S_USER, MapPermission.S_MANAGE_MAPS }) @RolesAllowed({ SpecialPermission.S_USER, MapPermission.S_MANAGE_MAPS })
public void releaseAndGenerateToken(GroupMembership gmem) { public void releaseAndGenerateToken(GroupMembership gmem) {
if(gmem.getEnteredEvent() != null && !permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
throw new EJBAccessException("Token already entered to event, Not enough rights to release token.");
}
gmem = gmemfacade.reload(gmem); gmem = gmemfacade.reload(gmem);
if (!(permbean.getCurrentUser().getId().equals(gmem.getPlaceGroup().getCreator().getId()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS))) { if (!(permbean.getCurrentUser().getId().equals(gmem.getPlaceGroup().getCreator().getId()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS))) {
loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "User tried to release and generate group membership: " + gmem); loggerbean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "User tried to release and generate group membership: " + gmem);
throw new EJBAccessException("Not enough rights to release token"); throw new EJBAccessException("Not enough rights to release token");
......
...@@ -173,7 +173,7 @@ public class ReaderBean implements ReaderBeanLocal { ...@@ -173,7 +173,7 @@ public class ReaderBean implements ReaderBeanLocal {
@Override @Override
public ReaderEvent assocCodeToCard(ReaderEvent readerEvent, PrintedCard card) { public ReaderEvent assocCodeToCard(ReaderEvent readerEvent, PrintedCard card) {
CardCode code = new CardCode(card, readerEvent.getReader().getType(), readerEvent.getValue()); CardCode code = new CardCode(card, readerEvent.getReader().getType(), readerEvent.getValue(), eventbean.getCurrentEvent());
code = cardCodeFacade.create(code); code = cardCodeFacade.create(code);
card = cardfacade.reload(card); card = cardfacade.reload(card);
......
...@@ -46,6 +46,7 @@ import fi.codecrew.moya.facade.FeedbackFacade; ...@@ -46,6 +46,7 @@ import fi.codecrew.moya.facade.FeedbackFacade;
import fi.codecrew.moya.facade.GameIDFacade; import fi.codecrew.moya.facade.GameIDFacade;
import fi.codecrew.moya.facade.GroupMembershipFacade; import fi.codecrew.moya.facade.GroupMembershipFacade;
import fi.codecrew.moya.facade.PlaceGroupFacade; import fi.codecrew.moya.facade.PlaceGroupFacade;
import fi.codecrew.moya.facade.PrintedCardFacade;
import fi.codecrew.moya.facade.ProductFacade; import fi.codecrew.moya.facade.ProductFacade;
import fi.codecrew.moya.facade.RoleFacade; import fi.codecrew.moya.facade.RoleFacade;
import fi.codecrew.moya.facade.UserApprovalFacade; import fi.codecrew.moya.facade.UserApprovalFacade;
...@@ -125,6 +126,10 @@ public class UserBean implements UserBeanLocal { ...@@ -125,6 +126,10 @@ public class UserBean implements UserBeanLocal {
@EJB @EJB
private UserImageFacade imagefacade; private UserImageFacade imagefacade;
// changed bean to this bcause of loop
@EJB
private PrintedCardFacade printedcardfacade;
@EJB @EJB
private LoggingBeanLocal loggerbean; private LoggingBeanLocal loggerbean;
...@@ -150,8 +155,7 @@ public class UserBean implements UserBeanLocal { ...@@ -150,8 +155,7 @@ public class UserBean implements UserBeanLocal {
private EventFacade eventfacade; private EventFacade eventfacade;
@EJB @EJB
private ProductFacade productFacade; private ProductFacade productFacade;
@EJB
private CardTemplateBeanLocal cardTemplateBean;
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL) @RolesAllowed(UserPermission.S_VIEW_ALL)
...@@ -477,7 +481,7 @@ public class UserBean implements UserBeanLocal { ...@@ -477,7 +481,7 @@ public class UserBean implements UserBeanLocal {
if(card != null) { if(card != null) {
card.setCardState(CardState.REJECTED); card.setCardState(CardState.REJECTED);
card = cardTemplateBean.saveCard(card); card = printedcardfacade.merge(card);
logger.info("rejectPrintedCard(): Rejected card {}, state {}", card, card.getCardState() ); logger.info("rejectPrintedCard(): Rejected card {}, state {}", card, card.getCardState() );
User user = null; User user = null;
......
...@@ -60,5 +60,7 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> { ...@@ -60,5 +60,7 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> {
List<PrintedCard> getCardsByState(CardState... pendingPrint); List<PrintedCard> getCardsByState(CardState... pendingPrint);
PrintedCard setCardState(Integer cardId, CardState printed) throws Exception; PrintedCard setCardState(Integer cardId, CardState printed) throws Exception;
EventUser giveCard(EventUser user, boolean markUserPlacesDelivered);
} }
...@@ -25,10 +25,11 @@ public class CardCode extends GenericEntity { ...@@ -25,10 +25,11 @@ public class CardCode extends GenericEntity {
@JoinColumn(name = "printed_cards_id") @JoinColumn(name = "printed_cards_id")
private PrintedCard printedCard; private PrintedCard printedCard;
public CardCode(PrintedCard card, ReaderType type, String code) { public CardCode(PrintedCard card, ReaderType type, String code, LanEvent event) {
this.printedCard = card; this.printedCard = card;
this.type = type; this.type = type;
this.code = code; this.code = code;
this.event = event;
} }
public CardCode() { public CardCode() {
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
*/ */
package fi.codecrew.moya.model; package fi.codecrew.moya.model;
import java.beans.Transient;
import java.util.Calendar; import java.util.Calendar;
import javax.persistence.CascadeType; import javax.persistence.CascadeType;
......
...@@ -9,7 +9,8 @@ public enum CardState { ...@@ -9,7 +9,8 @@ public enum CardState {
REJECTED, REJECTED,
VALIDATED, VALIDATED,
PRINTING_IN_PROGRESS, PRINTING_IN_PROGRESS,
PRINTED; PRINTED,
DELIVERED;
public String toStringLower() { public String toStringLower() {
return this.toString().toLowerCase(); return this.toString().toLowerCase();
......
eclipse.preferences.version=1 eclipse.preferences.version=1
encoding//WebContent/resources/templates/template1/css/style.css=UTF-8 encoding//WebContent/resources/templates/template1/css/style.css=UTF-8
encoding//src/fi/codecrew/moya/web/flow/IncomingView.java=UTF-8
...@@ -2,56 +2,86 @@ ...@@ -2,56 +2,86 @@
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:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui" xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop" xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader" <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:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui" xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop" xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:user="http://java.sun.com/jsf/composite/cditools/user"> xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:user="http://java.sun.com/jsf/composite/cditools/user" xmlns:infoview="http://java.sun.com/jsf/composite/cditools/infoview">
<h:body> <h:body>
<ui:composition template="/resources/templates/#{sessionHandler.fullscreen}/template.xhtml"> <ui:composition template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml">
<f:metadata> <f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" /> <f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" /> <f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" />
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<h1>#{i18n['incomingflow.search']}</h1>
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{incomingView.polledRead}" />
<h:form> <h:form>
<h:panelGrid columns="2" > <p:autoComplete id="acsb" value="#{infoView.multiSearchUser}" completeMethod="#{infoView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<h:outputText value="#{i18n['incomingflow.multisearch']}" /> <p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
<h:outputText value="#{i18n['incomingflow.barcode']}" /> </p:autoComplete>
<p:autoComplete id="acsb" value="#{incomingView.searchMulti}" completeMethod="#{incomingView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
<p:autoComplete id="acs" value="#{incomingView.searchBarcode}" completeMethod="#{incomingView.matchBarcode}">
<p:ajax event="itemSelect" listener="#{incomingView.changeUser}" />
</p:autoComplete>
</h:panelGrid>
</h:form> </h:form>
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <h:form>
<h1>#{i18n['incomingflow.userdetails']}</h1>
<h:panelGrid id="cropper" columns="3">
<h:panelGroup> <p:poll update="attachBarcode" interval="2" ignoreAutoUpdate="true" />
<user:edit id="usereditor" commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" camAlwaysOn="true" /> <h:panelGroup id="attachBarcode">
<h:panelGroup rendered="#{incomingView.showAttachDialog}">
<h1>#{i18n['incomingView.attachDialogTitle']}</h1>
<p:commandButton value="#{i18n['incomingView.attach']}" action="#{incomingView.attachCodeToCard}" update="@all" />
<p:commandButton value="#{i18n['incomingView.cancel']}" action="#{incomingView.hideAttachDialog}" update="@all" />
</h:panelGroup>
</h:panelGroup> </h:panelGroup>
</h:form>
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<br />
<br />
<h1>
<p:outputLabel value="#{userView.selectedUser.firstnames}" />
(
<p:outputLabel value="#{userView.selectedUser.nick}" />
)
<p:outputLabel value="#{userView.selectedUser.lastname}" />
</h1>
<br />
<h:panelGrid id="cropper" columns="2">
<h:panelGroup> <h:panelGroup>
<h:form id="imgCropperForm" rendered="#{!empty userView.user.currentImage}"> <p:fieldset legend="#{i18n['incomingflow.usereditor']}" toggleable="true">
<p:commandButton value="#{i18n['user.imageCropRefresh']}" ajax="false" update="imgCropperForm" />
<h:outputLabel value="#{i18n['user.cropUserImage']}:" /> <user:edit id="usereditor" commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" camAlwaysOn="true" photocamupdate="@all" />
<p:imageCropper id="imgCropper" value="#{userView.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{userView.user.currentImage.id}.img" /> </p:fieldset>
<br />
<h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" />
</h:form>
</h:panelGroup> </h:panelGroup>
<h:panelGroup> <h:panelGroup>
<h:form>
<p:graphicImage url="/dydata/usercard/#{userView.user.user.id}.png" width="300" />
<br />
<h:commandButton action="#{incomingView.printCard}" value="#{i18n['print']}" /> (status: #{incomingView.printedStatus})
</h:form>
</h:panelGroup>
<p:fieldset legend="#{i18n['incomingflow.printedCard']}" toggleable="true">
<h:panelGrid columns="2">
<h:panelGroup>
<h:form id="imgCropperForm" rendered="#{!empty userView.selectedUser.currentImage}">
<p:commandButton value="#{i18n['user.imageCropRefresh']}" ajax="false" update="imgCropperForm" />
<h:outputLabel value="#{i18n['user.cropUserImage']}:" />
<p:imageCropper id="imgCropper" value="#{userView.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{userView.selectedUser.currentImage.id}.img" />
<br />
<h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" />
</h:form>
</h:panelGroup>
<h:panelGroup>
<h:form>
<p:graphicImage url="/dydata/usercard/#{userView.selectedUser.user.id}.png" width="300" />
<br />
<h:commandButton action="#{incomingView.printCard}" value="#{i18n['print']}" /> (status: <p:outputLabel value="#{incomingView.printedStatus}" />)
</h:form>
</h:panelGroup>
</h:panelGrid>
</p:fieldset>
</h:panelGroup>
</h:panelGrid> </h:panelGrid>
<h:outputText rendered="#{empty incomingView.groupMemberships}" value="#{i18n['placegroupview.noMemberships']}" /> <h:outputText rendered="#{empty incomingView.groupMemberships}" value="#{i18n['placegroupview.noMemberships']}" />
...@@ -95,8 +125,6 @@ ...@@ -95,8 +125,6 @@
</p:dataTable> </p:dataTable>
</h:form> </h:form>
</ui:define> </ui:define>
<ui:define name="sidebar"> <ui:define name="sidebar">
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
xmlns:tools="http://java.sun.com/jsf/composite/cditools"> xmlns:tools="http://java.sun.com/jsf/composite/cditools">
<h:body> <h:body>
<ui:composition <ui:composition
template="/resources/templates/#{sessionHandler.fullscreen}/template.xhtml"> template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml">
<f:metadata> <f:metadata>
<f:event type="preRenderView" listener="#{incomingView.initView}" /> <f:event type="preRenderView" listener="#{incomingView.initView}" />
...@@ -26,18 +26,14 @@ ...@@ -26,18 +26,14 @@
<ui:define name="headercontent"> <ui:define name="headercontent">
<infoview:userselector />
</ui:define> </ui:define>
<ui:define name="content"> <ui:define name="content">
<infoview:userselector />
<h:form>
<h:commandButton action="#{incomingView.changeToIncomingView}" value="#{i18n['incoming.changetoview']}" />
</h:form>
<br /> <br />
<br /> <br />
<!-- reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{infoView.selectUser}" / -->
<reader:codefield selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{incomingView.selectUser}" />
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{incomingView.selectUser}" />
......
<!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:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui" xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:user="http://java.sun.com/jsf/composite/cditools/user"
xmlns:infoview="http://java.sun.com/jsf/composite/cditools/infoview"
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop"
>
<h:body>
<ui:composition template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml">
<f:metadata>
<f:viewParam name="userid" value="#{flowShopView.userId}" />
<f:event type="preRenderView" listener="#{flowShopView.initView}" />
</f:metadata>
<ui:define name="content">
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{flowShopView.polledRead}" />
<h:form>
<p:autoComplete id="acsb" value="#{infoView.multiSearchUser}" completeMethod="#{infoView.matchMulti}" converter="#{eventUserConverter}" var="usrx" itemLabel="#{usrx.shortUserDescriptor}" itemValue="#{usrx}">
<p:ajax event="itemSelect" listener="#{flowShopView.changeUser}" />
</p:autoComplete>
</h:form>
<h:form rendered="#{!userView.user.anonymous}">
<h1>Shop to user: #{userView.user.user.nick}</h1>
</h:form>
<h:form rendered="#{userView.user.anonymous}">
<h1>Infon kauppa</h1>
</h:form>
<shop:shoppingcart />
</ui:define>
<ui:define name="sidebar">
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
</p:column> </p:column>
<p: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 and placeGroupView.currentReleaseAllowed}" action="#{placeGroupView.releasePlace()}" value="#{i18n['placegroupview.releasePlace']}" />
</p:column> </p:column>
</p:dataTable> </p:dataTable>
......
...@@ -17,7 +17,8 @@ ...@@ -17,7 +17,8 @@
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<reader:backendReader />
<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{incomingView.selectUser}" />
</composite:implementation> </composite:implementation>
......
...@@ -18,19 +18,20 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader" ...@@ -18,19 +18,20 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
<composite:attribute name="showEditReader" required="false" /> <composite:attribute name="showEditReader" required="false" />
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<h:form id="reader_autopoll" rendered="#{readerView.pollingMode}"> <h:form id="autopoller">
<p:poll interval="1" listener="#{cc.attrs.selectaction}" onerror="location.reload();" />
</h:form> <h:panelGroup id="reader_autopoll">
<p:poll rendered="#{readerView.pollingMode}" interval="2" listener="#{cc.attrs.selectaction}" onerror="location.reload();" />
</h:panelGroup>
<h:form rendered="#{empty readerNameContainer.readerId}">
<p:dataTable border="1" id="reader" value="#{readerListDataView.readers}" var="rr">
<p:column> <p:dataTable rendered="#{empty readerNameContainer.readerId}" border="1" id="reader" value="#{readerListDataView.readers}" var="rr">
<p:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['reader.name']}" /> <h:outputText value="#{i18n['reader.name']}" />
</f:facet> </f:facet>
...@@ -39,23 +40,25 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader" ...@@ -39,23 +40,25 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
<p:column> <p:column>
<p:commandButton actionListener="#{readerListDataView.selectReader}" value="#{i18n['reader.select']}" update="@all" /> <p:commandButton actionListener="#{readerListDataView.selectReader}" value="#{i18n['reader.select']}" update="@all" />
</p:column> </p:column>
<p:column rendered="#{cc.attrs.showEditReader}" > <p:column rendered="#{cc.attrs.showEditReader}">
<h:link outcome="/shop/editReader" value="#{i18n['reader.edit']}"> <h:link outcome="/shop/editReader" value="#{i18n['reader.edit']}">
<f:param value="#{rr.id}" name="readerId" /> <f:param value="#{rr.id}" name="readerId" />
</h:link> </h:link>
</p:column> </p:column>
</p:dataTable> </p:dataTable>
</h:form>
<h:form>
<p:outputLabel value="#{i18n['reader.autopoll']}" /><p:selectBooleanButton offLabel="#{i18n['off']}" onLabel="#{i18n['on']}" value="#{readerView.pollingMode}" immediate="true" update="reader_autopoll" />
</h:form>
<reader:readerevents rendered="#{!empty readerNameContainer.readerId}" showAssociateToUser="#{cc.attrs.showAssociateToUser}" selectvalue="#{cc.attrs.selectvalue}" selectaction="#{cc.attrs.selectaction}" linkvalue="#{cc.attrs.linkvalue}" linkoutcome="#{cc.attrs.linkoutcome}" />
<p:outputLabel value="#{i18n['reader.autopoll']}" />&nbsp;
<p:selectBooleanButton offLabel="#{i18n['off']}" onLabel="#{i18n['on']}" value="#{readerView.pollingMode}" immediate="true">
<p:ajax update="reader_autopoll,readerevents" />
</p:selectBooleanButton>
<p:commandLink actionListener="#{readerView.changeReader}" value="#{i18n['incomingflow.changereader']}" update="@all" />
<h:panelGroup id="readerevents">
<reader:readerevents rendered="#{!empty readerNameContainer.readerId and !readerView.pollingMode}" showAssociateToUser="#{cc.attrs.showAssociateToUser}" selectvalue="#{cc.attrs.selectvalue}" selectaction="#{cc.attrs.selectaction}" linkvalue="#{cc.attrs.linkvalue}" linkoutcome="#{cc.attrs.linkoutcome}" />
</h:panelGroup>
</h:form>
</composite:implementation> </composite:implementation>
</html> </html>
\ No newline at end of file
...@@ -14,11 +14,11 @@ ...@@ -14,11 +14,11 @@
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<h:form>
<p:poll interval="3" onerror="location.reload();" update="eventlist" /> <p:poll interval="3" onerror="location.reload();" update="eventlist" />
<p:commandLink actionListener="#{readerView.changeReader}" value="#{i18n['incomingflow.changereader']}" update="@all" />
<p:dataTable border="1" id="eventlist" value="#{readerView.readerEvents}" var="event"> <p:dataTable border="1" id="eventlist" value="#{readerView.readerEvents}" var="event">
<f:facet name="header"> <f:facet name="header">
<p:outputLabel value="#{readerView.currentReader.identification}" /> <p:outputLabel value="#{readerView.currentReader.identification}" />
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
</p:column> </p:column>
</p:dataTable> </p:dataTable>
</h:form>
</composite:implementation> </composite:implementation>
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:panelGroup> <h:panelGroup>
<ui:fragment rendered="#{not empty userView.user.id}"> <ui:fragment rendered="#{not empty userView.selectedUser.id}">
<p:overlayPanel id="chartPanel" for="webcamButton" hideEffect="fade"> <p:overlayPanel id="chartPanel" for="webcamButton" hideEffect="fade">
...@@ -33,9 +33,9 @@ ...@@ -33,9 +33,9 @@
<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);" /> <p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);" />
</p:overlayPanel> </p:overlayPanel>
<h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" /> <h:outputText rendered="#{empty userView.selectedUser.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<ui:fragment rendered="#{!empty userView.user.currentImage}"> <ui:fragment rendered="#{!empty userView.selectedUser.currentImage}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.img" alt="image" /> <img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{userView.selectedUser.currentImage.id}.img" alt="image" />
</ui:fragment> </ui:fragment>
<br /> <br />
<p:commandButton id="webcamButton" value="#{i18n['userimage.webcam']}" onerror="location.reload(true);" type="button" /> <p:commandButton id="webcamButton" value="#{i18n['userimage.webcam']}" onerror="location.reload(true);" type="button" />
......
...@@ -21,16 +21,16 @@ ...@@ -21,16 +21,16 @@
<h:form id="userform" enctype="multipart/form-data"> <h:form id="userform" enctype="multipart/form-data">
<h:panelGroup> <h:panelGroup>
<ui:fragment rendered="#{not empty userView.user.id}"> <ui:fragment rendered="#{not empty userView.selectedUser.id}">
<p:dialog id="chartPanel" for="webcamButton" modal="true" dynamic="true" widgetVar="webcamDialog"> <p:dialog id="chartPanel" for="webcamButton" modal="true" dynamic="true" widgetVar="webcamDialog">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" /> <p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" />
<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);"/> <p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);"/>
</p:dialog> </p:dialog>
<h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" /> <h:outputText rendered="#{empty userView.selectedUser.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<ui:fragment rendered="#{!empty userView.user.currentImage}"> <ui:fragment rendered="#{!empty userView.selectedUser.currentImage}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.img" alt="image" /> <img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{userView.selectedUser.currentImage.id}.img" alt="image" />
</ui:fragment> </ui:fragment>
<br /> <br />
<p:commandButton onerror="location.reload(true);" rendered="#{!cc.attrs.camAlwaysOn}" id="webcamButton" value="#{i18n['userimage.webcam']}" onclick="PF('webcamDialog').show()" type="button" /> <p:commandButton onerror="location.reload(true);" rendered="#{!cc.attrs.camAlwaysOn}" id="webcamButton" value="#{i18n['userimage.webcam']}" onclick="PF('webcamDialog').show()" type="button" />
...@@ -38,9 +38,8 @@ ...@@ -38,9 +38,8 @@
<br /> <br />
<br /> <br />
<ui:fragment rendered="#{cc.attrs.camAlwaysOn}"> <ui:fragment rendered="#{cc.attrs.camAlwaysOn}">
photoupdate: #{cc.attrs.photocamupdate}
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="#{cc.attrs.photocamupdate}" /> <p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="#{cc.attrs.photocamupdate}" />
<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);" /> <p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);" update="#{cc.attrs.photocamupdate}" />
</ui:fragment> </ui:fragment>
<!-- --> <!-- -->
&nbsp; &nbsp;
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<p:dataTable styleClass="bordertable" id="usertable" value="#{userSearchView.eventuserModel}" rows="20" paginator="true" lazy="true" var="user"> <p:dataTable styleClass="bordertable" id="usertable" value="#{userSearchView.eventuserModel}" rows="1000" paginator="true" lazy="true" var="user">
<p:column headerText="#{i18n['user.nick']}" sortBy="#{user.nick}"> <p:column headerText="#{i18n['user.nick']}" sortBy="#{user.nick}">
<h:outputText styleClass="hoverable" value="#{(empty user.nick)?'----':user.nick}" /> <h:outputText styleClass="hoverable" value="#{(empty user.nick)?'----':user.nick}" />
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,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" />
<p:dataTable id="user" value="#{userSearchView.userModel}" rows="20" var="wra" paginator="true" lazy="true"> <p:dataTable id="user" value="#{userSearchView.userModel}" rows="500" var="wra" paginator="true" lazy="true">
<p:column sortBy="#{wra.user.nick}" headerText="#{i18n['user.nick']}"> <p:column sortBy="#{wra.user.nick}" headerText="#{i18n['user.nick']}">
<h:outputText value="#{(empty wra.user.nick)?'----':wra.user.nick}" /> <h:outputText value="#{(empty wra.user.nick)?'----':wra.user.nick}" />
......
/* General css, use for non-layout purposes for general elements */
/* userlistview popup */
.userdata_popup {
position: absolute;
border: 1px solid black;
background: white;
border-radius: 3px;
display: none;
width: 300px;
height: 150px;
}
/* general class for hoverable usage */
.hoverable {
}
.hidden {
display: none;
}
#webcamcontainer {
}
#shopItems {
}
.ui-panel-title {
text-overflow: clip;
}
.shopItem, .touchItem {
float: left;
width: 72px;
height: 72px;
background: #40BDE8;
border: 1px solid black;
margin: 2px;
}
a.shopItem, a.touchItem {
color: black !important;
}
a.shopItem div, a.touchItem div {
position: absolute;
height: 72px;
width: 72px;
text-align: center;
/* Firefox */
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-pack: center;
-moz-box-align: center;
/* Safari and Chrome */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
-webkit-box-align: center;
/* W3C */
display: box;
box-orient: horizontal;
box-pack: center;
box-align: center;
clip: rect(0, 72px, 72px, 0);
}
}
a.shopItem:hover, a.touchItem:hover {
background: rgba(255,255,255,0.4);
}
a.shopItem:active, a.touchItem:active {
background: red;
}
\ No newline at end of file
* {
padding: 0;
margin: 0;
}
body {
margin: 0em;
font-size: 62.5%;
background-color: #fff;
font-family: verdana, arial, sans-serif;
} /*Font-size: 1.0em = 10px when browser default size is 16px*/
#page-container {
width: 900px;
margin: 0 auto;
border: 1px solid #bbb;
margin-top: 10px;
background: white;
border-radius: 12px;
background: rgb(255, 255, 255) url("../img/bg_main_nav.jpg");
}
#page-header {
height: 80px;
background: rgb(240, 240, 240) url("../img/bg_head_top.jpg");
overflow: visible !important /*Firefox*/;
overflow: hidden /*IE6*/;
border-radius: 12px 12px 0 0;
}
#login {
margin-top: 10px;
margin-right: 10px;
float: right;
text-align: right;
}
#login a,#login a:visited {
text-decoration: none;
color: black;
font-weight: bold;
}
#login a:hover {
color: red;
}
#top-menu {
position: relative;
z-index: 0;
top: 2em;
}
#top-menu ul {
float: left;
width: 100%;
padding-left: 25px;
border: 1px solid rgba(200, 200, 200, 0);
background: rgba(200, 200, 200, 0);
border-radius: 16px 16px 0 0;
}
#top-menu li {
display: inline;
list-style: none;
}
#top-menu li a {
display: block;
line-height: 1.7em;
float: left;
padding: 2px 5px 2px 5px;
color: rgb(125, 125, 125);
text-decoration: none;
font-size: 120%;
background-color: rgba(100, 100, 100, 0.1);
color: rgba(0, 0, 0, 0.3);
border-radius: 12px 12px 0 0;
border: 1px solid rgba(0, 0, 0, 0.1);
border-bottom: none;
}
#top-menu a:hover {
text-decoration: none;
color: rgb(50, 50, 50);
}
#top-menu li .active {
font-weight: bold;
background-color: rgba(250, 250, 250, 0.4);
color: rgba(0, 0, 0, 1);
border-radius: 12px 12px 0 0;
border: 1px solid black;
border-bottom: none
}
#pageheader {
background: red;
}
#main {
clear: both;
}
#main-nav {
float: left;
width: 100%;
border-top: 1px solid #bbb;
border-bottom: 1px solid #bbb;
background: rgb(220, 220, 220) url("../img/bg_head_bottom_nav.jpg")
repeat-x;
color: rgb(75, 75, 75);
font-size: 130%;
}
#main-nav ul {
list-style-type: none;
}
#main-nav ul li {
float: left;
position: relative;
z-index: auto !important /*Non-IE6*/;
z-index: 1000 /*IE6*/;
}
#main-nav ul li a {
float: none !important /*Non-IE6*/;
float: left /*IE-6*/;
display: block;
height: 3.1em;
line-height: 3.1em;
padding: 0 16px 0 16px;
text-decoration: none;
font-weight: bold;
color: rgb(100, 100, 100);
}
#main-nav ul li ul {
display: none;
border: none;
}
#main-nav ul li .active {
font-weight: bold;
background-color: rgba(0, 150, 250, 0.35);
color: rgba(255, 255, 250, 0.8);
}
#main-nav ul li:hover a {
background-color: rgba(0, 150, 250, 0.1);
text-decoration: none;
} /*Color main cells hovering mode*/
#main-nav ul li:hover ul {
display: block;
width: 10.0em;
position: absolute;
z-index: 999;
top: 3.0em;
margin-top: 0.1em;
left: 0;
}
#main-nav ul li:hover ul li a {
display: block;
width: 10.0em;
height: auto;
line-height: 1.3em;
margin-left: -1px;
padding: 4px 16px 4px 16px;
border-left: solid 1px rgb(175, 175, 175);
border-bottom: solid 1px rgb(175, 175, 175);
background-color: rgb(237, 237, 237);
font-weight: normal;
color: rgb(50, 50, 50);
} /*Color subcells normal mode*/
#main-nav ul li:hover ul li a:hover {
background-color: rgb(210, 210, 210);
text-decoration: none;
} /*Color subcells hovering mode*/
.container.top,.container.bottom {
clear: both;
text-align: center;
margin-bottom: 2em;
margin-top: 1em;
padding-left: 2em;
}
.container.top a,.container.bottom a {
font-size: 90%;
color: #aaa;
text-decoration: none;
}
#right {
display: inline /*Fix IE floating margin bug*/;
float: right;
overflow: visible !important /*Firefox*/;
overflow: hidden /*IE6*/;
}
#right {
width: 400px;
float-left: 1px solid black;
}
#left {
display: inline; /*Fix IE floating margin bug*/;
float: left;
width: 660px;
margin: 0 20px;
overflow: visible !important /*Firefox*/;
overflow: hidden /*IE6*/;
}
#left h1 {
margin-bottom: 1em;
}
#left a {
text-decoration: none;
color: blue;
}
#left:a visited {
color: blue;
}
#left h1,#left h2,#left p {
margin-bottom: 1.5em;
}
.container.bottom {
clear: both;
}
table {
border: none;
border-spacing: 0;
width: 100%;
text-align: left;
margin-bottom: 1.5em;
}
table thead th {
border: none;
font-size: 120%;
}
table thead th {
border-bottom: 1px solid black;
padding: 5px;
padding-left: 1em;
}
table tbody td {
border: none;
padding: 5px;
padding-left: 1em;
vertical-align: top;
}
label {
}
.expired {
color: #c0c0c0;
}
.bgColor1 {
background-color: #68A3C2;
}
#header {
clear: both;
float: left;
width: 100%;
border-bottom: 4px solid #333;
}
#header a {
color: white;
text-decoration: none;
}
#header_left {
float: left;
width: 400px;
}
#header_center {
float: left;
widows: 300px;
}
#header_right {
text-align: right;
float: right;
width: 400px;
}
.success {
color: #006600;
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html" locale="#{sessionHandler.locale}">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><h:outputText value="#{layoutView.getHeader()}" /></title>
<meta name="description" content="Lippukauppa" />
<meta name="author" content="CodeCrew ry" />
<meta http-equiv="Content-Language" content="fi" />
<link rel="icon" href="#{request.contextPath}/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/blipview/css/style.css" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/blipview/css/general.css" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/templates/custom_components.css" />
<ui:insert name="headerdata" />
</h:head>
<h:body>
<div id="header" class="bgColor1">
<div id="header_left">
<h:link outcome="/index">
<c:choose>
<c:when test="#{sessionHandler.isInDevelopmentMode()}">
<img src="#{request.contextPath}/resources/templates/insomnia2/img/devel_logo.png" />
</c:when>
<c:otherwise>
<p:graphicImage rendered="#{!empty layoutView.headerimage}" value="#{layoutView.headerimage}" />
<ui:fragment rendered="#{empty layoutView.headerimage}">
<h1>
<h:outputText value="#{layoutView.headertext}" />
</h1>
</ui:fragment>
</c:otherwise>
</c:choose>
</h:link>
<div class="topmenu">
<h:form>
<p:menubar rendered="#{primeMenuView.hasSecondaryMenu}" model="#{primeMenuView.secondaryMenuModel}" />
</h:form>
</div>
</div>
<div id="header_center">
<ui:insert name="headercontent" />
</div>
<div id="header_right">
<img src="#{request.contextPath}/resources/templates/template1/img/moya_logo.png" />
</div>
</div>
<div class="container top">
<ui:insert name="topbar" />
<h:form id="dialogs">
<p:confirmDialog id="confirmDialog" global="true" showEffect="fade" hideEffect="explode">
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
<p:growl id="growl" showDetail="true" sticky="true" autoUpdate="true" />
</h:form>
</div>
<div class="clearfix"></div>
<div>
<ui:insert name="content" />
</div>
</h:body>
</f:view>
</html>
\ No newline at end of file
...@@ -72,6 +72,11 @@ public class SessionHandler { ...@@ -72,6 +72,11 @@ public class SessionHandler {
template = "blipview"; template = "blipview";
return template; return template;
} }
public String getInfoscreen() {
template = "infoview";
return template;
}
public String getAdduserfullscreen() { public String getAdduserfullscreen() {
template = "adduser"; template = "adduser";
......
...@@ -160,7 +160,15 @@ global.save = Save ...@@ -160,7 +160,15 @@ global.save = Save
httpsession.creationTime = Created httpsession.creationTime = Created
incomingflow.giveplace = Merkitse annetuksi incomingflow.alreadyShowingUser.message = Piipattu k\u00E4ytt\u00E4j\u00E4 on jo n\u00E4kyviss\u00E4
incomingflow.alreadyShowingUser.title = Valmiiksi valittu
incomingflow.codeattached.message = Piipattu koodi liitetty n\u00E4ytett\u00E4v\u00E4\u00E4n korttiin
incomingflow.codeattached.title = Koodi liittetty
incomingflow.giveplace = Merkitse annetuksi
incomingflow.invalidbarcode.message = Viivakoodilla ei l\u00F6ytynyt mit\u00E4\u00E4n
incomingflow.invalidbarcode.title = virheellinen koodi
incomingflow.printedCard = Kortti
incomingflow.usereditor = K\u00E4ytt\u00E4j\u00E4
lanEventPrivateProperty.defaultValue = Default value lanEventPrivateProperty.defaultValue = Default value
lanEventPrivateProperty.editProperty = Edit property lanEventPrivateProperty.editProperty = Edit property
...@@ -190,6 +198,10 @@ navi.auth.login = frontpage ...@@ -190,6 +198,10 @@ navi.auth.login = frontpage
navi.auth.loginerror = frontpage navi.auth.loginerror = frontpage
navi.auth.logout = frontpage navi.auth.logout = frontpage
off = Pois
on = P\u00E4\u00E4ll\u00E4
page.bill.billSummary.header = Summary of bills page.bill.billSummary.header = Summary of bills
page.bill.edit.header = Edit bill page.bill.edit.header = Edit bill
page.bill.list.header = Bills page.bill.list.header = Bills
...@@ -224,6 +236,8 @@ productshop.minusTen = -10 ...@@ -224,6 +236,8 @@ productshop.minusTen = -10
productshop.plusOne = +1 productshop.plusOne = +1
productshop.plusTen = +10 productshop.plusTen = +10
reader.autopoll = Jatkuva lukijan seuraaminen
registerleaflet.title = Rekisteriseloste registerleaflet.title = Rekisteriseloste
resetMail.header = Reset lost password resetMail.header = Reset lost password
...@@ -232,17 +246,18 @@ resetMail.username = Username ...@@ -232,17 +246,18 @@ resetMail.username = Username
resetmailSent.body = Email has been sent containing a link where you can change the password. resetmailSent.body = Email has been sent containing a link where you can change the password.
resetmailSent.header = Email sent resetmailSent.header = Email sent
submenu.NotImplementedYet = Not implemented submenu.NotImplementedYet = Not implemented
submenu.admin.adduser = K\u00E4ytt\u00E4j\u00E4nlis\u00E4ys submenu.admin.adduser = K\u00E4ytt\u00E4j\u00E4nlis\u00E4ys
submenu.admin.adduser.index = K\u00E4ytt\u00E4j\u00E4nlis\u00E4ys submenu.admin.adduser.index = K\u00E4ytt\u00E4j\u00E4nlis\u00E4ys
submenu.frontpage = Frontpage submenu.frontpage = Frontpage
submenu.info.incoming = Incomingview submenu.info.incoming = Sis\u00E4\u00E4ntulo
submenu.info.index = Infon\u00E4kym\u00E4 submenu.info.index = Infon\u00E4kym\u00E4
submenu.info.shop = Kauppa
subnavi.cards = \u0009\u0009 subnavi.cards = \u0009\u0009
subnavi.info = Info subnavi.info = Info
topnavi.license = Lisenssikoodit topnavi.license = Lisenssikoodit
user.cropImage = Crop user.cropImage = Crop
user.imageUpload.imageNotFound = Select image to upload user.imageUpload.imageNotFound = Select image to upload
......
...@@ -462,13 +462,21 @@ imagefile.file = Imagefile ...@@ -462,13 +462,21 @@ imagefile.file = Imagefile
importuser.file = File importuser.file = File
importuser.template = Template importuser.template = Template
incomingflow.barcode = Barcode incomingflow.alreadyShowingUser.message = We are already showing selected user
incomingflow.changereader = Change Reader incomingflow.alreadyShowingUser.title = Already selected
incomingflow.giveplace = Mark given incomingflow.barcode = Barcode
incomingflow.multisearch = Multisearch incomingflow.changereader = Change Reader
incomingflow.search = Search incomingflow.codeattached.message = Code attached to current user's card
incomingflow.ungiveplace = Mark not given incomingflow.codeattached.title = Code attached
incomingflow.userdetails = User details incomingflow.giveplace = Mark given
incomingflow.invalidbarcode.message = Nothing found with barcode, you can now add it to the user
incomingflow.invalidbarcode.title = Invalid code
incomingflow.multisearch = Multisearch
incomingflow.printedCard = Card
incomingflow.search = Search
incomingflow.ungiveplace = Mark not given
incomingflow.userdetails = User details
incomingflow.usereditor = User
infoview.back = Back infoview.back = Back
infoview.computerplace = Computer places infoview.computerplace = Computer places
...@@ -624,6 +632,10 @@ newsgroup.writerRole = Writer roles ...@@ -624,6 +632,10 @@ newsgroup.writerRole = Writer roles
newslist.header = Newsgroups newslist.header = Newsgroups
off = Off
on = On
org.hibernate.validator.constraints.Email.message = not a well-formed email address org.hibernate.validator.constraints.Email.message = not a well-formed email address
org.hibernate.validator.constraints.Length.message = length must be between {min} and {max} org.hibernate.validator.constraints.Length.message = length must be between {min} and {max}
org.hibernate.validator.constraints.NotEmpty.message = may not be empty org.hibernate.validator.constraints.NotEmpty.message = may not be empty
...@@ -851,6 +863,7 @@ productshop.total = Total ...@@ -851,6 +863,7 @@ productshop.total = Total
reader.assocToCard = Associate to card reader.assocToCard = Associate to card
reader.automaticProduct = Default product reader.automaticProduct = Default product
reader.automaticProductCount = Amount reader.automaticProductCount = Amount
reader.autopoll = Reader autopoll
reader.create = Create reader reader.create = Create reader
reader.createNewCard = Create new card reader.createNewCard = Create new card
reader.description = Description reader.description = Description
...@@ -1020,8 +1033,9 @@ submenu.foodmanager.listFoodwaves = List active foodwaves ...@@ -1020,8 +1033,9 @@ submenu.foodmanager.listFoodwaves = List active foodwaves
submenu.foodwave.list = Foodwaves submenu.foodwave.list = Foodwaves
submenu.foodwave.listTemplates = Food provides submenu.foodwave.listTemplates = Food provides
submenu.index = Frontpage submenu.index = Frontpage
submenu.info.incoming = Sis\u00E4\u00E4ntulo submenu.info.incoming = Incomingview
submenu.info.index = Infoview submenu.info.index = Infoview
submenu.info.shop = Shop
submenu.license.manageCodes = Manage codes submenu.license.manageCodes = Manage codes
submenu.license.viewCodes = View codes submenu.license.viewCodes = View codes
submenu.map.create = Create map submenu.map.create = Create map
......
...@@ -191,7 +191,20 @@ bortalApplication.user.VITUTTAAKO = Saa avautua ...@@ -191,7 +191,20 @@ bortalApplication.user.VITUTTAAKO = Saa avautua
bortalApplication.user.WRITE_ORGROLES = Saa muokata organisaation rooleja bortalApplication.user.WRITE_ORGROLES = Saa muokata organisaation rooleja
bortalApplication.user.WRITE_ROLES = Saa muokata rooleja bortalApplication.user.WRITE_ROLES = Saa muokata rooleja
card.massprint.title = Tulosta kaikki card.massprint.title = Tulosta kaikki
cardObjectData.create = Liit\u00E4 kuvia
cardObjectData.edit = Muokkaa
cardObjectData.save = Tallenna
cardObjectData.size = Leveys (px)
cardObjectData.type = Tyyppi
cardObjectData.type.CARDS_BARCODE = Kortin viivakoodi
cardObjectData.type.UNKNOWN = Tuntematon
cardObjectData.type.USERS_BARCODE = K\u00E4ytt\u00E4j\u00E4n viivakoodi
cardObjectData.type.USERS_PICTURE = K\u00E4ytt\u00E4j\u00E4n kuva
cardObjectData.x = X koordinaatti
cardObjectData.y = Y koordinaatti
cardObjectData.zindex = Z index
cardTemplate.create = Luo cardTemplate.create = Luo
cardTemplate.edit = Muokkaa cardTemplate.edit = Muokkaa
...@@ -203,51 +216,37 @@ cardTemplate.roles = Yhdistetyt roolit ...@@ -203,51 +216,37 @@ cardTemplate.roles = Yhdistetyt roolit
cardTemplate.save = Tallenna cardTemplate.save = Tallenna
cardTemplate.sendImage = Lataa kuva cardTemplate.sendImage = Lataa kuva
cardTemplateData.list = Ohjeissislln listaus cardTemplateData.list = Ohjeissis\u00E4ll\u00F6n listaus
cardObjectData.create = Liit kuvia cardTextData.create = Liit\u00E4 teksti\u00E4
cardObjectData.save = Tallenna cardTextData.edit = Muokkaa
cardObjectData.edit = Muokkaa cardTextData.fontcolor = Fontin v\u00E4ri
cardObjectData.x = X koordinaatti cardTextData.fontname = Fontin nimi
cardObjectData.y = Y koordinaatti cardTextData.fontstyle = Fontin tyyli
cardObjectData.size = Leveys (px) cardTextData.fontstyle.BOLD = Bold
cardObjectData.zindex = Z index cardTextData.fontstyle.BOLDITALIC = Bold ja Italic
cardObjectData.type = Tyyppi cardTextData.fontstyle.ITALIC = Italic
cardObjectData.type.UNKNOWN = Tuntematon cardTextData.fontstyle.PLAIN = Ei tyylittely\u00E4
cardObjectData.type.USERS_PICTURE = Kyttjn kuva cardTextData.save = Tallenna
cardObjectData.type.USERS_BARCODE = Kyttjn viivakoodi cardTextData.size = Tekstin koko (px)
cardObjectData.type.CARDS_BARCODE = Kortin viivakoodi cardTextData.text = Kiinte\u00E4 teksti
cardTextData.textalignment = Fontin sijoittelu
cardTextData.create = Liit teksti cardTextData.textalignment.CENTER = Keskell\u00E4
cardTextData.save = Tallenna cardTextData.textalignment.LEFT = Vasen
cardTextData.edit = Muokkaa cardTextData.textalignment.RIGHT = Oikea
cardTextData.x = X koordinaatti cardTextData.type = Tyyppi
cardTextData.y = Y koordinaatti cardTextData.type.AGE = Ik\u00E4
cardTextData.size = Tekstin koko (px) cardTextData.type.AUTHCODE = MoyaAuth koodi
cardTextData.zindex = Z index cardTextData.type.FIRSTNAME = Etunimi
cardTextData.fontname = Fontin nimi cardTextData.type.LASTNAME = Sukunimi
cardTextData.fontcolor = Fontin vri cardTextData.type.NICK = Nimimerkki
cardTextData.fontstyle = Fontin tyyli cardTextData.type.ROLE = Rooli
cardTextData.fontstyle.PLAIN = Ei tyylittely cardTextData.type.STATIC = Staattinen
cardTextData.fontstyle.BOLD = Bold cardTextData.type.UNKNOWN = Tuntematon
cardTextData.fontstyle.ITALIC = Italic cardTextData.type.WHOLENAME = Kokonimi
cardTextData.fontstyle.BOLDITALIC = Bold ja Italic cardTextData.x = X koordinaatti
cardTextData.textalignment = Fontin sijoittelu cardTextData.y = Y koordinaatti
cardTextData.textalignment.LEFT = Vasen cardTextData.zindex = Z index
cardTextData.textalignment.CENTER = Keskell
cardTextData.textalignment.RIGHT = Oikea
cardTextData.text = Kiinte teksti
cardTextData.type = Tyyppi
cardTextData.type.UNKNOWN = Tuntematon
cardTextData.type.NICK = Nimimerkki
cardTextData.type.WHOLENAME = Kokonimi
cardTextData.type.FIRSTNAME = Etunimi
cardTextData.type.LASTNAME = Sukunimi
cardTextData.type.STATIC = Staattinen
cardTextData.type.AGE = Ik
cardTextData.type.ROLE = Rooli
cardTextData.type.AUTHCODE = MoyaAuth koodi
cart.item = Tuote cart.item = Tuote
cart.item_quantity = M\u00E4\u00E4r\u00E4 cart.item_quantity = M\u00E4\u00E4r\u00E4
...@@ -471,13 +470,21 @@ imagefile.file = Kuvatiedosto ...@@ -471,13 +470,21 @@ imagefile.file = Kuvatiedosto
importuser.file = Tiedosto importuser.file = Tiedosto
importuser.template = Malli importuser.template = Malli
incomingflow.barcode = Viivakoodi incomingflow.alreadyShowingUser.message = Piipattu k\u00E4ytt\u00E4j\u00E4 on jo n\u00E4kyviss\u00E4
incomingflow.changereader = Vaihda lukijaa incomingflow.alreadyShowingUser.title = Valmiiksi valittu
incomingflow.giveplace = Merkitse annetuksi incomingflow.barcode = Viivakoodi
incomingflow.multisearch = Monihaku incomingflow.changereader = Vaihda lukijaa
incomingflow.search = Etsi incomingflow.codeattached.message = Piipattu koodi liitetty aktiiviseen k\u00E4ytt\u00E4j\u00E4\u00E4n
incomingflow.ungiveplace = Ei olekkaan annettu incomingflow.codeattached.title = Koodi liitetty
incomingflow.userdetails = K\u00E4ytt\u00E4j\u00E4n tiedot incomingflow.giveplace = Merkitse annetuksi
incomingflow.invalidbarcode.message = Piipatulla koodilla ei l\u00F6ytynyt mit\u00E4\u00E4n, voit lis\u00E4t\u00E4 koodin k\u00E4ytt\u00E4j\u00E4\u00E4n
incomingflow.invalidbarcode.title = Virheellinen koodi
incomingflow.multisearch = Monihaku
incomingflow.printedCard = Kortti
incomingflow.search = Etsi
incomingflow.ungiveplace = Ei olekkaan annettu
incomingflow.userdetails = K\u00E4ytt\u00E4j\u00E4n tiedot
incomingflow.usereditor = K\u00E4ytt\u00E4j\u00E4
index.title = Etusivu index.title = Etusivu
...@@ -634,6 +641,10 @@ newsgroup.writerRole = Kirjoittajaryhm\u00E4 ...@@ -634,6 +641,10 @@ newsgroup.writerRole = Kirjoittajaryhm\u00E4
newslist.header = Uutisryhm\u00E4t newslist.header = Uutisryhm\u00E4t
off = Pois
on = P\u00E4\u00E4ll\u00E4
org.hibernate.validator.constraints.Email.message = V\u00E4\u00E4rin muotoiltu s\u00E4hk\u00F6postiosoite org.hibernate.validator.constraints.Email.message = V\u00E4\u00E4rin muotoiltu s\u00E4hk\u00F6postiosoite
org.hibernate.validator.constraints.Length.message = length must be between {min} and {max} org.hibernate.validator.constraints.Length.message = length must be between {min} and {max}
org.hibernate.validator.constraints.NotEmpty.message = may not be empty org.hibernate.validator.constraints.NotEmpty.message = may not be empty
...@@ -779,11 +790,11 @@ poll.save = L\u00E4het\u00E4 vastauksesi ...@@ -779,11 +790,11 @@ poll.save = L\u00E4het\u00E4 vastauksesi
print = Tulosta print = Tulosta
printedCard.template = Kortin template printedCard.cardState = Kortin tila
printedCard.cardState = Kortin tila printedCard.cardState.PENDING_VALIDATION = Odottaa hyv\u00E4ksynt\u00E4\u00E4
printedCard.cardState.PENDING_VALIDATION = Odottaa hyvksynt printedCard.cardState.REJECTED = Hyl\u00E4tty
printedCard.cardState.VALIDATED = Hyvksytty printedCard.cardState.VALIDATED = Hyv\u00E4ksytty
printedCard.cardState.REJECTED = Hyltty printedCard.template = Kortin template
product.barcode = Viivakoodi product.barcode = Viivakoodi
product.billed = Laskutettu product.billed = Laskutettu
...@@ -837,6 +848,7 @@ productshop.total = Yhteens\u00E4 ...@@ -837,6 +848,7 @@ productshop.total = Yhteens\u00E4
reader.assocToCard = Yhdist\u00E4 korttiin reader.assocToCard = Yhdist\u00E4 korttiin
reader.automaticProduct = Oletustuote reader.automaticProduct = Oletustuote
reader.automaticProductCount = M\u00E4\u00E4r\u00E4 reader.automaticProductCount = M\u00E4\u00E4r\u00E4
reader.autopoll = Jatkuva lukijan seuraaminen
reader.create = Luo lukija reader.create = Luo lukija
reader.createNewCard = Luo uusi kortti reader.createNewCard = Luo uusi kortti
reader.description = Kuvaus reader.description = Kuvaus
...@@ -861,15 +873,15 @@ readerview.cards = Kortit ( tulostuslkm ) ...@@ -861,15 +873,15 @@ readerview.cards = Kortit ( tulostuslkm )
registerleaflet.title = Rekisteriseloste registerleaflet.title = Rekisteriseloste
rejectcard.mailSubject = {0} -tapahtuman profiilin kuva hyltty rejectcard.body = Viestin sis\u00E4lt\u00F6
rejectcard.mailBody = {0} -tapahtuman profiiliisi sytetty kuva on hyltty soveltumattomana. Syt uusi kuva vlittmsti. Kuvan saat asetettua profiili-sivulta. Hyvksyttvss kuvassa kasvosi tulee nky selkesti ja kokonaan. Tarkista uuden kuvan lhettmisen jlkeen, ett se on rajautunut oikein ja on oikeassa asennossa. rejectcard.mailBody = {0} -tapahtuman profiiliisi sy\u00F6tetty kuva on hyl\u00E4tty soveltumattomana. Sy\u00F6t\u00E4 uusi kuva v\u00E4litt\u00F6m\u00E4sti. Kuvan saat asetettua profiili-sivulta. Hyv\u00E4ksytt\u00E4v\u00E4ss\u00E4 kuvassa kasvosi tulee n\u00E4ky\u00E4 selke\u00E4sti ja kokonaan. Tarkista uuden kuvan l\u00E4hett\u00E4misen j\u00E4lkeen, ett\u00E4 se on rajautunut oikein ja on oikeassa asennossa.
rejectcard.toAddr = Shkpostiosoite rejectcard.mailSubject = {0} -tapahtuman profiilin kuva hyl\u00E4tty
rejectcard.toName = Nimi rejectcard.reject = Hylk\u00E4\u00E4
rejectcard.body = Viestin sislt rejectcard.sendAndReject = L\u00E4het\u00E4 ja hylk\u00E4\u00E4
rejectcard.subject = Viestin otsikko rejectcard.sendRejectionMail = L\u00E4het\u00E4 s\u00E4hk\u00F6postia
rejectcard.sendRejectionMail = Lhet shkpostia rejectcard.subject = Viestin otsikko
rejectcard.sendAndReject = Lhet ja hylk rejectcard.toAddr = S\u00E4hk\u00F6postiosoite
rejectcard.reject = Hylk rejectcard.toName = Nimi
resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi tai tunnukseen liitetyn s\u00E4hk\u00F6postiosoitteen allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan. resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi tai tunnukseen liitetyn s\u00E4hk\u00F6postiosoitteen allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan.
resetMail.email = S\u00E4hk\u00F6postiosoite resetMail.email = S\u00E4hk\u00F6postiosoite
...@@ -1001,8 +1013,9 @@ submenu.foodmanager.listFoodwaves = Aktiiviset ruokatilaukset ...@@ -1001,8 +1013,9 @@ submenu.foodmanager.listFoodwaves = Aktiiviset ruokatilaukset
submenu.foodwave.list = Ruokatilaukset submenu.foodwave.list = Ruokatilaukset
submenu.frontpage = Etusivu submenu.frontpage = Etusivu
submenu.index = Etusivu submenu.index = Etusivu
submenu.info.incoming = Incomingview submenu.info.incoming = Sis\u00E4\u00E4ntulo
submenu.info.index = Infon\u00E4kym\u00E4 submenu.info.index = Infon\u00E4kym\u00E4
submenu.info.shop = Kauppa
submenu.license.manageCodes = Hallinnoi lisenssej\u00E4 submenu.license.manageCodes = Hallinnoi lisenssej\u00E4
submenu.license.viewCodes = N\u00E4yt\u00E4 koodit submenu.license.viewCodes = N\u00E4yt\u00E4 koodit
submenu.map.create = Uusi kartta submenu.map.create = Uusi kartta
...@@ -1316,8 +1329,6 @@ user.wholeName = Nimi ...@@ -1316,8 +1329,6 @@ user.wholeName = Nimi
user.wholename = Koko nimi user.wholename = Koko nimi
user.zipCode = Postinumero user.zipCode = Postinumero
userImport.commit = Hyv\u00E4ksy userImport.commit = Hyv\u00E4ksy
userView.image = Kuva userView.image = Kuva
......
...@@ -68,7 +68,16 @@ public class PlacegroupView extends GenericCDIView { ...@@ -68,7 +68,16 @@ public class PlacegroupView extends GenericCDIView {
return true; return true;
return false; return false;
} }
public boolean isCurrentReleaseAllowed() {
GroupMembership row = memberlist.getRowData();
if(row.getEnteredEvent() != null && !permbean.hasPermission(MapPermission.MANAGE_OTHERS))
return false;
return true;
}
public ListDataModel<GroupMembership> getGroupMemberships() { public ListDataModel<GroupMembership> getGroupMemberships() {
memberlist = new ListDataModel<GroupMembership>( memberlist = new ListDataModel<GroupMembership>(
placegroupBean.getMembershipsAndCreations(user)); placegroupBean.getMembershipsAndCreations(user));
...@@ -78,14 +87,13 @@ public class PlacegroupView extends GenericCDIView { ...@@ -78,14 +87,13 @@ public class PlacegroupView extends GenericCDIView {
public String releasePlace() { public String releasePlace() {
GroupMembership row = memberlist.getRowData(); GroupMembership row = memberlist.getRowData();
if (row != null) { if (row != null) {
if (permbean.isCurrentUser(row.getPlaceGroup().getCreator()) if (permbean.isCurrentUser(row.getPlaceGroup().getCreator()) || permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
|| permbean.hasPermission(MapPermission.MANAGE_OTHERS)) {
placegroupBean.releaseAndGenerateToken(row); placegroupBean.releaseAndGenerateToken(row);
this.addFaceMessage("placegroupview.placeReleased", row
.getPlaceReservation().getName()); this.addFaceMessage("placegroupview.placeReleased", row.getPlaceReservation().getName());
} else { } else {
this.addFaceMessage("placegroupview.placeReleaseFailed", row this.addFaceMessage("placegroupview.placeReleaseFailed", row.getPlaceReservation().getName());
.getPlaceReservation().getName());
} }
} }
......
...@@ -12,6 +12,7 @@ public class ReaderNameContainer implements Serializable { ...@@ -12,6 +12,7 @@ public class ReaderNameContainer implements Serializable {
private static final long serialVersionUID = 571747919767505523L; private static final long serialVersionUID = 571747919767505523L;
private Integer readerId; private Integer readerId;
private boolean autopoll = false;
public Integer getReaderId() { public Integer getReaderId() {
return readerId; return readerId;
...@@ -21,4 +22,12 @@ public class ReaderNameContainer implements Serializable { ...@@ -21,4 +22,12 @@ public class ReaderNameContainer implements Serializable {
this.readerId = readerId; this.readerId = readerId;
} }
public boolean isAutopoll() {
return autopoll;
}
public void setAutopoll(boolean autopoll) {
this.autopoll = autopoll;
}
} }
...@@ -5,6 +5,7 @@ import java.util.List; ...@@ -5,6 +5,7 @@ import java.util.List;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.enterprise.context.SessionScoped;
import javax.faces.model.ListDataModel; import javax.faces.model.ListDataModel;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
...@@ -32,13 +33,12 @@ import fi.codecrew.moya.web.cdiview.GenericCDIView; ...@@ -32,13 +33,12 @@ import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.shop.UserCardWrapper; import fi.codecrew.moya.web.cdiview.shop.UserCardWrapper;
import fi.codecrew.moya.web.cdiview.user.UserView; import fi.codecrew.moya.web.cdiview.user.UserView;
@Named @Named
@ConversationScoped @SessionScoped
public class ReaderView extends GenericCDIView { public class ReaderView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L; private static final long serialVersionUID = 802344850073689859L;
private boolean pollingMode = false;
private ReaderEvent lastReadEvent = null; private ReaderEvent lastReadEvent = null;
private transient ListDataModel<UserCardWrapper> userlist; private transient ListDataModel<UserCardWrapper> userlist;
...@@ -233,11 +233,17 @@ public class ReaderView extends GenericCDIView { ...@@ -233,11 +233,17 @@ public class ReaderView extends GenericCDIView {
public ReaderEvent getReaderEvent() { public ReaderEvent getReaderEvent() {
if(pollingMode && isNewCodes()) { if(namecontainer.isAutopoll()) {
pollingCodeHandled(); if(isNewCodes()) {
return readerbean.getLastReaderEvent(namecontainer.getReaderId()); pollingCodeHandled();
return readerbean.getLastReaderEvent(namecontainer.getReaderId());
} else {
return null;
}
} }
if (readerEventList == null) if (readerEventList == null)
return null; return null;
...@@ -251,7 +257,7 @@ public class ReaderView extends GenericCDIView { ...@@ -251,7 +257,7 @@ public class ReaderView extends GenericCDIView {
public void initializeForPolling() { public void initializeForPolling() {
// on polling mode, we do not use list, we use database and remember last readerEvent // on polling mode, we do not use list, we use database and remember last readerEvent
this.pollingMode = true; namecontainer.setAutopoll(true);
lastReadEvent = readerbean.getLastReaderEvent(namecontainer.getReaderId()); lastReadEvent = readerbean.getLastReaderEvent(namecontainer.getReaderId());
} }
...@@ -267,10 +273,18 @@ public class ReaderView extends GenericCDIView { ...@@ -267,10 +273,18 @@ public class ReaderView extends GenericCDIView {
} }
public boolean isNewCodes() { public boolean isNewCodes() {
if (!pollingMode) if (!namecontainer.isAutopoll())
return false; return false;
ReaderEvent newEvent = readerbean.getLastReaderEvent(namecontainer.getReaderId());
if(newEvent == null || newEvent.getId() == null)
return false;
if(lastReadEvent == null || lastReadEvent.getId() == null)
return true;
return (!readerbean.getLastReaderEvent(namecontainer.getReaderId()).equals(lastReadEvent)); return (newEvent.getId() != lastReadEvent.getId());
} }
...@@ -284,17 +298,17 @@ public class ReaderView extends GenericCDIView { ...@@ -284,17 +298,17 @@ public class ReaderView extends GenericCDIView {
public boolean isPollingMode() { public boolean isPollingMode() {
return pollingMode; return namecontainer.isAutopoll();
} }
public void setPollingMode(boolean pollingMode) { public void setPollingMode(boolean pollingMode) {
if(!this.pollingMode && pollingMode) { if(!namecontainer.isAutopoll() && pollingMode) {
this.initializeForPolling(); this.initializeForPolling();
} }
this.pollingMode = pollingMode; namecontainer.setAutopoll(pollingMode);
} }
......
...@@ -60,10 +60,6 @@ public class ProductShopView extends GenericCDIView { ...@@ -60,10 +60,6 @@ public class ProductShopView extends GenericCDIView {
payInstant = false; payInstant = false;
} }
@Inject
@SelectedUser
private EventUser user;
private boolean payInstant = true; private boolean payInstant = true;
private BigDecimal cash = BigDecimal.ZERO; private BigDecimal cash = BigDecimal.ZERO;
...@@ -108,7 +104,7 @@ public class ProductShopView extends GenericCDIView { ...@@ -108,7 +104,7 @@ public class ProductShopView extends GenericCDIView {
public void initBillView() { public void initBillView() {
if (requirePermissions(ShopPermission.LIST_USERPRODUCTS) if (requirePermissions(ShopPermission.LIST_USERPRODUCTS)
&& shoppingcart == null) { && shoppingcart == null) {
shoppingcart = new ListDataModel<ProductShopItem>(ProductShopItem.productList(productBean.listUserShoppableProducts(), user)); shoppingcart = new ListDataModel<ProductShopItem>(ProductShopItem.productList(productBean.listUserShoppableProducts(), userView.getSelectedUser()));
updateCartLimits(null); updateCartLimits(null);
logger.debug("Initialized billing shoppingcart to {}", shoppingcart); logger.debug("Initialized billing shoppingcart to {}", shoppingcart);
this.beginConversation(); this.beginConversation();
...@@ -151,7 +147,7 @@ public class ProductShopView extends GenericCDIView { ...@@ -151,7 +147,7 @@ public class ProductShopView extends GenericCDIView {
public void initShopView() { public void initShopView() {
if (requirePermissions(ShopPermission.SHOP_TO_OTHERS) && shoppingcart == null) { if (requirePermissions(ShopPermission.SHOP_TO_OTHERS) && shoppingcart == null) {
shoppingcart = new ListDataModel<ProductShopItem>(ProductShopItem.productGTList(productBean.findForStaffshop(), user)); shoppingcart = new ListDataModel<ProductShopItem>(ProductShopItem.productGTList(productBean.findForStaffshop(), userView.getSelectedUser()));
updateCartLimits(null); updateCartLimits(null);
LanEventProperty cashdefault = eventbean.getProperty(LanEventPropertyKey.SHOP_DEFAULT_CASH); LanEventProperty cashdefault = eventbean.getProperty(LanEventPropertyKey.SHOP_DEFAULT_CASH);
...@@ -220,7 +216,7 @@ public class ProductShopView extends GenericCDIView { ...@@ -220,7 +216,7 @@ public class ProductShopView extends GenericCDIView {
prodCounts.put(sc.getProduct().getId(), sc.getCount()); prodCounts.put(sc.getProduct().getId(), sc.getCount());
} }
HashMap<Integer, BigDecimal> limits = productBean.getProductLimit(prodCounts, user); HashMap<Integer, BigDecimal> limits = productBean.getProductLimit(prodCounts, userView.getSelectedUser());
// Update the updated cart first // Update the updated cart first
if (item != null) { if (item != null) {
...@@ -278,17 +274,17 @@ public class ProductShopView extends GenericCDIView { ...@@ -278,17 +274,17 @@ public class ProductShopView extends GenericCDIView {
} }
public BigDecimal getBalanceAfterTransaction() { public BigDecimal getBalanceAfterTransaction() {
BigDecimal ret = user.getAccountBalance(); BigDecimal ret = userView.getSelectedUser().getAccountBalance();
ret = ret.add(getCash()); ret = ret.add(getCash());
ret = ret.subtract(getCartPrice()); ret = ret.subtract(getCartPrice());
logger.info("User accountbalance {}, cash{}, total {}. retBalance {}", logger.info("User accountbalance {}, cash{}, total {}. retBalance {}",
new Object[] { user.getAccountBalance(), getCash(), new Object[] { userView.getSelectedUser().getAccountBalance(), getCash(),
getCartPrice(), ret }); getCartPrice(), ret });
return ret; return ret;
} }
public BigDecimal getAccountCredits() { public BigDecimal getAccountCredits() {
BigDecimal ret = user.getAccountBalance(); BigDecimal ret = userView.getSelectedUser().getAccountBalance();
return ret; return ret;
} }
...@@ -309,7 +305,7 @@ public class ProductShopView extends GenericCDIView { ...@@ -309,7 +305,7 @@ public class ProductShopView extends GenericCDIView {
return null; return null;
} }
Bill bill = new Bill(eventbean.getCurrentEvent(), user, eventbean.getPropertyLong(LanEventPropertyKey.BILL_EXPIRE_HOURS)); Bill bill = new Bill(eventbean.getCurrentEvent(), userView.getSelectedUser(), eventbean.getPropertyLong(LanEventPropertyKey.BILL_EXPIRE_HOURS));
bill.setNotes(otherInfo); bill.setNotes(otherInfo);
bill.setOurReference(eventbean.getCurrentEvent().getName()); bill.setOurReference(eventbean.getCurrentEvent().getName());
...@@ -349,15 +345,15 @@ public class ProductShopView extends GenericCDIView { ...@@ -349,15 +345,15 @@ public class ProductShopView extends GenericCDIView {
EventUser retuser = null; EventUser retuser = null;
for (ProductShopItem shopitem : shoppingcart) { for (ProductShopItem shopitem : shoppingcart) {
if (shopitem.getCount().compareTo(BigDecimal.ZERO) > 0) { if (shopitem.getCount().compareTo(BigDecimal.ZERO) > 0) {
retuser = productBean.createAccountEvent(shopitem.getProduct(), shopitem.getCount(), user).getUser(); retuser = productBean.createAccountEvent(shopitem.getProduct(), shopitem.getCount(), userView.getSelectedUser()).getUser();
} }
} }
if (cash != null && cash.compareTo(BigDecimal.ZERO) != 0) { if (cash != null && cash.compareTo(BigDecimal.ZERO) != 0) {
Product credProd = productBean.findCreditProduct(); Product credProd = productBean.findCreditProduct();
retuser = productBean.createAccountEvent(credProd, cash, user).getUser(); retuser = productBean.createAccountEvent(credProd, cash, userView.getSelectedUser()).getUser();
} }
if (retuser != null) { if (retuser != null) {
user = retuser; userView.setUserid(retuser.getId());
} }
shoppingcart = null; shoppingcart = null;
boughtItems = null; boughtItems = null;
...@@ -368,11 +364,11 @@ public class ProductShopView extends GenericCDIView { ...@@ -368,11 +364,11 @@ public class ProductShopView extends GenericCDIView {
} }
public void setUser(EventUser user) { public void setUser(EventUser user) {
this.user = user; userView.setUserid(user.getId());
} }
public EventUser getUser() { public EventUser getUser() {
return user; return userView.getSelectedUser();
} }
public void setShoppingcart(ListDataModel<ProductShopItem> shoppingcart) { public void setShoppingcart(ListDataModel<ProductShopItem> shoppingcart) {
...@@ -449,7 +445,7 @@ public class ProductShopView extends GenericCDIView { ...@@ -449,7 +445,7 @@ public class ProductShopView extends GenericCDIView {
if (event.getPrintedCard() != null) { if (event.getPrintedCard() != null) {
if (event.getPrintedCard().getUser() != null) { if (event.getPrintedCard().getUser() != null) {
userView.setUser(event.getPrintedCard().getUser()); userView.setUser(event.getPrintedCard().getUser());
this.user = event.getPrintedCard().getUser(); userView.setUserid(event.getPrintedCard().getUser().getId());
initShopView(); initShopView();
return null; return null;
} }
......
...@@ -13,6 +13,7 @@ import javax.faces.application.FacesMessage; ...@@ -13,6 +13,7 @@ import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import javax.management.RuntimeErrorException;
import org.primefaces.event.CaptureEvent; import org.primefaces.event.CaptureEvent;
import org.primefaces.event.FileUploadEvent; import org.primefaces.event.FileUploadEvent;
...@@ -121,6 +122,11 @@ public class UserView extends GenericCDIView { ...@@ -121,6 +122,11 @@ public class UserView extends GenericCDIView {
printedCard = card; printedCard = card;
} }
/**
* This is the user that is currently logged in.
* @return
*/
@Produces @Produces
@LoggedIn @LoggedIn
public EventUser getCurrentUser() { public EventUser getCurrentUser() {
...@@ -148,6 +154,11 @@ public class UserView extends GenericCDIView { ...@@ -148,6 +154,11 @@ public class UserView extends GenericCDIView {
} }
/**
* This is the user we are currently editing, if that is not found we user current user
* @return
*/
@Produces @Produces
@SelectedUser @SelectedUser
public EventUser getSelectedUser() { public EventUser getSelectedUser() {
...@@ -159,6 +170,8 @@ public class UserView extends GenericCDIView { ...@@ -159,6 +170,8 @@ public class UserView extends GenericCDIView {
} }
canSave = getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY); canSave = getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY);
} }
return user; return user;
} }
...@@ -400,6 +413,11 @@ public class UserView extends GenericCDIView { ...@@ -400,6 +413,11 @@ public class UserView extends GenericCDIView {
this.user = user; this.user = user;
} }
/**
* This is user what is currently on "user" -variable, you should almost newer use this.
* Use getCurrentUser() -instead.
* @return
*/
public EventUser getUser() { public EventUser getUser() {
return user; return user;
} }
......
package fi.codecrew.moya.web.flow; package fi.codecrew.moya.web.flow;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.ListDataModel; import javax.faces.model.ListDataModel;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
...@@ -25,9 +24,7 @@ import fi.codecrew.moya.model.EventUser; ...@@ -25,9 +24,7 @@ import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership; import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.PrintedCard; import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.ReaderEvent; import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.util.UserSearchQuery; import fi.codecrew.moya.utilities.I18n;
import fi.codecrew.moya.utilities.SearchResult;
import fi.codecrew.moya.web.annotations.SelectedUser;
import fi.codecrew.moya.web.cdiview.GenericCDIView; import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.reader.ReaderNameContainer; import fi.codecrew.moya.web.cdiview.reader.ReaderNameContainer;
import fi.codecrew.moya.web.cdiview.reader.ReaderView; import fi.codecrew.moya.web.cdiview.reader.ReaderView;
...@@ -39,11 +36,13 @@ public class IncomingView extends GenericCDIView { ...@@ -39,11 +36,13 @@ public class IncomingView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L; private static final long serialVersionUID = 802344850073689859L;
private static final Logger logger = LoggerFactory.getLogger(IncomingView.class); private static final Logger logger = LoggerFactory
@Inject .getLogger(IncomingView.class);
@SelectedUser /*
private transient EventUser user; * @Inject
*
* @SelectedUser private transient EventUser user;
*/
@Inject @Inject
private UserView userview; private UserView userview;
...@@ -51,6 +50,9 @@ public class IncomingView extends GenericCDIView { ...@@ -51,6 +50,9 @@ public class IncomingView extends GenericCDIView {
private ReaderView readerView; private ReaderView readerView;
@Inject @Inject
private InfoView infoView;
@Inject
private ReaderNameContainer namecontainer; private ReaderNameContainer namecontainer;
@EJB @EJB
...@@ -69,11 +71,9 @@ public class IncomingView extends GenericCDIView { ...@@ -69,11 +71,9 @@ public class IncomingView extends GenericCDIView {
private UserBeanLocal userbean; private UserBeanLocal userbean;
@EJB @EJB
private transient PlaceGroupBeanLocal placegroupBean; private PlaceGroupBeanLocal placegroupBean;
private String searchBarcode = "";
private EventUser searchMulti = null; // private String searchBarcode = "";
private ListDataModel<GroupMembership> memberlist = null; private ListDataModel<GroupMembership> memberlist = null;
...@@ -81,43 +81,31 @@ public class IncomingView extends GenericCDIView { ...@@ -81,43 +81,31 @@ public class IncomingView extends GenericCDIView {
super.beginConversation(); super.beginConversation();
} }
public String getSearchBarcode() { private ReaderEvent eventToAttach = null;
return searchBarcode; private boolean showAttachDialog = false;
}
private boolean autoGivePlaces = true;
public void setSearchBarcode(String searchBarcode) {
this.searchBarcode = searchBarcode; /*
} * public String getSearchBarcode() { return searchBarcode; }
*
public List<String> matchBarcode(String matchWhat) { * public void setSearchBarcode(String searchBarcode) { this.searchBarcode =
List<GroupMembership> gms = placeBean.matchGroupMembershipsByInviteToken(matchWhat); * searchBarcode; }
ArrayList<String> arl = new ArrayList<>(); *
for (GroupMembership gm : gms) { * public List<String> matchBarcode(String matchWhat) {
arl.add(gm.getInviteToken()); * List<GroupMembership> gms =
} * placeBean.matchGroupMembershipsByInviteToken(matchWhat);
* ArrayList<String> arl = new ArrayList<>(); for (GroupMembership gm : gms)
return arl; * { arl.add(gm.getInviteToken()); }
} *
* return arl; }
public List<EventUser> matchMulti(String what) { */
UserSearchQuery usq = new UserSearchQuery();
usq.setSearch(what);
SearchResult<EventUser> sr = userbean.getThisEventsUsers(usq);
return sr.getResults();
}
public void changeUser(SelectEvent event) { public void changeUser(SelectEvent event) {
if (!searchBarcode.equals("")) {
// TODO: if user barcode is place code thingy, do this, otherwise do other.. if (infoView.getMultiSearchUser() != null) {
GroupMembership gm = placeBean.findGroupMembershipsByToken(this.searchBarcode); super.navihandler.redirectNavigation("incoming.jsf?userid="
if (gm != null) { + infoView.getMultiSearchUser().getUser().getId());
super.navihandler.redirectNavigation("printCard.jsf?userid=" + gm.getUser().getUser().getId()); infoView.setMultiSearchUser(null);
}
} else if (searchMulti != null) {
super.navihandler.redirectNavigation("printCard.jsf?userid=" + searchMulti.getUser().getId());
searchMulti = null;
} }
} }
...@@ -125,13 +113,15 @@ public class IncomingView extends GenericCDIView { ...@@ -125,13 +113,15 @@ public class IncomingView extends GenericCDIView {
public void initPrintCardView() { public void initPrintCardView() {
memberlist = null; memberlist = null;
if (!permbean.hasPermission(UserPermission.MODIFY) || namecontainer.getReaderId() == null || namecontainer.getReaderId() <= 0) { if (!permbean.hasPermission(UserPermission.MODIFY)
|| namecontainer.getReaderId() == null
|| namecontainer.getReaderId() <= 0) {
super.navihandler.redirectNavigation("index.jsf"); super.navihandler.redirectNavigation("index.jsf");
} }
if (!initialized) { if (!initialized) {
logger.debug("INITIALIZING!!!!"); logger.debug("INITIALIZING!!!!");
//initializePoller(); // initializePoller();
initialized = true; initialized = true;
super.beginConversation(); super.beginConversation();
} }
...@@ -147,20 +137,15 @@ public class IncomingView extends GenericCDIView { ...@@ -147,20 +137,15 @@ public class IncomingView extends GenericCDIView {
return null; return null;
} }
public String changeToIncomingView() {
//super.navihandler.redirectNavigation("printCard.jsf?userid="+user.getUser().getId());
return "printCard.jsf?userid=" + user.getUser().getId();
}
public void polledRead() { public void polledRead() {
ReaderEvent event = readerView.getReaderEvent(); ReaderEvent event = readerView.getReaderEvent();
if(event == null) if (event == null)
return; return;
FacesContext context = FacesContext.getCurrentInstance();
logger.debug(":got.code:"); logger.debug(":got.code:");
EventUser user = event.getUser(); EventUser user = event.getUser();
...@@ -169,44 +154,70 @@ public class IncomingView extends GenericCDIView { ...@@ -169,44 +154,70 @@ public class IncomingView extends GenericCDIView {
logger.info("found user {}, redirecting", user.getNick()); logger.info("found user {}, redirecting", user.getNick());
userview.setUser(user); userview.setUser(user);
// userview.prepareCardDownload(); // userview.prepareCardDownload();
// PURKKAAA, sori tästä, koitan refaktoroida kauniiksi ku kerkiän -TKwtf
super.navihandler.redirectNavigation("printCard.jsf?userid=" + user.getUser().getId()); // PURKKAAA, sori tästä, koitan refaktoroida kauniiksi ku
// kerkiän -TKwtf
super.navihandler.redirectNavigation("incoming.jsf?userid=" + user.getUser().getId());
} else {
context.addMessage(null, new FacesMessage(I18n.get("incomingflow.alreadyShowingUser.title"), I18n.get("incomingflow.alreadyShowingUser.message")));
} }
} else { } else {
// still there, it must be "clean" barcode // still there, it must be "clean" barcode
if (userview.getUser() != null) { if (userview.getSelectedUser() != null) {
userview.attachCodeToCard(event); eventToAttach = event;
showAttachDialog = true;
context.addMessage(null, new FacesMessage(I18n.get("incomingflow.invalidbarcode.title"), I18n.get("incomingflow.invalidbarcode.message")));
} }
} }
} }
public String selectUser() { public void attachCodeToCard() {
if (eventToAttach == null) {
ReaderEvent event = readerView.getReaderEvent(); return;
}
if(event == null)
return null; cardBean.giveCard(userview.getSelectedUser(), autoGivePlaces);
userview.attachCodeToCard(eventToAttach);
eventToAttach = null;
showAttachDialog = false;
EventUser user = event.getUser(); userview.setUser(null); // refresh user
memberlist = null;
if (user == null) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(I18n.get("incomingflow.codeattached.title"), I18n.get("incomingflow.codeattached.message")));
logger.debug("got no user from barcode"); }
return null;
}
logger.debug("got user from barcode"); public boolean isShowAttachDialog() {
return showAttachDialog;
}
userview.setUser(user); public void hideAttachDialog() {
//userview.prepareCardDownload(); showAttachDialog = false;
return "printCard";
} }
/*
* public String selectUser() {
*
* ReaderEvent event = readerView.getReaderEvent();
*
* if(event == null) return null;
*
* EventUser user = event.getUser(); memberlist = null;
*
* if (user == null) { logger.debug("got no user from barcode"); return
* null; }
*
* logger.debug("got user from barcode");
*
* userview.setUser(user); //userview.prepareCardDownload(); return
* "incoming"; }
*/
public CardState getPrintedStatus() { public CardState getPrintedStatus() {
PrintedCard card = cardBean.checkPrintedCard(user); PrintedCard card = cardBean.checkPrintedCard(userview.getSelectedUser());
CardState ret = null; CardState ret = null;
if (card != null) { if (card != null) {
ret = card.getCardState(); ret = card.getCardState();
...@@ -215,23 +226,14 @@ public class IncomingView extends GenericCDIView { ...@@ -215,23 +226,14 @@ public class IncomingView extends GenericCDIView {
} }
public String printCard() { public String printCard() {
PrintedCard card = cardBean.checkPrintedCard(user); PrintedCard card = cardBean.checkPrintedCard(userview.getUser());
card.setCardState(CardState.VALIDATED); card.setCardState(CardState.VALIDATED);
cardBean.saveCard(card); cardBean.saveCard(card);
return null; return null;
} }
public EventUser getSearchMulti() {
return searchMulti;
}
public void setSearchMulti(EventUser searchMulti) {
this.searchMulti = searchMulti;
}
public ListDataModel<GroupMembership> getGroupMemberships() { public ListDataModel<GroupMembership> getGroupMemberships() {
memberlist = new ListDataModel<GroupMembership>( memberlist = new ListDataModel<GroupMembership>(placegroupBean.getMembershipsAndCreations(userview.getSelectedUser()));
placegroupBean.getMembershipsAndCreations(userview.getUser()));
return memberlist; return memberlist;
} }
...@@ -253,8 +255,4 @@ public class IncomingView extends GenericCDIView { ...@@ -253,8 +255,4 @@ public class IncomingView extends GenericCDIView {
return null; return null;
} }
} }
package fi.codecrew.moya.web.flow; package fi.codecrew.moya.web.flow;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
...@@ -7,9 +10,11 @@ import javax.inject.Named; ...@@ -7,9 +10,11 @@ import javax.inject.Named;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.ReaderEvent; import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.web.annotations.SelectedUser; import fi.codecrew.moya.util.UserSearchQuery;
import fi.codecrew.moya.utilities.SearchResult;
import fi.codecrew.moya.web.cdiview.GenericCDIView; import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.reader.ReaderView; import fi.codecrew.moya.web.cdiview.reader.ReaderView;
import fi.codecrew.moya.web.cdiview.user.UserView; import fi.codecrew.moya.web.cdiview.user.UserView;
...@@ -19,11 +24,10 @@ import fi.codecrew.moya.web.cdiview.user.UserView; ...@@ -19,11 +24,10 @@ import fi.codecrew.moya.web.cdiview.user.UserView;
public class InfoView extends GenericCDIView { public class InfoView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L; private static final long serialVersionUID = 802344850073689859L;
private EventUser multiSearchUser = null;
private static final Logger logger = LoggerFactory.getLogger(InfoView.class); private static final Logger logger = LoggerFactory.getLogger(InfoView.class);
@Inject
@SelectedUser
private transient EventUser user;
@Inject @Inject
private UserView userview; private UserView userview;
...@@ -31,6 +35,9 @@ public class InfoView extends GenericCDIView { ...@@ -31,6 +35,9 @@ public class InfoView extends GenericCDIView {
@Inject @Inject
private ReaderView readerView; private ReaderView readerView;
@EJB
private UserBeanLocal userbean;
public void initView() { public void initView() {
super.beginConversation(); super.beginConversation();
} }
...@@ -41,6 +48,7 @@ public class InfoView extends GenericCDIView { ...@@ -41,6 +48,7 @@ public class InfoView extends GenericCDIView {
return null; return null;
} }
public String selectUser() { public String selectUser() {
ReaderEvent event = readerView.getReaderEvent(); ReaderEvent event = readerView.getReaderEvent();
...@@ -58,6 +66,23 @@ public class InfoView extends GenericCDIView { ...@@ -58,6 +66,23 @@ public class InfoView extends GenericCDIView {
return "general"; return "general";
} }
public List<EventUser> matchMulti(String what) {
UserSearchQuery usq = new UserSearchQuery();
usq.setSearch(what);
SearchResult<EventUser> sr = userbean.getThisEventsUsers(usq);
return sr.getResults();
}
public EventUser getMultiSearchUser() {
return multiSearchUser;
}
public void setMultiSearchUser(EventUser multiSearchUser) {
this.multiSearchUser = multiSearchUser;
}
} }
package fi.codecrew.moya.web.flow;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.event.SelectEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
import fi.codecrew.moya.web.cdiview.reader.ReaderView;
import fi.codecrew.moya.web.cdiview.shop.ProductShopView;
import fi.codecrew.moya.web.cdiview.user.UserView;
@Named
@ConversationScoped
public class flowShopView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L;
private static final Logger logger = LoggerFactory.getLogger(IncomingView.class);
// shop userid, we need this so we can tell when to show anonymous and when real user.
private Integer userId;
@EJB
PermissionBeanLocal permBean;
@Inject
private ProductShopView productShopView;
@Inject
private UserView userView;
@Inject
private InfoView infoView;
@Inject
private ReaderView readerView;
public void initView() {
if(userId == null || userId == 0) {
userView.setUserid(permBean.getAnonEventUser().getUser().getId());
} else {
userView.setUserid(userId);
}
productShopView.initShopView();
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public void changeUser(SelectEvent event) {
if (infoView.getMultiSearchUser() != null) {
super.navihandler.redirectNavigation("shop.jsf?userid=" + infoView.getMultiSearchUser().getUser().getId());
infoView.setMultiSearchUser(null);
}
}
public void polledRead() {
ReaderEvent event = readerView.getReaderEvent();
if(event == null)
return;
EventUser user = event.getUser();
if (user != null) {
if (!user.equals(userView.getUser())) {
logger.info("found user {}, redirecting", user.getNick());
userView.setUser(user);
super.navihandler.redirectNavigation("shop.jsf?userid=" + user.getUser().getId());
}
}
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!