incoming.xhtml 18.4 KB
<!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: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:infoview="http://java.sun.com/jsf/composite/cditools/infoview">
<h:body>
	<ui:composition template="/resources/templates/#{sessionHandler.infoscreen}/template.xhtml">
		<ui:param name="ignorenavigationleft" value="true" />
		<f:metadata>
			<f:viewParam name="userid" value="#{userView.userid}" />
			<f:event type="preRenderView" listener="#{incomingView.initPrintCardView}" />
		</f:metadata>
		<ui:define name="content">
			<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />

			<reader:backendReader selectvalue="#{i18n['barcodeReader.readBarcode']}" selectaction="#{incomingView.polledRead}" />

			<infoview:usermultisearch />

			<h:form id="attachform">

				<p:poll update="attachBarcode" interval="2" ignoreAutoUpdate="true" onerror="location.reload();" />

				<h:panelGroup id="attachBarcode">
					<h:panelGroup id="attachhider" rendered="#{incomingView.showAttachDialog}">
						<div id="attachpopup">
							<script>
								$(".attachbuttonidclass").focus();
							</script>
							<h1>#{i18n['incomingView.attachDialogTitle']}</h1>
							<!--  napin painaminen aiheuttaa aina NullPOinterExceptionin, mutta tekee siitä huolimatta tarvittavat asiat -->
							<!-- tarjoan oluen sille ketä ratkasee ton exceptionin -TKjne -->
							<p:commandButton styleClass="attachbuttonidclass" value="#{i18n['incomingView.attach']}" actionListener="#{incomingView.attachCodeToCard}" update=":cardcodeform :placelistform :imgCropperForm :cardsetform:" onerror="location.reload(true);" />
							<p:commandButton value="#{i18n['incomingView.cancel']}" actionListener="#{incomingView.hideAttachDialog}" update=":attachform:attachBarcode" />
						</div>
					</h:panelGroup>
				</h:panelGroup>

			</h:form>





			<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="4">





				<h:panelGroup>


					<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.validateEmailEdit}" 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>


					<h:form id="cardsetform">
						<p:fieldset id="cardset" legend="#{i18n['incomingflow.printedCard']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
							<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />


							<p:graphicImage url="/dydata/usercard/#{userView.selectedUser.user.id}.png" width="300" />
							<br />
							<p:commandButton actionListener="#{incomingView.printCard}" update="cardsetform" value="#{i18n['print']}" />
							<b>
								(status: <p:outputLabel value="#{incomingView.printedStatus}" />)
								<p:outputLabel value="#{i18n['incomingflow.cardfiling.label']}" rendered="#{!empty incomingView.cardFiling}" />
								<p:outputLabel value="#{incomingView.cardFiling}" rendered="#{!empty incomingView.cardFiling}" />
							</b>
							<p:commandButton actionListener="#{incomingView.deliverCard}" update="cardsetform" value="#{i18n['deliver']}" />

							
						</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=":cardsetform,:imgCropperForm,:userform" />
									<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()" onerror="location.reload(true);" update=":cardsetform,: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:panelGroup>


					<h:form id="imgCropperForm">
						<p:fieldset id="cropperandcardset" legend="#{i18n['incomingflow.printedCard']}" >



							<h:panelGrid columns="1">
								<h:panelGroup rendered="#{!empty userView.selectedUser.currentImage}">
									<p:commandButton value="#{i18n['user.imageCropRefresh']}" ajax="false" update=":cardsetform 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:panelGroup>
							</h:panelGrid>
						</p:fieldset>
					</h:form>
				</h:panelGroup>
			</h:panelGrid>


			
			<h:form>
				<p:fieldset id="userroles" legend="#{i18n['incomingflow.printedCard']}" toggleable="true" collapsed="#{fieldsetView.isCollapsed(component.id)}">
					<p:ajax event="toggle" listener="#{fieldsetView.handleToggle}" />
					
					<h:selectManyCheckbox converter="#{roleConverter}" disabled="#{!roleView.canWriteRoles}" layout="pageDirection" id="roles" value="#{userView.usersRoles}">
						<f:selectItems var="roleitem" itemLabel="#{roleitem.name}" value="#{roleDataView.roles}" />
					</h:selectManyCheckbox>
					<p:commandButton action="#{userView.saveRoles}" value="#{i18n['user.saveRoles']}" ajax="false" />
				</p:fieldset>
			</h:form>
			<br /><br />

			<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>
							<f:facet name="header">
								<h:outputText value="#{i18n['placegroupview.reservationName']}" />
							</f:facet>
							<h:outputText value="#{member.placeReservation.name}" />
						</p:column>
						<p:column>
							<f:facet name="header">
								<h:outputText value="#{i18n['placegroupview.reservationProduct']}" />
							</f:facet>
							<h:outputText value="#{member.placeReservation.product.name}" />
						</p:column>
						<p:column>
							<f:facet name="header">
								<h:outputText value="#{i18n['placegroupview.token']}" />
							</f:facet>
							<h:outputText rendered="#{empty member.user}" value="#{member.inviteToken}" />
							<h:outputText rendered="#{!empty member.user}" value="#{member.user.firstnames} #{member.user.lastname} (#{member.user.nick})" />

						</p:column>
						<p:column>
							<f:facet name="header">
								<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>
							<p:commandButton update=":placelistform" rendered="#{empty member.enteredEvent}" actionListener="#{incomingView.givePlace}" value="#{i18n['incomingflow.giveplace']}" />
							<p:commandButton update=":placelistform" rendered="#{!empty member.enteredEvent}" actionListener="#{incomingView.ungivePlace}" value="#{i18n['incomingflow.ungiveplace']}" />
						</p:column>

					</p:dataTable>
				</p:fieldset>
			</h:form>
			<br />
			<br />
			<br />

			<h:outputText rendered="#{empty incomingView.}" 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>
							<f:facet name="header">
								<h:outputText value="#{i18n['placegroupview.reservationName']}" />
							</f:facet>
							<h:outputText value="#{member.placeReservation.name}" />
						</p:column>
						<p:column>
							<f:facet name="header">
								<h:outputText value="#{i18n['placegroupview.reservationProduct']}" />
							</f:facet>
							<h:outputText value="#{member.placeReservation.product.name}" />
						</p:column>
						<p:column>
							<f:facet name="header">
								<h:outputText value="#{i18n['placegroupview.token']}" />
							</f:facet>
							<h:outputText rendered="#{empty member.user}" value="#{member.inviteToken}" />
							<h:outputText rendered="#{!empty member.user}" value="#{member.user.firstnames} #{member.user.lastname} (#{member.user.nick})" />

						</p:column>
						<p:column>
							<f:facet name="header">
								<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>
							<p:commandButton update=":placelistform" rendered="#{empty member.enteredEvent}" actionListener="#{incomingView.givePlace}" value="#{i18n['incomingflow.giveplace']}" />
							<p:commandButton update=":placelistform" rendered="#{!empty member.enteredEvent}" actionListener="#{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>
		<ui:define name="sidebar">

		</ui:define>
	</ui:composition>

</h:body>
</html>