Commit d0e3a491 by Tuomas Riihimäki

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

2 parents 4334df4c 439d8512
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<context-param> <context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name> <param-name>javax.faces.PROJECT_STAGE</param-name>
<!-- Production | Development --> <!-- Production | Development -->
<param-value>Production</param-value> <param-value>Development</param-value>
</context-param> </context-param>
<context-param> <context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name> <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
......
...@@ -12,28 +12,31 @@ ...@@ -12,28 +12,31 @@
</f:metadata> </f:metadata>
<ui:define name="content"> <ui:define name="content">
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h:panelGrid columns="3">
<h:form> <h:form>
<p:poll interval="1" listener="#{incomingView.polledRead}" /> <p:poll interval="1" listener="#{incomingView.polledRead}" />
</h:form> </h:form>
<h:panelGrid columns="3">
<h:panelGroup> <h:panelGroup>
<user:edit commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" /> <user:edit commitaction="#{incomingView.saveUser()}" commitvalue="#{i18n['user.save']}" camAlwaysOn="true" />
</h:panelGroup> </h:panelGroup>
<h:panelGroup> <h:panelGroup>
<h:form> <h:form>
<p:imageCropper value="#{userView.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{userView.user.currentImage.id}.jpg" /> <p:imageCropper value="#{userView.croppedImage}" aspectRatio="0.7317073170731707" image="/dydata/userimage/#{userView.user.currentImage.id}.jpg" />
<h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" /> <h:commandButton action="#{userView.crop}" value="#{i18n['user.cropImage']}" />
<h:commandButton action="#{userView.cancelCrop}" value="#{i18n['user.cropImage']}" />
</h:form> </h:form>
</h:panelGroup> </h:panelGroup>
<h:panelGroup> <h:panelGroup>
<h:form> <h:form>
<user:previewAndPrintCard /> <p:graphicImage url="/dydata/usercard/#{userView.user.user.id}.png" width="300" /><br />
<h:commandButton action="#{incomingView.printCard}" value="#{i18n['print']}" />
<p:commandButton action="#{userView.acceptPrintedCard()}" value="accept printed card" />
</h:form> </h:form>
</h:panelGroup> </h:panelGroup>
</h:panelGrid> </h:panelGrid>
......
...@@ -22,9 +22,9 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader" ...@@ -22,9 +22,9 @@ xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader"
<h:dataTable border="1" id="reader" value="#{readerListDataView.readers}" var="rr"> <h:dataTable border="1" id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column> <h: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>
<h:outputText value="#{rr}" /> <h:outputText value="#{rr.identification}" />
</h:column> </h:column>
<h:column> <h:column>
<h:commandButton action="#{readerListDataView.selectReader}" value="#{i18n['reader.select']}" /> <h:commandButton action="#{readerListDataView.selectReader}" value="#{i18n['reader.select']}" />
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<composite:interface> <composite:interface>
<composite:attribute name="creating" required="false" default="false" /> <composite:attribute name="creating" required="false" default="false" />
<composite:attribute name="commitaction" required="true" method-signature="java.lang.String action()" /> <composite:attribute name="commitaction" required="true" method-signature="java.lang.String action()" />
<composite:attribute name="camAlwaysOn" required="false" default="false" />
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
...@@ -19,20 +20,25 @@ ...@@ -19,20 +20,25 @@
<h:panelGroup> <h:panelGroup>
<ui:fragment rendered="#{not empty userView.user.id}"> <ui:fragment rendered="#{not empty userView.user.id}">
<p:dialog id="chartPanel" for="webcamButton" modal="true" dynamic="true" widgetVar="webcamDialog"> <p:dialog rendered="#{!cc.attrs.camAlwaysOn}" 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="pc.capture()" /> <p:commandButton type="button" value="Capture" onclick="pc.capture()" />
</p:dialog> </p:dialog>
<h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" /> <h:outputText rendered="#{empty userView.user.currentImage}" value="#{i18n['user.noCurrentImage']}" />
<ui:fragment rendered="#{!empty userView.user.currentImage}"> <ui:fragment rendered="#{!empty userView.user.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.user.currentImage.id}.img" alt="image" />
</ui:fragment> </ui:fragment>
<br /> <br />
<p:commandButton id="webcamButton" value="#{i18n['userimage.webcam']}" onclick="webcamDialog.show()" type="button" /> <p:commandButton rendered="#{!cc.attrs.camAlwaysOn}" id="webcamButton" value="#{i18n['userimage.webcam']}" onclick="webcamDialog.show()" type="button" />
<br /> <br />
<br /> <br />
<ui:fragment rendered="#{cc.attrs.camAlwaysOn}">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" />
<p:commandButton type="button" value="Capture" onclick="pc.capture()" />
</ui:fragment>
<p:fileUpload id="uploadfile" required="TRUE" requiredMessage="Required!" invalidSizeMessage="#{i18n['user.imageTooBig']}" sizeLimit="1024" value="#{userView.image}" mode="simple" /> <p:fileUpload id="uploadfile" required="TRUE" requiredMessage="Required!" invalidSizeMessage="#{i18n['user.imageTooBig']}" sizeLimit="1024" value="#{userView.image}" mode="simple" />
<p:message for="uploadfile" /> <p:message for="uploadfile" />
......
...@@ -9,9 +9,12 @@ ...@@ -9,9 +9,12 @@
<composite:implementation> <composite:implementation>
<div>
<p:graphicImage url="/dydata/usercard/#{userView.user.user.id}.png" width="300" /><br />
<p:commandButton action="#{userView.prepareCardDownload()}" rendered="#{userView.waitForAcceptance==false}" value="print card" ajax="true" update="@form" onclick="PrimeFaces.monitorDownload(start, stop)"> <p:commandButton action="#{userView.prepareCardDownload()}" rendered="#{userView.waitForAcceptance==false}" value="print card" ajax="true" update="@form" onclick="PrimeFaces.monitorDownload(start, stop)">
<p:fileDownload value="#{userView.streamedFile}" /> <p:fileDownload value="#{userView.streamedFile}" />
</p:commandButton> </p:commandButton>
</div>
</composite:implementation> </composite:implementation>
</html> </html>
......
...@@ -17,13 +17,16 @@ import javax.servlet.http.HttpServletResponse; ...@@ -17,13 +17,16 @@ import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.CardPrintBeanLocal;
import fi.codecrew.moya.beans.CardTemplateBeanLocal; import fi.codecrew.moya.beans.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.EventBeanLocal; import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal; import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal; import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEventProperty; import fi.codecrew.moya.model.LanEventProperty;
import fi.codecrew.moya.model.LanEventPropertyKey; import fi.codecrew.moya.model.LanEventPropertyKey;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.model.UserImage; import fi.codecrew.moya.model.UserImage;
/** /**
...@@ -41,6 +44,13 @@ public class FileDownloadServlet extends GenericImageServlet { ...@@ -41,6 +44,13 @@ public class FileDownloadServlet extends GenericImageServlet {
@EJB @EJB
private transient UserBeanLocal userbean; private transient UserBeanLocal userbean;
@EJB
private transient CardTemplateBeanLocal cardbean;
@EJB
private transient CardPrintBeanLocal cardprint;
@EJB @EJB
private transient PermissionBeanLocal permbean; private transient PermissionBeanLocal permbean;
...@@ -57,6 +67,14 @@ public class FileDownloadServlet extends GenericImageServlet { ...@@ -57,6 +67,14 @@ public class FileDownloadServlet extends GenericImageServlet {
private static final Pattern URLPATTERN = Pattern.compile("([^./]+)"); private static final Pattern URLPATTERN = Pattern.compile("([^./]+)");
/**
* Usage MoyaWeb/dydata/format/
* possible formats
* logo
* userimage/<eventuserid>.jpg
* cardtemplate/<cardtemplateid>.png
* usercard/
*/
@Override @Override
protected ImageMover getImagedata() { protected ImageMover getImagedata() {
ImageMover ret = new ImageMover(); ImageMover ret = new ImageMover();
...@@ -117,6 +135,28 @@ public class FileDownloadServlet extends GenericImageServlet { ...@@ -117,6 +135,28 @@ public class FileDownloadServlet extends GenericImageServlet {
} }
} }
}else if (urlparts.get(0).equals("usercard") && urlparts.size() > 2)
{
int userid = Integer.parseInt(urlparts.get(1));
EventUser usr = userbean.findByUserId(userid);
logger.info("Trying to print usercard for user {}", usr);
if (usr != null) {
PrintedCard card = cardbean.checkPrintedCard(usr);
try {
byte[] img = cardprint.constructPNG(card);
if (img.length > 0)
{
ret.setData(img);
ret.setImagetype("image/png");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }
if (ret.getImagetype() == null) { if (ret.getImagetype() == null) {
......
...@@ -27,6 +27,7 @@ import fi.codecrew.moya.beans.EventBeanLocal; ...@@ -27,6 +27,7 @@ import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal; import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.beans.RoleBeanLocal; import fi.codecrew.moya.beans.RoleBeanLocal;
import fi.codecrew.moya.beans.UserBeanLocal; import fi.codecrew.moya.beans.UserBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission; import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.CardTemplate; import fi.codecrew.moya.model.CardTemplate;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
...@@ -167,6 +168,7 @@ public class UserView extends GenericCDIView { ...@@ -167,6 +168,7 @@ public class UserView extends GenericCDIView {
userbean.saveCroppedImage(user.getUser().getCurrentImage(), userbean.saveCroppedImage(user.getUser().getCurrentImage(),
croppedImage.getLeft(), croppedImage.getTop(), croppedImage.getLeft(), croppedImage.getTop(),
croppedImage.getWidth(), croppedImage.getHeight()); croppedImage.getWidth(), croppedImage.getHeight());
user = userbean.getEventUser(newImage.getUser()); user = userbean.getEventUser(newImage.getUser());
} catch (IOException e) { } catch (IOException e) {
logger.info("Error converting image", e); logger.info("Error converting image", e);
...@@ -318,6 +320,8 @@ public class UserView extends GenericCDIView { ...@@ -318,6 +320,8 @@ public class UserView extends GenericCDIView {
if(readerView.getBarcode() != null && !readerView.getBarcode().isEmpty()) { if(readerView.getBarcode() != null && !readerView.getBarcode().isEmpty()) {
card.setBarcode(readerView.getBarcode()); card.setBarcode(readerView.getBarcode());
card.setCardState(CardState.VALIDATED);
logger.debug("barcode {} to card {} ",readerView.getBarcode(),card.getUser().getNick()); logger.debug("barcode {} to card {} ",readerView.getBarcode(),card.getUser().getNick());
cardBean.saveCard(card); cardBean.saveCard(card);
} else if(readerView.getReaderEvent() != null) { } else if(readerView.getReaderEvent() != null) {
......
package fi.codecrew.moya.web.flow; package fi.codecrew.moya.web.flow;
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 +8,16 @@ import javax.inject.Named; ...@@ -7,9 +8,16 @@ 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.CardTemplateBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.ReaderBeanLocal;
import fi.codecrew.moya.enums.CardState;
import fi.codecrew.moya.enums.apps.UserPermission;
import fi.codecrew.moya.model.EventUser; import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.PrintedCard;
import fi.codecrew.moya.web.annotations.SelectedUser; 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.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;
...@@ -29,6 +37,17 @@ public class IncomingView extends GenericCDIView { ...@@ -29,6 +37,17 @@ public class IncomingView extends GenericCDIView {
@Inject @Inject
private ReaderView readerView; private ReaderView readerView;
@Inject
private ReaderNameContainer namecontainer;
@EJB
private CardTemplateBeanLocal cardBean;
@EJB
private PermissionBeanLocal permBean;
public void initView() { public void initView() {
super.beginConversation(); super.beginConversation();
...@@ -37,7 +56,10 @@ public class IncomingView extends GenericCDIView { ...@@ -37,7 +56,10 @@ public class IncomingView extends GenericCDIView {
private boolean initialized = false; private boolean initialized = false;
public void initPrintCardView() { public void initPrintCardView() {
if(!permbean.hasPermission(UserPermission.MODIFY) || namecontainer.getReaderId() == null || namecontainer.getReaderId() <= 0) {
super.navihandler.redirectNavigation("index.jsf");
}
if (!initialized) { if (!initialized) {
logger.debug("INITIALIZING!!!!"); logger.debug("INITIALIZING!!!!");
initializePoller(); initializePoller();
...@@ -79,6 +101,7 @@ public class IncomingView extends GenericCDIView { ...@@ -79,6 +101,7 @@ public class IncomingView extends GenericCDIView {
// still there, it must be "clean" barcode // still there, it must be "clean" barcode
if (userview.getUser() != null) { if (userview.getUser() != null) {
userview.attachBarcodeToCard(); userview.attachBarcodeToCard();
} }
} }
...@@ -99,5 +122,21 @@ public class IncomingView extends GenericCDIView { ...@@ -99,5 +122,21 @@ public class IncomingView extends GenericCDIView {
//userview.prepareCardDownload(); //userview.prepareCardDownload();
return "printCard"; return "printCard";
} }
public String printCard() {
PrintedCard card = cardBean.checkPrintedCard(user);
card.setCardState(CardState.VALIDATED);
cardBean.saveCard(card);
return null;
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!