Commit eeb3fc26 by Tuukka Kivilahti

moar of info, viilailua, korjailua jne. Hieno fieldsetsetin asetus sessioon :)

1 parent 107fc909
......@@ -21,6 +21,7 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.facade.CardCodeFacade;
import fi.codecrew.moya.facade.CardObjectDataFacade;
import fi.codecrew.moya.facade.CardTemplateFacade;
import fi.codecrew.moya.facade.CardTextDataFacade;
......@@ -28,6 +29,7 @@ import fi.codecrew.moya.facade.EventUserFacade;
import fi.codecrew.moya.facade.GroupMembershipFacade;
import fi.codecrew.moya.facade.LanEventPropertyFacade;
import fi.codecrew.moya.facade.PrintedCardFacade;
import fi.codecrew.moya.model.CardCode;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
......@@ -86,6 +88,9 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
@EJB
private CardObjectDataFacade codFacade;
@EJB
private CardCodeFacade cardCodeFacade;
// @Override
......@@ -354,16 +359,20 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
return card;
}
@Override
public EventUser giveCard(EventUser user, boolean markUserPlacesDelivered) {
PrintedCard card = checkPrintedCard(user);
user = eventUserFacade.reload(user);
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());
}
......@@ -371,10 +380,22 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
if (markUserPlacesDelivered) {
for (GroupMembership membership : gmFacade.findMemberships(user)) {
membership.setEnteredEvent(Calendar.getInstance());
membership = gmFacade.merge(membership);
gmFacade.merge(membership);
}
}
return user;
}
return eventUserFacade.reload(user);
@Override
public void removeCardCode(CardCode code) {
code = cardCodeFacade.merge(code);
if(code.getPrintedCard().getCardCodes().contains(code)) {
code.getPrintedCard().getCardCodes().remove(code);
cardCodeFacade.remove(code);
}
}
}
......@@ -173,10 +173,13 @@ public class ReaderBean implements ReaderBeanLocal {
@Override
public ReaderEvent assocCodeToCard(ReaderEvent readerEvent, PrintedCard card) {
card = cardfacade.reload(card);
CardCode code = new CardCode(card, readerEvent.getReader().getType(), readerEvent.getValue(), eventbean.getCurrentEvent());
code = cardCodeFacade.create(code);
card = cardfacade.reload(card);
card.getCardCodes().add(code);
card = cardfacade.merge(card);
return readerEvent;
}
......
......@@ -6,12 +6,12 @@ import java.util.List;
import javax.ejb.Local;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.model.CardCode;
import fi.codecrew.moya.model.CardObjectData;
import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.CardTextData;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.ReaderEvent;
import fi.codecrew.moya.utilities.jsf.EntityFinderBean;
@Local
......@@ -63,4 +63,5 @@ public interface CardTemplateBeanLocal extends EntityFinderBean<CardTemplate> {
EventUser giveCard(EventUser user, boolean markUserPlacesDelivered);
void removeCardCode(CardCode code);
}
......@@ -25,15 +25,17 @@
</p:autoComplete>
</h:form>
<h:form>
<h:form id="attachform">
<p:poll update="attachBarcode" interval="2" ignoreAutoUpdate="true" onerror="location.reload();" />
<p:poll update="attachBarcode" interval="2" ignoreAutoUpdate="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" />
<!-- napin painaminen aiheuttaa aina NullPOinterExceptionin, mutta tekee siitä huolimatta tarvittavat asiat -->
<p:commandButton value="#{i18n['incomingView.attach']}" actionListener="#{incomingView.attachCodeToCard}" update=":cardcodeform :placelistform :imgCropperForm" onerror="location.reload(true);" />
<p:commandButton value="#{i18n['incomingView.cancel']}" actionListener="#{incomingView.hideAttachDialog}" update=":attachform:attachBarcode" />
</h:panelGroup>
</h:panelGroup>
......@@ -41,7 +43,11 @@
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<br />
<br />
<h1>
<p:outputLabel value="#{userView.selectedUser.firstnames}" />
......@@ -52,41 +58,199 @@
</h1>
<br />
<h:panelGrid id="cropper" columns="2">
<h:panelGrid id="cropper" columns="3">
<h:panelGroup>
<p:fieldset legend="#{i18n['incomingflow.usereditor']}" toggleable="true">
<user:edit id="usereditor" commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" camAlwaysOn="true" photocamupdate="@all" />
<h:form id="userform_info" enctype="multipart/form-data">
<p:fieldset id="userfieldset_info" legend="#{i18n['incomingflow.usereditor.info']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<table>
<ui:fragment rendered="#{!cc.attrs.creating}">
<tr>
<td colspan="2"><b><h:outputLabel for="login" value="#{i18n['user.login']}" /></b><br /> <h:outputText value="#{userView.selectedUser.login}" id="login" /></td>
</tr>
</ui:fragment>
<tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.nick']}" for="nick" /> </b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="45" id="nick" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.nick}" />
</p:inplace></td>
</tr>
<tr>
<td><b><h:outputLabel value="#{i18n['user.firstNames']}" for="firstnames" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="22" id="firstnames" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.firstnames}" />
</p:inplace></td>
<td><b><h:outputLabel value="#{i18n['user.lastName']}" for="lastname" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="30" id="lastname" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.lastname}" />
</p:inplace></td>
</tr>
<tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.sex']}" for="sex" /></b> <br /> <p:selectOneMenu disabled="#{!cc.attrs.creating and !userView.canSave}" id="sex" value="#{userView.selectedUser.gender}">
<f:selectItem id="undefined" itemLabel="#{i18n['user.sex.UNDEFINED']}" itemValue="UNDEFINED" />
<f:selectItem id="male" itemLabel="#{i18n['user.sex.MALE']}" itemValue="MALE" />
<f:selectItem id="female" itemLabel="#{i18n['user.sex.FEMALE']}" itemValue="FEMALE" />
</p:selectOneMenu></td>
</tr>
<tr>
<td><b><h:outputLabel for="birthday" value="#{i18n['user.birthday']}" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:calendar id="birthday" navigator="true" yearRange="c-80:c-0" value="#{userView.selectedUser.birthday}">
<f:convertDateTime pattern="#{sessionHandler.dateFormat}" timeZone="#{sessionHandler.timezone}" />
</p:calendar>
</p:inplace> <h:message for="birthday" /></td>
<td><b><h:outputLabel for="age" value="#{i18n['user.age']}" /></b><br /> <h:outputText value="#{userView.selectedUser.user.age}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
</h:outputText></td>
</tr>
</table>
<table>
<tr>
<td colspan="2"><b><p:outputLabel value="#{i18n['user.address']}" for="address" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="45" id="address" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.address}" />
</p:inplace></td>
</tr>
<tr>
<td><b><p:outputLabel value="#{i18n['user.zipCode']}" for="zip" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText styleClass="ui-input" size="7" id="zip" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.zip}" />
</p:inplace> <p:message for="zip" /></td>
<td><b><p:outputLabel value="#{i18n['user.town']}" for="town" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText styleClass="ui-input" size="25" id="town" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.town}" />
</p:inplace> <p:message for="town" /></td>
</tr>
<tr>
<td colspan="2"><b><h:outputLabel value="#{i18n['user.email']}" for="email" /></b> <br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText validator="#{userValidator.validateEmail}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" />
</p:inplace></td>
</tr>
<tr>
<td><b><p:outputLabel value="#{i18n['user.phone']}" for="phone" /></b><br /> <p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText styleClass="ui-input" size="7" id="phone" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.phone}" />
</p:inplace> <p:message for="phone" /></td>
</tr>
</table>
<p:commandButton rendered="#{cc.attrs.creating or userView.canSave}" id="commitbtn" action="#{incomingView.saveUser()}" ajax="false" value="#{i18n['user.save']}" onerror="location.reload(true);" />
</p:fieldset>
</h:form>
</h:panelGroup>
<h:panelGroup>
<p:fieldset legend="#{i18n['incomingflow.printedCard']}" toggleable="true">
<h:form id="imgCropperForm">
<p:fieldset id="cropperandcardset" legend="#{i18n['incomingflow.printedCard']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<h:panelGrid columns="2">
<h:panelGroup>
<h:form id="imgCropperForm" rendered="#{!empty userView.selectedUser.currentImage}">
<h:panelGroup 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:form>
</h:panelGroup>
<h:panelGroup>
<h:form id="userform" enctype="multipart/form-data">
<p:fieldset id="userfieldset_picture" legend="#{i18n['incomingflow.usereditor.picture']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<ui:fragment rendered="#{not empty userView.selectedUser.id}">
<p:dialog id="chartPanel" for="webcamButton" modal="true" dynamic="true" widgetVar="webcamDialog">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update=":userform" />
<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);" />
</p:dialog>
<h:outputText rendered="#{empty userView.selectedUser.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<ui:fragment rendered="#{!empty userView.selectedUser.currentImage}">
<img style="width: 150px;" src="#{request.contextPath}/dydata/userimage/#{userView.selectedUser.currentImage.id}.img" alt="image" />
</ui:fragment>
<br />
<p:commandButton onerror="location.reload(true);" rendered="#{!true}" id="webcamButton" value="#{i18n['userimage.webcam']}" onclick="PF('webcamDialog').show()" type="button" />
<br />
<br />
<ui:fragment rendered="#{true}">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update=":imgCropperForm,:userform" />
<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);" update=":imgCropperForm,:userform" />
</ui:fragment>
<!-- -->
&nbsp;
<p:fileUpload id="uploadfile" value="#{userView.image}" mode="simple" required="true" requiredMessage="Required!" invalidSizeMessage="#{i18n['user.imageTooBig']}" sizeLimit="1024" />
<p:message for="uploadfile" />
<p:commandButton action="#{userView.sendImage}" ajax="false" value="#{i18n['user.imagesubmit']}" onerror="location.reload(true);" />
</ui:fragment>
<ui:fragment rendered="#{cc.attrs.creating}">
<h:outputLabel value="#{i18n['user.login']}" for="mklogin" />
<br />
<p:inplace emptyLabel="#{i18n['user.insert']}">
<p:inputText size="25" id="mklogin" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.login}" />
</p:inplace>
<p:message for="login" />
<br />
</ui:fragment>
<br />
<h:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.password']}" for="password" />
<br />
<p:inplace rendered="#{cc.attrs.creating}" emptyLabel="#{i18n['user.insert']}">
<p:password validator="#{userValidator.password}" id="password" value="#{userView.password}" />
</p:inplace>
<p:message rendered="#{cc.attrs.creating}" for="password" />
<br />
<p:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.passwordcheck']}" for="passwordcheck" />
<br />
<p:inplace rendered="#{cc.attrs.creating}" emptyLabel="#{i18n['user.insert']}">
<p:password validator="#{userValidator.password}" id="passwordcheck" value="#{userView.passwordcheck}" />
</p:inplace>
<p:message rendered="#{cc.attrs.creating}" for="passwordcheck" />
<br />
</p:fieldset>
</h:form>
</h:panelGroup>
</h:panelGrid>
<h:outputText rendered="#{empty incomingView.groupMemberships}" value="#{i18n['placegroupview.noMemberships']}" />
<h:form rendered="#{!empty incomingView.groupMemberships}" id="placelistform">
<p:fieldset legend="#{i18n['incomingflow.groupmemberships']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<p:dataTable value="#{incomingView.groupMemberships}" var="member" rowStyleClass="#{member.enteredEvent != null ? 'success':''}">
<p:column>
......@@ -114,15 +278,34 @@
<h:outputText value="#{i18n['placegroupview.groupCreator']}" />
</f:facet>
<h:outputText value="#{member.placeGroup.creator.firstnames} #{member.placeGroup.creator.lastname} (#{member.placeGroup.creator.nick})" />
</p:column>
<p:column>
<h:commandButton rendered="#{empty member.enteredEvent}" action="#{incomingView.givePlace}" value="#{i18n['incomingflow.giveplace']}" />
<h:commandButton rendered="#{!empty member.enteredEvent}" action="#{incomingView.ungivePlace}" value="#{i18n['incomingflow.ungiveplace']}" />
</p:column>
</p:dataTable>
</p:fieldset>
</h:form>
<br />
<br />
<br />
<h:form id="cardcodeform">
<p:fieldset legend="#{i18n['incomingflow.cardCodes']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
<p:dataTable id="codetable" value="#{incomingView.cardCodes}" var="code">
<p:column headerText="#{i18n['cardCode.type']}">
<h:outputText value="#{code.type}" />
</p:column>
<p:column headerText="#{i18n['cardCode.code']}">
<h:outputText value="#{code.code}" />
</p:column>
<p:column>
<p:commandButton value="#{i18n['delete']}" actionListener="#{incomingView.deleteSelectedCode}" update=":cardcodeform" />
</p:column>
</p:dataTable>
</p:fieldset>
</h:form>
</ui:define>
......
......@@ -31,10 +31,6 @@
<ui:define name="content">
<infoview:userselector />
<br />
<br />
<!-- reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{infoView.selectUser}" / -->
</ui:define>
......
......@@ -108,10 +108,15 @@ bortalApplication.user.WRITE_ROLES = Modify roles
card.massprint.title = Print all
cardCode.code = Koodi
cardCode.type = Tyyppi
cardTemplate.emptyCardTemplate = ----
code.inputfield = Sy\u00F6t\u00E4 viivakoodi
delete = Poista
error.contact = If this happens again, contact Info with the following code:
error.error = You have encountered an error.
......@@ -160,15 +165,23 @@ global.save = Save
httpsession.creationTime = Created
incomingView.attach = Liit\u00E4
incomingView.attachDialogTitle = Liit\u00E4 koodi k\u00E4ytt\u00E4j\u00E4\u00E4n
incomingView.cancel = Peruuta
incomingflow.alreadyShowingUser.message = Piipattu k\u00E4ytt\u00E4j\u00E4 on jo n\u00E4kyviss\u00E4
incomingflow.alreadyShowingUser.title = Valmiiksi valittu
incomingflow.cardCodes = Kortin koodit
incomingflow.codeattached.message = Piipattu koodi liitetty n\u00E4ytett\u00E4v\u00E4\u00E4n korttiin
incomingflow.codeattached.title = Koodi liittetty
incomingflow.giveplace = Merkitse annetuksi
incomingflow.groupmemberships = Paikkakoodit
incomingflow.invalidbarcode.message = Viivakoodilla ei l\u00F6ytynyt mit\u00E4\u00E4n
incomingflow.invalidbarcode.title = virheellinen koodi
incomingflow.printedCard = Kortti
incomingflow.usereditor = K\u00E4ytt\u00E4j\u00E4
incomingflow.usereditor.info = Tiedot
incomingflow.usereditor.picture = Kuvanotto
lanEventPrivateProperty.defaultValue = Default value
lanEventPrivateProperty.editProperty = Edit property
......
......@@ -192,6 +192,9 @@ bortalApplication.user.WRITE_ROLES = Modify roles
card.massprint.title = Print all
cardCode.code = Code
cardCode.type = Type
cardObjectData.create = Add object data
cardObjectData.edit = Edit
cardObjectData.save = Save
......@@ -280,6 +283,8 @@ compofile.uploadTime = Upload time
content.showContentEditLinks = Show content edit links
delete = Delete
discount.active = Active
discount.amountMax = Max amount
discount.amountMin = Min amount
......@@ -462,13 +467,19 @@ imagefile.file = Imagefile
importuser.file = File
importuser.template = Template
incomingView.attach = Attach
incomingView.attachDialogTitle = Attach code to user
incomingView.cancel = Cancel
incomingflow.alreadyShowingUser.message = We are already showing selected user
incomingflow.alreadyShowingUser.title = Already selected
incomingflow.barcode = Barcode
incomingflow.cardCodes = Barcodes in card
incomingflow.changereader = Change Reader
incomingflow.codeattached.message = Code attached to current user's card
incomingflow.codeattached.title = Code attached
incomingflow.giveplace = Mark given
incomingflow.groupmemberships = Group memberships
incomingflow.invalidbarcode.message = Nothing found with barcode, you can now add it to the user
incomingflow.invalidbarcode.title = Invalid code
incomingflow.multisearch = Multisearch
......@@ -477,6 +488,8 @@ incomingflow.search = Search
incomingflow.ungiveplace = Mark not given
incomingflow.userdetails = User details
incomingflow.usereditor = User
incomingflow.usereditor.info = User
incomingflow.usereditor.picture = Picturetake
infoview.back = Back
infoview.computerplace = Computer places
......
......@@ -193,6 +193,9 @@ bortalApplication.user.WRITE_ROLES = Saa muokata rooleja
card.massprint.title = Tulosta kaikki
cardCode.code = Koodi
cardCode.type = Tyyppi
cardObjectData.create = Liit\u00E4 kuvia
cardObjectData.edit = Muokkaa
cardObjectData.save = Tallenna
......@@ -281,6 +284,8 @@ compofile.uploadTime = Tallennusaika
content.showContentEditLinks = N\u00E4yt\u00E4 sis\u00E4ll\u00F6nmuokkauslinkit
delete = Poista
discount.active = Aktiivinen
discount.amountMax = Enimm\u00E4ism\u00E4\u00E4r\u00E4
discount.amountMin = V\u00E4himm\u00E4ism\u00E4\u00E4r\u00E4
......@@ -470,13 +475,19 @@ imagefile.file = Kuvatiedosto
importuser.file = Tiedosto
importuser.template = Malli
incomingView.attach = Liit\u00E4
incomingView.attachDialogTitle = Liit\u00E4 koodi k\u00E4ytt\u00E4j\u00E4\u00E4n
incomingView.cancel = Peruuta
incomingflow.alreadyShowingUser.message = Piipattu k\u00E4ytt\u00E4j\u00E4 on jo n\u00E4kyviss\u00E4
incomingflow.alreadyShowingUser.title = Valmiiksi valittu
incomingflow.barcode = Viivakoodi
incomingflow.cardCodes = Korttiin liitetyt koodit
incomingflow.changereader = Vaihda lukijaa
incomingflow.codeattached.message = Piipattu koodi liitetty aktiiviseen k\u00E4ytt\u00E4j\u00E4\u00E4n
incomingflow.codeattached.title = Koodi liitetty
incomingflow.giveplace = Merkitse annetuksi
incomingflow.groupmemberships = Konepaikat sek\u00E4 liput
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
......@@ -485,6 +496,8 @@ incomingflow.search = Etsi
incomingflow.ungiveplace = Ei olekkaan annettu
incomingflow.userdetails = K\u00E4ytt\u00E4j\u00E4n tiedot
incomingflow.usereditor = K\u00E4ytt\u00E4j\u00E4
incomingflow.usereditor.info = K\u00E4vij\u00E4
incomingflow.usereditor.picture = Kuvanotto
index.title = Etusivu
......
......@@ -122,9 +122,9 @@ public class UserView extends GenericCDIView {
printedCard = card;
}
/**
* This is the user that is currently logged in.
*
* @return
*/
@Produces
......@@ -154,9 +154,10 @@ public class UserView extends GenericCDIView {
}
/**
* This is the user we are currently editing, if that is not found we user current user
* This is the user we are currently editing, if that is not found we user
* current user
*
* @return
*/
@Produces
......@@ -171,7 +172,6 @@ public class UserView extends GenericCDIView {
canSave = getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY);
}
return user;
}
......@@ -376,8 +376,10 @@ public class UserView extends GenericCDIView {
return null;
}
PrintedCard card = null;
// still there, we can get real card and update it's barcodes
PrintedCard card = cardBean.checkPrintedCard(user);
card = cardBean.checkPrintedCard(user);
readerbean.assocCodeToCard(event, card);
......@@ -391,7 +393,7 @@ public class UserView extends GenericCDIView {
public String createUserAdduserView() {
userbean.createNewUser(user, getPassword());
//authView.executeAdduserAutoLogin(user, getPassword());
// authView.executeAdduserAutoLogin(user, getPassword());
return "/admin/adduser/update";
}
......@@ -414,8 +416,9 @@ public class UserView extends GenericCDIView {
}
/**
* This is user what is currently on "user" -variable, you should almost newer use this.
* Use getCurrentUser() -instead.
* This is user what is currently on "user" -variable, you should almost
* newer use this. Use getCurrentUser() -instead.
*
* @return
*/
public EventUser getUser() {
......
......@@ -20,6 +20,7 @@ import fi.codecrew.moya.beans.PlaceGroupBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.CardCode;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.GroupMembership;
import fi.codecrew.moya.model.PrintedCard;
......@@ -36,8 +37,7 @@ public class IncomingView extends GenericCDIView {
private static final long serialVersionUID = 802344850073689859L;
private static final Logger logger = LoggerFactory
.getLogger(IncomingView.class);
private static final Logger logger = LoggerFactory.getLogger(IncomingView.class);
/*
* @Inject
*
......@@ -73,9 +73,13 @@ public class IncomingView extends GenericCDIView {
@EJB
private PlaceGroupBeanLocal placegroupBean;
@EJB
private CardTemplateBeanLocal cardTemplateBean;
// private String searchBarcode = "";
private ListDataModel<GroupMembership> memberlist = null;
private ListDataModel<CardCode> cardCodes;
public void initView() {
super.beginConversation();
......@@ -179,6 +183,7 @@ public class IncomingView extends GenericCDIView {
return;
}
cardBean.giveCard(userview.getSelectedUser(), autoGivePlaces);
userview.attachCodeToCard(eventToAttach);
......@@ -186,10 +191,16 @@ public class IncomingView extends GenericCDIView {
showAttachDialog = false;
userview.setUser(null); // refresh user
userview.setPrintedCard(null); // refresh card
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(I18n.get("incomingflow.codeattached.title"), I18n.get("incomingflow.codeattached.message")));
}
public boolean isShowAttachDialog() {
return showAttachDialog;
}
......@@ -198,23 +209,27 @@ public class IncomingView extends GenericCDIView {
showAttachDialog = false;
}
/*
* 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 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() {
PrintedCard card = cardBean.checkPrintedCard(userview.getSelectedUser());
......@@ -237,6 +252,22 @@ public class IncomingView extends GenericCDIView {
return memberlist;
}
public ListDataModel<CardCode> getCardCodes() {
cardCodes = new ListDataModel<CardCode>(userview.getPrintedCard().getCardCodes());
return cardCodes;
}
public void deleteSelectedCode() {
if (cardCodes != null && cardCodes.isRowAvailable()) {
CardCode code = cardCodes.getRowData();
cardTemplateBean.removeCardCode(code);
// flush that fucker
userview.setPrintedCard(null);
}
}
public String givePlace() {
GroupMembership row = memberlist.getRowData();
if (row != null) {
......
package fi.codecrew.moya.web.helper;
import java.util.HashMap;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
import org.primefaces.event.ToggleEvent;
import org.primefaces.model.Visibility;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
@Named
@SessionScoped
public class fieldsetView extends GenericCDIView {
private static final Logger logger = LoggerFactory.getLogger(fieldsetView.class);
private static final long serialVersionUID = 5L;
private HashMap<String, Boolean> collapseStates = new HashMap<String, Boolean>();
public boolean isCollapsed(String id) {
if(collapseStates.containsKey(id) && collapseStates.get(id).booleanValue()) {
return true;
}
return false;
}
public void handleToggle(ToggleEvent event) {
logger.info("setting collapsed for id "+event.getComponent().getId());
logger.info("collapsed value is "+event.getVisibility());
collapseStates.put(event.getComponent().getId(), Boolean.valueOf(event.getVisibility() == Visibility.HIDDEN));
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!