Commit 009a807d by Tuomas Riihimäki

Merge branch 'newui' into newui-merge

Conflicts:
	code/LanBortalBeans/ejbModule/fi/insomnia/bortal/beans/CardPrintBean.java
	code/LanBortalWeb/WebContent/WEB-INF/web.xml
	code/LanBortalWeb/WebContent/resources/style/insomnia2/css/general.css
	code/LanBortalWeb/src/fi/insomnia/bortal/resources/i18n.properties
	code/LanBortalWeb/src/fi/insomnia/bortal/resources/i18n_en.properties
	code/LanBortalWeb/src/fi/insomnia/bortal/resources/i18n_fi.properties
	code/LanBortalWeb/src/fi/insomnia/bortal/web/cdiview/shop/ProductShopView.java
	code/LanBortalWeb/src/fi/insomnia/bortal/web/cdiview/user/UserValidator.java
	code/LanBortalWeb/src/fi/insomnia/bortal/web/cdiview/user/UserView.java
2 parents bcb6bbae 8a0b8812
Showing with 1927 additions and 294 deletions
...@@ -21,6 +21,7 @@ import com.pdfjet.TextLine; ...@@ -21,6 +21,7 @@ import com.pdfjet.TextLine;
import fi.insomnia.bortal.facade.CardTemplateFacade; import fi.insomnia.bortal.facade.CardTemplateFacade;
import fi.insomnia.bortal.facade.EventUserFacade; import fi.insomnia.bortal.facade.EventUserFacade;
import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.CardTemplate; import fi.insomnia.bortal.model.CardTemplate;
import fi.insomnia.bortal.model.EventUser; import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.PrintedCard; import fi.insomnia.bortal.model.PrintedCard;
...@@ -34,10 +35,16 @@ import fi.insomnia.bortal.utilities.BarcodeUtils; ...@@ -34,10 +35,16 @@ import fi.insomnia.bortal.utilities.BarcodeUtils;
@LocalBean @LocalBean
public class CardPrintBean implements CardPrintBeanLocal { public class CardPrintBean implements CardPrintBeanLocal {
@EJB private UserBean userBean; @EJB
@EJB private EventUserFacade eventUserFacade; private UserBean userBean;
@EJB private CardTemplateBean cardTemplateBean; @EJB
@EJB private CardTemplateFacade cardTemplateFacade; private EventUserFacade eventUserFacade;
@EJB
private CardTemplateBean cardTemplateBean;
@EJB
private CardTemplateFacade cardTemplateFacade;
@EJB
private UserFacade userfacade;
/** /**
* Default constructor. * Default constructor.
...@@ -46,12 +53,11 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -46,12 +53,11 @@ public class CardPrintBean implements CardPrintBeanLocal {
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
// TODO: Roles?
//TODO: Roles?
public MassPrintResult getUserCardsAsPrintablePdf(List<Integer> userIdList) throws Exception { public MassPrintResult getUserCardsAsPrintablePdf(List<Integer> userIdList) throws Exception {
ArrayList<EventUser> listOfEventUsers = new ArrayList<EventUser>(); ArrayList<EventUser> listOfEventUsers = new ArrayList<EventUser>();
for(Integer userId : userIdList) { for (Integer userId : userIdList) {
listOfEventUsers.add(eventUserFacade.find(userId)); listOfEventUsers.add(eventUserFacade.find(userId));
} }
...@@ -67,10 +73,10 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -67,10 +73,10 @@ public class CardPrintBean implements CardPrintBeanLocal {
} }
public void acceptMassPrintResult(MassPrintResult mpr) { public void acceptMassPrintResult(MassPrintResult mpr) {
for(EventUser eu : mpr.getAffectedUsers()) { for (EventUser eu : mpr.getAffectedUsers()) {
PrintedCard printedCard = cardTemplateBean.checkPrintedCard(eu); PrintedCard printedCard = cardTemplateBean.checkPrintedCard(eu);
printedCard.setPrintCount(printedCard.getPrintCount()+1); printedCard.setPrintCount(printedCard.getPrintCount() + 1);
System.out.println("Print count "+printedCard.getPrintCount()); System.out.println("Print count " + printedCard.getPrintCount());
} }
cardTemplateFacade.flush(); cardTemplateFacade.flush();
...@@ -91,11 +97,11 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -91,11 +97,11 @@ public class CardPrintBean implements CardPrintBeanLocal {
MassPrintResult mpr = new MassPrintResult(); MassPrintResult mpr = new MassPrintResult();
for(EventUser user : users) { for (EventUser user : users) {
PrintedCard printedCard = cardTemplateBean.checkPrintedCard(user); PrintedCard printedCard = cardTemplateBean.checkPrintedCard(user);
if(printedCard == null) if (printedCard == null)
continue; continue;
CardTemplate cardTemplate = printedCard.getTemplate(); CardTemplate cardTemplate = printedCard.getTemplate();
...@@ -115,15 +121,15 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -115,15 +121,15 @@ public class CardPrintBean implements CardPrintBeanLocal {
int originalHeight = faceBufferedImage.getHeight(); int originalHeight = faceBufferedImage.getHeight();
int width = originalWidth; int width = originalWidth;
int height = (int)Math.round(originalWidth*(1/0.7317073170731707)); int height = (int) Math.round(originalWidth * (1 / 0.7317073170731707));
if(height > originalHeight) { if (height > originalHeight) {
height = originalHeight; height = originalHeight;
width = (int)Math.round(originalHeight*0.7317073170731707); width = (int) Math.round(originalHeight * 0.7317073170731707);
} }
int offsetx = (originalWidth - width)/2; int offsetx = (originalWidth - width) / 2;
int offsety = (originalHeight - height)/2; int offsety = (originalHeight - height) / 2;
faceBufferedImage = faceBufferedImage.getSubimage(offsetx, offsety, width, height); faceBufferedImage = faceBufferedImage.getSubimage(offsetx, offsety, width, height);
...@@ -140,8 +146,8 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -140,8 +146,8 @@ public class CardPrintBean implements CardPrintBeanLocal {
Image faceImage = new Image(pdf, Image faceImage = new Image(pdf,
convertBufferedImageToPng(faceBufferedImage), ImageType.PNG); convertBufferedImageToPng(faceBufferedImage), ImageType.PNG);
faceImage.setPosition(15.5, 67); faceImage.setPosition(15.5, 67);
//faceImage.scaleBy(0.32); // faceImage.scaleBy(0.32);
faceImage.scaleBy(((410.0*0.245)/faceImage.getHeight())); faceImage.scaleBy(((410.0 * 0.245) / faceImage.getHeight()));
faceImage.drawOn(page); faceImage.drawOn(page);
// Render texts // Render texts
...@@ -153,7 +159,7 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -153,7 +159,7 @@ public class CardPrintBean implements CardPrintBeanLocal {
TextLine nickTextLine = new TextLine(nickFont); TextLine nickTextLine = new TextLine(nickFont);
nickTextLine.setText(user.getUser().getNick()); nickTextLine.setText(user.getUser().getNick());
nickTextLine.setPosition(19.0, 193.0); nickTextLine.setPosition(19.0, 193.0);
nickTextLine.setColor(new double[] {1.0, 1.0, 1.0}); nickTextLine.setColor(new double[] { 1.0, 1.0, 1.0 });
nickTextLine.drawOn(page); nickTextLine.drawOn(page);
// Smaller font // Smaller font
...@@ -166,14 +172,14 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -166,14 +172,14 @@ public class CardPrintBean implements CardPrintBeanLocal {
TextLine wholeNameText = new TextLine(font); TextLine wholeNameText = new TextLine(font);
wholeNameText.setText(wholeName); wholeNameText.setText(wholeName);
wholeNameText.setPosition(17.0, 212.0); wholeNameText.setPosition(17.0, 212.0);
wholeNameText.setColor(new double[] {1.0, 1.0, 1.0}); wholeNameText.setColor(new double[] { 1.0, 1.0, 1.0 });
wholeNameText.drawOn(page); wholeNameText.drawOn(page);
// Role text // Role text
TextLine roleTextLine = new TextLine(font); TextLine roleTextLine = new TextLine(font);
roleTextLine.setText(cardTemplate.getName()); roleTextLine.setText(cardTemplate.getName());
roleTextLine.setPosition(17.0, 223.0); roleTextLine.setPosition(17.0, 223.0);
roleTextLine.setColor(new double[] {1.0, 1.0, 1.0}); roleTextLine.setColor(new double[] { 1.0, 1.0, 1.0 });
roleTextLine.drawOn(page); roleTextLine.drawOn(page);
// Barcode // Barcode
...@@ -193,7 +199,8 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -193,7 +199,8 @@ public class CardPrintBean implements CardPrintBeanLocal {
pdf.flush(); pdf.flush();
outputStream.close(); outputStream.close();
if(mpr.getAffectedUsers().size() == 0) throw new Exception("No cards generated"); if (mpr.getAffectedUsers().size() == 0)
throw new Exception("No cards generated");
mpr.setPdf(outputStream.toByteArray()); mpr.setPdf(outputStream.toByteArray());
return mpr; return mpr;
} }
......
...@@ -47,7 +47,6 @@ public class MenuBean implements MenuBeanLocal { ...@@ -47,7 +47,6 @@ public class MenuBean implements MenuBeanLocal {
@EJB @EJB
private PermissionBeanLocal permbean; private PermissionBeanLocal permbean;
@SuppressWarnings("unused")
private static final Logger logger = LoggerFactory.getLogger(MenuBean.class); private static final Logger logger = LoggerFactory.getLogger(MenuBean.class);
@RolesAllowed(SpecialPermission.S_SUPERADMIN) @RolesAllowed(SpecialPermission.S_SUPERADMIN)
...@@ -58,11 +57,127 @@ public class MenuBean implements MenuBeanLocal { ...@@ -58,11 +57,127 @@ public class MenuBean implements MenuBeanLocal {
initializeMenu(); initializeMenu();
} }
@RolesAllowed(SpecialPermission.S_SUPERADMIN)
@Override
public void flushOldMenu()
{
navifacade.deleteAllDefaults();
initializeOldMenu();
}
private synchronized void initializeMenu() { private synchronized void initializeMenu() {
int menusort = 100;
logger.info("Initializing menu");
LanEvent ev = eventbean.getCurrentEvent();
MenuNavigation usermenu = new MenuNavigation(ev, "topnavi.frontpage", menusort = +10);
// usernavi.addPage(menuitemfacade.findOrCreate("/index"),
// UserPermission.ANYUSER);
navifacade.create(usermenu);
MenuNavigation adminmenu = new MenuNavigation(ev, "topnavi.adminpage", menusort = +10);
// adminnavi.addPage(menuitemfacade.findOrCreate("/index2"),
// UserPermission.ANYUSER);
navifacade.create(adminmenu);
MenuNavigation shopmenu = new MenuNavigation(ev, "topnavi.shopnavi", menusort = +10);
// shopnavi.addPage(menuitemfacade.findOrCreate("/index3"),
// UserPermission.ANYUSER);
navifacade.create(shopmenu);
// Index
usermenu.addPage(menuitemfacade.findOrCreate("/index"), UserPermission.VIEW_ALL);
// kuppa
MenuNavigation usershop = usermenu.addPage(null, null);
usermenu.setKey("topnavi.shop.products");
usermenu.addPage(menuitemfacade.findOrCreate("/place/placemap"), MapPermission.VIEW);
usershop.addPage(menuitemfacade.findOrCreate("/place/myGroups"), UserPermission.VIEW_SELF);
usershop.addPage(null, null);
usershop.addPage(menuitemfacade.findOrCreate("/shop/createBill"), BillPermission.CREATE_BILL);
usershop.addPage(menuitemfacade.findOrCreate("/user/accountEvents"), UserPermission.VIEW_SELF);
usershop.addPage(menuitemfacade.findOrCreate("/bill/list"), BillPermission.VIEW_OWN);
MenuNavigation prodsubmenu = usermenu.addPage(null, null);
prodsubmenu.setKey("topnavi.shop.products");
prodsubmenu.addPage(menuitemfacade.findOrCreate("/product/list"), ShopPermission.LIST_ALL_PRODUCTS);
prodsubmenu.addPage(menuitemfacade.findOrCreate("/product/create"), ShopPermission.MANAGE_PRODUCTS);
MenuNavigation adminshop = usermenu.addPage(null, null);
adminshop.setKey("topnavi.shop.adminshop");
adminshop.addPage(menuitemfacade.findOrCreate("/shop/showReaderEvents"), ShopPermission.SHOP_TO_OTHERS);
adminshop.addPage(menuitemfacade.findOrCreate("/shop/listReaders"), ShopPermission.SHOP_TO_OTHERS);
MenuNavigation billnavi = usermenu.addPage(null, null);
billnavi.setKey("topnavi.shop.bill");
billnavi.addPage(menuitemfacade.findOrCreate("/bill/billSummary"), BillPermission.READ_ALL);
billnavi.addPage(menuitemfacade.findOrCreate("/bill/listAll"), BillPermission.WRITE_ALL);
navifacade.create(usermenu);
MenuNavigation eventTopmenu = new MenuNavigation(ev, "topnavi.event", menusort = +10);
eventTopmenu.addPage(menuitemfacade.findOrCreate("/map/list"), MapPermission.MANAGE_MAPS);
eventTopmenu.addPage(menuitemfacade.findOrCreate("/map/create"), MapPermission.MANAGE_MAPS);
eventTopmenu.addPage(null, null);
eventTopmenu.addPage(menuitemfacade.findOrCreate("/voting/compolist"), CompoPermission.VIEW_COMPOS);
eventTopmenu.addPage(menuitemfacade.findOrCreate("/voting/myEntries"), CompoPermission.VIEW_COMPOS);
eventTopmenu.addPage(menuitemfacade.findOrCreate("/voting/create"), CompoPermission.MANAGE);
eventTopmenu.addPage(null, null);
eventTopmenu.addPage(menuitemfacade.findOrCreate("/poll/index"), PollPermission.ANSWER);
navifacade.create(eventTopmenu);
/*
MenuNavigation profileTopmenu = new MenuNavigation(ev, "topnavi.profile", menusort = +10);
profileTopmenu.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL);
profileTopmenu.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL).setHeader("submenu.user.manageuserlinks");
profileTopmenu.addPage(menuitemfacade.findOrCreate("/user/edit"), UserPermission.VIEW_SELF);
profileTopmenu.addPage(menuitemfacade.findOrCreate("/user/changePassword"), UserPermission.VIEW_SELF);
*/
MenuNavigation usermgmt = profileTopmenu.addPage(null, null);
usermgmt.setKey("topnavi.user.mgmt");
usermgmt.addPage(menuitemfacade.findOrCreate("/role/create"), UserPermission.WRITE_ROLES);
usermgmt.addPage(menuitemfacade.findOrCreate("/role/list"), UserPermission.READ_ROLES).setHeader("submenu.user.rolelinks");
usermgmt.addPage(menuitemfacade.findOrCreate("/orgrole/list"), UserPermission.READ_ORGROLES);
usermgmt.addPage(menuitemfacade.findOrCreate("/orgrole/create"), UserPermission.WRITE_ORGROLES);
usermgmt.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplates"), UserPermission.READ_ROLES);
usermgmt.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES);
navifacade.create(profileTopmenu);
MenuNavigation miscTopmenu = new MenuNavigation(ev, "topnavi.misc", menusort = +10);
miscTopmenu.addPage(menuitemfacade.findOrCreate("/pages/list"), ContentPermission.MANAGE_PAGES);
miscTopmenu.addPage(menuitemfacade.findOrCreate("/pages/create"), ContentPermission.MANAGE_PAGES);
miscTopmenu.addPage(menuitemfacade.findOrCreate("/utils/flushCache"), ContentPermission.MANAGE_PAGES);
navifacade.create(miscTopmenu);
// frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/create"),
// UserPermission.CREATE_NEW);
// frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/sendResetMail"),
// UserPermission.LOGIN);
// frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/invite"),
// UserPermission.INVITE_USERS);
// ////////////////////////////////////////////////////
// ////////////////////////////////////////////////////
// ////////////////////////////////////////////////////
// ////////////////////////////////////////////////////
// ////////////////////////////////////////////////////
// ////////////////////////////////////////////////////
// ////////////////////////////////////////////////////
}
private synchronized void initializeOldMenu() {
LanEvent ev = eventbean.getCurrentEvent(); LanEvent ev = eventbean.getCurrentEvent();
int menusort = 100;
MenuNavigation usernavi = new MenuNavigation(ev, "supernavi.user"); MenuNavigation usernavi = new MenuNavigation(ev, "supernavi.user", menusort = +10);
navifacade.create(usernavi); navifacade.create(usernavi);
...@@ -134,7 +249,7 @@ public class MenuBean implements MenuBeanLocal { ...@@ -134,7 +249,7 @@ public class MenuBean implements MenuBeanLocal {
compoMenu.addPage(menuitemfacade.findOrCreate("/voting/submitEntry"), null).setVisible(false); compoMenu.addPage(menuitemfacade.findOrCreate("/voting/submitEntry"), null).setVisible(false);
compoMenu.addPage(menuitemfacade.findOrCreate("/voting/details"), null).setVisible(false); compoMenu.addPage(menuitemfacade.findOrCreate("/voting/details"), null).setVisible(false);
MenuNavigation adminnavi = new MenuNavigation(ev, "supernavi.admin"); MenuNavigation adminnavi = new MenuNavigation(ev, "supernavi.admin", menusort = +10);
navifacade.create(adminnavi); navifacade.create(adminnavi);
MenuNavigation adminuser = adminnavi.addPage(null, null); MenuNavigation adminuser = adminnavi.addPage(null, null);
......
...@@ -71,6 +71,8 @@ public class MenuNavigationFacade extends IntegerPkGenericFacade<MenuNavigation> ...@@ -71,6 +71,8 @@ public class MenuNavigationFacade extends IntegerPkGenericFacade<MenuNavigation>
cb.equal(root.get(MenuNavigation_.event), eventbean.getCurrentEvent()), cb.equal(root.get(MenuNavigation_.event), eventbean.getCurrentEvent()),
cb.isTrue(root.get(MenuNavigation_.visible))); cb.isTrue(root.get(MenuNavigation_.visible)));
cq.orderBy(cb.asc(root.get(MenuNavigation_.sort)));
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
......
...@@ -17,4 +17,6 @@ public interface MenuBeanLocal { ...@@ -17,4 +17,6 @@ public interface MenuBeanLocal {
List<MenuNavigation> getTopmenus(); List<MenuNavigation> getTopmenus();
void flushOldMenu();
} }
...@@ -82,8 +82,9 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi ...@@ -82,8 +82,9 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi
super(); super();
} }
public MenuNavigation(LanEvent ev, String keyString) { public MenuNavigation(LanEvent ev, String keyString, Integer sort) {
super(); super();
this.sort = sort;
this.event = ev; this.event = ev;
this.key = keyString; this.key = keyString;
this.visible = true; this.visible = true;
...@@ -186,8 +187,11 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi ...@@ -186,8 +187,11 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi
// used only for initialization function... // used only for initialization function...
public MenuNavigation addPage(Menuitem item, IAppPermission permission) { public MenuNavigation addPage(Menuitem item, IAppPermission permission) {
if (children == null) { int childSort = 100;
if (children == null || children.size() == 0) {
children = new ArrayList<MenuNavigation>(); children = new ArrayList<MenuNavigation>();
} else {
childSort = children.get(children.size() - 1).getSort() + 10;
} }
MenuNavigation add = new MenuNavigation(); MenuNavigation add = new MenuNavigation();
add.setSort(pagesort += 10); add.setSort(pagesort += 10);
...@@ -200,6 +204,7 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi ...@@ -200,6 +204,7 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi
add.setPermission(permission); add.setPermission(permission);
add.setParent(this); add.setParent(this);
add.setVisible(true); add.setVisible(true);
add.setSort(childSort);
children.add(add); children.add(add);
return add; return add;
......
...@@ -30,17 +30,19 @@ public class I18n { ...@@ -30,17 +30,19 @@ public class I18n {
public static String get(String key) { public static String get(String key) {
String value = null; String value = null;
if (key == null) {
value = "########";
} else {
try { try {
value = getResourceBundle().getString(key); value = getResourceBundle().getString(key);
} catch (MissingResourceException e) { } catch (MissingResourceException e) {
value = null; value = null;
} }
if (key == null) { if (value == null) {
value = "########";
} else if (value == null) {
value = "???" + key + "???"; value = "???" + key + "???";
}
} }
return value; return value;
} }
......
...@@ -9,13 +9,14 @@ public class SearchQuery implements Serializable { ...@@ -9,13 +9,14 @@ public class SearchQuery implements Serializable {
private int pagesize = 20; private int pagesize = 20;
private String sort = null; private String sort = null;
private String search = null; private String search = null;
private Boolean direction = false;
public SearchQuery() public SearchQuery()
{ {
super(); super();
} }
public SearchQuery(int page, int pagesize, String sort, String search) { public SearchQuery(int page, int pagesize, String sort, String search, boolean direction) {
super(); super();
this.page = page; this.page = page;
this.pagesize = pagesize; this.pagesize = pagesize;
...@@ -69,4 +70,12 @@ public class SearchQuery implements Serializable { ...@@ -69,4 +70,12 @@ public class SearchQuery implements Serializable {
} }
} }
public Boolean isDirection() {
return direction;
}
public void setDirection(Boolean direction) {
this.direction = direction;
}
} }
...@@ -10,8 +10,7 @@ ...@@ -10,8 +10,7 @@
<context-param> <context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name> <param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value> <param-value>Production</param-value>
<!--<param-value>Development</param-value> -->
<!-- <param-value>Development</param-value>-->
</context-param> </context-param>
<context-param> <context-param>
...@@ -143,8 +142,8 @@ ...@@ -143,8 +142,8 @@
<servlet-name>PlaceGroupPdf</servlet-name> <servlet-name>PlaceGroupPdf</servlet-name>
<url-pattern>/PlaceGroupPdf</url-pattern> <url-pattern>/PlaceGroupPdf</url-pattern>
</servlet-mapping> </servlet-mapping>
<context-param> <!-- <context-param>
<param-name>primefaces.THEME</param-name> <param-name>primefaces.THEME</param-name>
<param-value>bortal</param-value> <param-value>bortal</param-value>
</context-param> </context-param> -->
</web-app> </web-app>
\ No newline at end of file
<!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:tools="http://java.sun.com/jsf/composite/cditools">
<h:body>
<ui:composition
template="/layout/#{sessionHandler.adduserfullscreen}/template.xhtml">
<ui:define name="content">
<div style="text-align: center;">
<h:form>
<h1>#{i18n["adduser.welcome"]}</h1>
<br/><br/><p>#{i18n["adduser.welcometext"]}
</p>
<br/><br/>
<p:commandButton styleClass="start" value="#{i18n['adduser.newuser']}" />
<p:commandButton styleClass="start" value="#{i18n['adduser.update']}" />
</h:form>
</div>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!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:user="http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools="http://java.sun.com/jsf/composite/cditools"
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop"
>
<h:body>
<ui:composition
template="/layout/#{sessionHandler.fullscreen}/template.xhtml">
<f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{userView.initView}" />
</f:metadata>
<ui:define name="topbar">
<h:link outcome="/admin/info/general" class="userbackbutton" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/arrow.png" />
</div>
</h:link>
</ui:define>
<ui:define name="content">
<h:outputText rendered="#{empty placeGroupView.groupMemberships}" value="#{i18n['placegroupview.noMemberships']}" />
<h:form rendered="#{!empty placeGroupView.groupMemberships}" id="placelistform">
<h:dataTable value="#{placeGroupView.groupMemberships}" var="member">
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['placegroupview.reservationName']}" />
</f:facet>
<h:outputText value="#{member.placeReservation.name}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['placegroupview.reservationProduct']}" />
</f:facet>
<h:outputText value="#{member.placeReservation.product.name}" />
</h:column>
<h: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})" />
</h:column>
<h: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})" />
</h:column>
<h:column>
<h:commandButton rendered="#{placeGroupView.canModifyCurrent and placeGroupView.currentMemberUserNotNull}" action="#{placeGroupView.releasePlace()}" value="#{i18n['placegroupview.releasePlace']}" />
</h:column>
</h:dataTable>
</h:form>
<p>
<input type="button" onclick="location.replace('#{request.contextPath}/PlaceGroupPdf');" value="#{i18n['placegroup.printPdf']}" />
</p>
<h2>#{i18n['placetoken.pageHeader']}</h2>
<p>#{i18n['placetoken.topText']}</p>
<h:form id="placeTokenForm">
<h:outputLabel value="#{i18n['placetoken.token']}:" />
<h:inputText value="#{tokenView.token}" />
<h:commandButton id="commitbtn" action="#{tokenView.saveToken()}" value="#{i18n['placetoken.commit']}" />
</h:form>
</ui:define>
<ui:define name="sidebar">
<user:tileview />
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!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:user="http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools="http://java.sun.com/jsf/composite/cditools">
<h:body>
<ui:composition
template="/layout/#{sessionHandler.fullscreen}/template.xhtml">
<f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{userView.initView}" />
</f:metadata>
<ui:define name="topbar">
<h:link outcome="/admin/info/index" class="userbackbutton" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/arrow.png" />
</div>
</h:link>
</ui:define>
<ui:define name="content">
<h:link outcome="/admin/info/shop" class="usertile" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/shop.png" />
<h:outputText value="#{i18n['infoview.shop']}" />
</div>
<f:param name="userid" value="#{userView.user.id}" />
</h:link>
<h:link outcome="/admin/info/computerplaces" class="usertile" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/computer.png" />
<h:outputText value="#{i18n['infoview.computerplace']}" />
</div>
</h:link>
</ui:define>
<ui:define name="sidebar">
<user:tileview />
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!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:tools="http://java.sun.com/jsf/composite/cditools">
<h:body>
<ui:composition
template="/layout/#{sessionHandler.fullscreen}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{barcodeView.initView}" />
</f:metadata>
<f:metadata>
<f:event type="preRenderView" listener="#{readerListDataView.initView}" />
<f:event type="preRenderView" listener="#{readerList.initReaderList}" />
</f:metadata>
<ui:define name="content">
<br />
<br />
<shop:readeventtiles />
</ui:define>
<ui:define name="sidebar">
<shop:readerlisttiles />
<br />
<h:form>
<h:inputText name="barcode" value="#{barcodeView.barcode}" />
<h:commandButton action="#{barcodeView.readBarcode}"
value="#{i18n['barcodeReader.readBarcode']}" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!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:user="http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools="http://java.sun.com/jsf/composite/cditools"
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop">
<h:body>
<ui:composition
template="/layout/#{sessionHandler.fullscreen}/template.xhtml">
<f:metadata>
<f:viewParam name="userid" value="#{userView.userid}" />
<f:event type="preRenderView" listener="#{userView.initView}" />
<f:event type="preRenderView" listener="#{productShopView.initShopView}" />
</f:metadata>
<ui:define name="topbar">
<h:link outcome="/admin/info/general" class="userbackbutton" value="">
<div>
<img src="#{request.contextPath}/resources/style/blipview/img/arrow.png" />
</div>
</h:link>
</ui:define>
<ui:define name="content">
<shop:shoppingcart />
</ui:define>
<ui:define name="sidebar">
<user:tileview />
</ui:define>
</ui:composition>
</h:body>
</html>
\ 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="stylesheet" type="text/css"
href="#{request.contextPath}/resources/style/blipview/css/style.css" />
<link rel="stylesheet" type="text/css"
href="#{request.contextPath}/resources/style/blipview/css/general.css" />
<ui:insert name="headerdata" />
</h:head>
<h:body>
<div class="container top">
<ui:insert name="topbar" />
</div>
<div class="container clearfix">
<div id="content">
<ui:insert name="content" />
</div>
</div>
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://jolez.pingtimeout.net/piwik/"
: "http://jolez.pingtimeout.net/piwik/");
document.write(unescape("%3Cscript src='" + pkBaseURL
+ "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 5);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch (err) {
}
</script>
<noscript>
<p>
<img src="http://jolez.pingtimeout.net/piwik/piwik.php?idsite=5"
style="border: 0" alt="" />
</p>
</noscript>
<!-- End Piwik Tracking Code -->
</h:body>
</f:view>
</html>
\ 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="stylesheet" type="text/css"
href="#{request.contextPath}/resources/style/blipview/css/style.css" />
<link rel="stylesheet" type="text/css"
href="#{request.contextPath}/resources/style/blipview/css/general.css" />
<ui:insert name="headerdata" />
</h:head>
<h:body>
<p:menubar model="#{primeMenuView.menuModel}">
</p:menubar>
<div class="container top">
<ui:insert name="topbar" />
</div>
<div class="container clearfix">
<div id="right">
<ui:insert name="sidebar" />
</div>
<div id="left">
<ui:insert name="content" />
</div>
</div>
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://jolez.pingtimeout.net/piwik/"
: "http://jolez.pingtimeout.net/piwik/");
document.write(unescape("%3Cscript src='" + pkBaseURL
+ "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 5);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch (err) {
}
</script>
<noscript>
<p>
<img src="http://jolez.pingtimeout.net/piwik/piwik.php?idsite=5"
style="border: 0" alt="" />
</p>
</noscript>
<!-- End Piwik Tracking Code -->
</h:body>
</f:view>
</html>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?> <?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"> <!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" <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui"> 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}"> <f:view contentType="text/html" locale="#{sessionHandler.locale}">
...@@ -13,8 +18,10 @@ ...@@ -13,8 +18,10 @@
<meta name="author" content="CodeCrew ry" /> <meta name="author" content="CodeCrew ry" />
<meta http-equiv="Content-Language" content="fi" /> <meta http-equiv="Content-Language" content="fi" />
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/style/template1/css/style.css" /> <link rel="stylesheet" type="text/css"
<link rel="stylesheet" type="text/css" href="#{request.contextPath}/resources/style/template1/css/general.css" /> href="#{request.contextPath}/resources/style/template1/css/style.css" />
<link rel="stylesheet" type="text/css"
href="#{request.contextPath}/resources/style/template1/css/general.css" />
<ui:insert name="headerdata" /> <ui:insert name="headerdata" />
</h:head> </h:head>
...@@ -26,10 +33,12 @@ ...@@ -26,10 +33,12 @@
<h:link outcome="/index"> <h:link outcome="/index">
<c:choose> <c:choose>
<c:when test="#{sessionHandler.isInDevelopmentMode()}"> <c:when test="#{sessionHandler.isInDevelopmentMode()}">
<img src="#{request.contextPath}/resources/style/insomnia2/img/devel_logo.png" /> <img
src="#{request.contextPath}/resources/style/insomnia2/img/devel_logo.png" />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<p:graphicImage rendered="#{!empty layoutView.headerimage}" value="#{layoutView.headerimage}" /> <p:graphicImage rendered="#{!empty layoutView.headerimage}"
value="#{layoutView.headerimage}" />
<ui:fragment rendered="#{empty layoutView.headerimage}"> <ui:fragment rendered="#{empty layoutView.headerimage}">
<h1> <h1>
<h:outputText value="#{layoutView.headertext}" /> <h:outputText value="#{layoutView.headertext}" />
...@@ -45,35 +54,38 @@ ...@@ -45,35 +54,38 @@
<div id="login"> <div id="login">
<h:outputText rendered="#{sessionHandler.loggedIn}" value="#{i18n['template.loggedInAs']} #{sessionHandler.currentUser.nick}" /> <h:outputText rendered="#{sessionHandler.loggedIn}"
value="#{i18n['template.loggedInAs']} #{sessionHandler.currentUser.nick}" />
<div> <div>
<tools:loginLogout /> <tools:loginLogout />
</div> </div>
</div> </div>
<ui:fragment rendered="#{menuView.getMenu(0).size() > 1}">
<div id="top-menu">
<ul>
<li jsfc="ui:repeat" var="menuitem" value="#{menuView.getMenu(0)}">
<h:link outcome="#{menuitem.outcome}" value="#{i18n[menuitem.navigation.key]}" styleClass="#{menuitem.selected?'active':''}" />
</li>
</ul>
</div>
</ui:fragment>
</div> </div>
<div id="main"> <div id="main">
<div id="main-nav"> <p:menubar model="#{primeMenuView.menuModel}" style="width:80%; float: left;">
<ul>
<li jsfc="ui:repeat" var="menuitem" value="#{menuView.getMenu(1)}">
<h:link outcome="#{menuitem.outcome}" value="#{i18n[menuitem.navigation.key]}" styleClass="#{menuitem.selected?'active':''}" /> </p:menubar>
</li> <p:menubar style="float:left; width: auto;">
</ul> <p:submenu label="#{sessionHandler.currentUser.wholeName}">
</div>
<p:submenu label="Roolit">
<p:menuitem value="Kävijä" url="#" />
<p:menuitem value="Admin" url="#" />
<p:menuitem value="Info" url="/admin/info/index.jsf" />
</p:submenu>
<p:menuitem value="Omat tiedot" url="/admin/info/index.jsf" />
<p:menuitem value="Omat konepaikat" url="/admin/info/index.jsf" />
<p:menuitem value="Logout" url="/admin/info/index.jsf" />
</p:submenu>
</p:menubar>
<div class="container top"> <div class="container top">
<h:link rendered="#{layoutView.manageContent}" styleClass="editorlink" value="#{i18n['layout.editTop']}" outcome="/pages/manage"> <h:link rendered="#{layoutView.manageContent}"
styleClass="editorlink" value="#{i18n['layout.editTop']}"
outcome="/pages/manage">
<f:param name="pagename" value="#{layoutView.pagepath}:top" /> <f:param name="pagename" value="#{layoutView.pagepath}:top" />
</h:link> </h:link>
</div> </div>
...@@ -84,8 +96,12 @@ ...@@ -84,8 +96,12 @@
<div id="right"> <div id="right">
<ul> <ul>
<ui:repeat var="menuitem" value="#{menuView.getMenu(2)}"> <ui:repeat var="menuitem" value="#{menuView.getMenu(2)}">
<h:outputText rendered="#{!empty menuitem.header}" value="&lt;/ul>&lt;h1>#{i18n[menuitem.header]}&lt;/h1>&lt;ul>" escape="false" /> <h:outputText rendered="#{!empty menuitem.header}"
<li><h:link outcome="#{menuitem.outcome}" value="#{i18n[menuitem.navigation.key]}" styleClass="#{menuitem.selected?'active':''}" /></li> value="&lt;/ul>&lt;h1>#{i18n[menuitem.header]}&lt;/h1>&lt;ul>"
escape="false" />
<li><h:link outcome="#{menuitem.outcome}"
value="#{i18n[menuitem.navigation.key]}"
styleClass="#{menuitem.selected?'active':''}" /></li>
</ui:repeat> </ui:repeat>
</ul> </ul>
</div> </div>
...@@ -93,19 +109,23 @@ ...@@ -93,19 +109,23 @@
<div id="left"> <div id="left">
<ui:insert name="title" /> <ui:insert name="title" />
<h:messages globalOnly="true" /> <p:messages severity="info" />
<h:messages />
<ui:repeat var="cont1" value="#{menuView.getPagecontent('top')}"> <ui:repeat var="cont1" value="#{menuView.getPagecontent('top')}">
<h:outputText value="#{cont1.content}" escape="false" /> <h:outputText value="#{cont1.content}" escape="false" />
</ui:repeat> </ui:repeat>
<ui:insert name="content" /> <ui:insert name="content" />
<ui:repeat var="cont1" value="#{menuView.getPagecontent('bottom')}"> <ui:repeat var="cont1"
value="#{menuView.getPagecontent('bottom')}">
<h:outputText value="#{cont1.content}" escape="false" /> <h:outputText value="#{cont1.content}" escape="false" />
</ui:repeat> </ui:repeat>
</div> </div>
</div> </div>
<div class="container bottom"> <div class="container bottom">
<h:link rendered="#{layoutView.manageContent}" styleClass="editorlink" value="#{i18n['layout.editBottom']}" outcome="/pages/manage"> <h:link rendered="#{layoutView.manageContent}"
styleClass="editorlink" value="#{i18n['layout.editBottom']}"
outcome="/pages/manage">
<f:param name="pagename" value="#{layoutView.pagepath}:bottom" /> <f:param name="pagename" value="#{layoutView.pagepath}:bottom" />
</h:link> </h:link>
</div> </div>
...@@ -114,19 +134,26 @@ ...@@ -114,19 +134,26 @@
<!-- Piwik --> <!-- Piwik -->
<script type="text/javascript"> <script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://jolez.pingtimeout.net/piwik/" : "http://jolez.pingtimeout.net/piwik/"); var pkBaseURL = (("https:" == document.location.protocol) ? "https://jolez.pingtimeout.net/piwik/"
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); : "http://jolez.pingtimeout.net/piwik/");
document.write(unescape("%3Cscript src='" + pkBaseURL
+ "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
try { try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 5); var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 5);
piwikTracker.trackPageView(); piwikTracker.trackPageView();
piwikTracker.enableLinkTracking(); piwikTracker.enableLinkTracking();
} catch (err) {
} }
catch( err ) {}
</script> </script>
<noscript><p><img src="http://jolez.pingtimeout.net/piwik/piwik.php?idsite=5" style="border:0" alt="" /></p></noscript> <noscript>
<p>
<img src="http://jolez.pingtimeout.net/piwik/piwik.php?idsite=5"
style="border: 0" alt="" />
</p>
</noscript>
<!-- End Piwik Tracking Code --> <!-- End Piwik Tracking Code -->
</h:body> </h:body>
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
</h:panelGrid> </h:panelGrid>
</h:form> </h:form>
</h:panelGrid> </h:panelGrid>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -3,13 +3,11 @@ ...@@ -3,13 +3,11 @@
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:h="http://java.sun.com/jsf/html"
xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:tools="http://java.sun.com/jsf/composite/cditools"
xmlns:f="http://java.sun.com/jsf/core"> xmlns:f="http://java.sun.com/jsf/core"
<h:head> xmlns:p="http://primefaces.org/ui" >
<title></title>
</h:head>
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.permissionDenied" />
<ui:define name="content"> <ui:define name="content">
<h1>#{i18n['permissiondenied.header']}</h1> <h1>#{i18n['permissiondenied.header']}</h1>
<p> <p>
......
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
</h:dataTable> </h:dataTable>
<div> <div>
<h:outputText value="#{i18n['productshop.total']} " /> <h:outputText value="#{i18n['productshop.total']} " />
<h:outputText value="#{productShopView.totalPrice}"> <h:outputText value="#{productShopView.cartPrice}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" /> <f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
</h:outputText> </h:outputText>
</div> </div>
......
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:form id="readerlist">
<h:dataTable id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.name']}" />
</f:facet>
<h:outputText value="#{rr.identification}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.description']}" />
</f:facet>
<h:outputText value="#{rr.description}" />
</h:column>
<h:column>
<p:commandButton ajax="false" action="#{readerView.setReaderToId(rr.id)}" value="#{i18n['reader.select']}" />
</h:column>
</h:dataTable>
</h:form>
</composite:implementation>
</html>
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:form>
<p:poll interval="3" />
<ui:repeat value="#{readerView.readerEvents}" var="event" >
<h:link styleClass="userimagetile" outcome="/admin/info/general"
rendered="#{!empty event.printedCard.user}">
<div>
<img
src="#{request.contextPath}/dydata/userimage/#{event.printedCard.user.currentImage.id}.img" />
<br />
<h:outputText styleClass="usertilenick"
value="#{event.printedCard.user.nick}" />
<br />
<h:outputText value="#{event.printedCard.user.wholeName}" />
<br />
<ui:repeat
value="#{readerView.getUserRoles(event.printedCard.user)}"
var="role">
<h:outputText value="#{role.name}" />
<br />
</ui:repeat>
</div>
<f:param name="userid" value="#{event.printedCard.user.user.id}" />
</h:link>
</ui:repeat>
</h:form>
</composite:implementation>
</html>
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools" xmlns:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:form id="shoppingcartform">
<h:panelGrid columns="2">
<h:panelGroup>
<div id="shopItems">
<ui:repeat value="#{productShopView.shoppingcart}" var="cart">
<h:commandLink styleClass="shopItem" action="#{productShopView.addOne}">
<f:ajax render="@form" />
<div>
#{cart.product.name}<br />
<h:outputText value="#{cart.product.price}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
</h:outputText>
eur
</div>
</h:commandLink>
</ui:repeat>
</div>
</h:panelGroup>
<h:panelGroup>
<h:outputLabel value="#{i18n['shop.barcode']}" />
<h:inputText id="barcode" value="#{productShopView.barcode}" />
<h:commandButton action="#{productShopView.readBarcode}" onclick="blip(); return true;" value="#{i18n['shop.readBarcode']}">
<f:ajax render="@form" onevent="barcodeReadEvent" execute="@form" />
</h:commandButton>
<br />
<p:dataTable id="prods" value="#{productShopView.boughtItems}" var="prods">
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['shop.count']}" />
</f:facet>
<p:inplace>
<p:inputText value="#{prods.count}" size="4">
<f:ajax event="valueChange" render="@form" />
<f:convertNumber minFractionDigits="0" maxFractionDigits="2" />
</p:inputText>
</p:inplace>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['shop.product']}" />
</f:facet>
<h:outputText value="#{prods.getProduct().name}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['shop.price']}" />
</f:facet>
<h:outputText value="#{prods.getProduct().price}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
</h:outputText>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{i18n['shop.actions']}" />
</f:facet>
<h:commandButton action="#{productShopView.removeBought()}" value="Poista" />
</p:column>
</p:dataTable>
<div style="font-weight: bold;">
<h:outputText value="#{i18n['shop.cartPrice']}" />
<h:outputText id="shoptotal" value="#{productShopView.cartPrice}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
</h:outputText>
<br />
<h:outputLabel value="#{i18n['shop.currentBalance']}" />
<h:outputText id="currentbalance" value="#{productShopView.accountCredits}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
</h:outputText>
<br />
<h:outputLabel value="#{i18n['shop.transactionTotal']}" />
<h:outputText id="transactiontotal" value="#{productShopView.transactionTotal}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
</h:outputText>
</div>
<br />
<br />
<h:outputLabel value="#{i18n['shop.toAccountValue']}" />
<h:inputText styleClass="inputval" size="5" value="#{productShopView.cash}">
<f:ajax render="@form" event="valueChange" listener="#{productShopView.cashChanged}" />
</h:inputText>
<br />
<h:outputLabel value="#{i18n['shop.cashGiven']}" />
<input id="returnval" type="text" size="5" value="0" disabled="disabled"/>
<h:outputLabel value="#{i18n['shop.cashBack']}" />
<input id="returnval" type="text" size="5" value="0" disabled="disabled"/>
<br />
<h:outputLabel value="#{i18n['shop.']}" />
<h:outputText value=" #{productShopView.balanceAfterTransaction}">
<f:convertNumber />
</h:outputText>
<h:commandButton action="#{productShopView.commitShoppingcart()}" value="#{i18n['shop.buy']}" />
</h:panelGroup>
</h:panelGrid>
<h:outputScript library="primefaces" name="jquery/jquery.js" />
</h:form>
<script>
var blipSnd = new Audio(
"#{request.contextPath}/resources/media/blip.mp3")
$(function() {
$("#shoppingcartform\\:barcode").focus();
});
function blip() {
blipSnd.play();
}
function calc() {
$("#returnval").val($("#inputval").val() - $(".inputval").text().replace(",","."));
}
function barcodeReadEvent(data) {
if (data.status == "success") {
$("#shoppingcartform\\:barcode").focus();
}
}
</script>
</composite:implementation>
</html>
...@@ -2,15 +2,15 @@ ...@@ -2,15 +2,15 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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:composite="http://java.sun.com/jsf/composite" <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:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tools="http://java.sun.com/jsf/composite/tools"> xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui" xmlns:tools="http://java.sun.com/jsf/composite/tools">
<composite:interface> <composite:interface>
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" /> <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<h:dataTable styleClass="bordertable" id="user" value="#{userSearchView.results}" var="user">
<h:column> <p:dataTable id="user" value="#{userSearchView.results}" var="user">
<p:column>
<f:facet name="header"> <f:facet name="header">
<h:link value="#{i18n['user.nick']}" includeViewParams="true"> <h:link value="#{i18n['user.nick']}" includeViewParams="true">
<f:param name="sort" value="nick" /> <f:param name="sort" value="nick" />
...@@ -18,7 +18,30 @@ ...@@ -18,7 +18,30 @@
</h:link> </h:link>
</f:facet> </f:facet>
<h:outputText styleClass="hoverable" value="#{(empty user.nick)?'----':user.nick}" /> <h:outputText styleClass="hoverable" value="#{(empty user.nick)?'----':user.nick}" />
<div class="userdata_popup"> </p:column>
<p:column>
<f:facet name="header">
<h:link value="#{i18n['user.firstnames']}" includeViewParams="true">
<f:param name="sort" value="firstnames" />
<f:param name="page" value="0" />
</h:link>
</f:facet>
<h:outputText value="#{user.firstnames}" />
</p:column>
<p:column>
<f:facet name="header">
<h:link value="#{i18n['user.lastName']}" includeViewParams="true">
<f:param name="sort" value="lastname" />
</h:link>
</f:facet>
<h:outputText value="#{user.lastname}" />
</p:column>
<p:column>
<p:commandButton onClick="location.replace('#{request.contextPath}/useradmin/edit.jsf?userid=#{user.id}')">#{i18n['user.edit']}</p:commandButton>
<p:commandButton id="userinfoBtn" value="Info" type="button" />
<p:overlayPanel for="userinfoBtn">
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<img style="width:100px;" src="#{request.contextPath}/dydata/userimage/#{user.currentImage.id}.img" alt="image" /> <img style="width:100px;" src="#{request.contextPath}/dydata/userimage/#{user.currentImage.id}.img" alt="image" />
...@@ -33,43 +56,16 @@ ...@@ -33,43 +56,16 @@
<h:outputText value="#{user.email}"/> <br /> <h:outputText value="#{user.email}"/> <br />
</h:panelGroup> </h:panelGroup>
</h:panelGrid> </h:panelGrid>
</div> </p:overlayPanel>
</p:column>
</h:column>
<h:column>
<f:facet name="header">
<h:link value="#{i18n['user.firstNames']}" includeViewParams="true">
<f:param name="sort" value="firstnames" />
<f:param name="page" value="0" />
</h:link>
</f:facet>
<h:outputText value="#{user.firstnames}" />
</h:column>
<h:column>
<f:facet name="header">
<h:link value="#{i18n['user.lastName']}" includeViewParams="true">
<f:param name="sort" value="lastname" />
</h:link>
</f:facet>
<h:outputText value="#{user.lastname}" />
</h:column>
<h:column>
<f:facet name="header">
<h:link value="#{i18n['user.email']}" includeViewParams="true">
<f:param name="sort" value="email" />
</h:link>
</f:facet>
<h:outputText value="#{user.email}" />
</h:column>
<h:column>
<button onClick="location.replace('#{request.contextPath}/useradmin/edit.jsf?userid=#{user.id}')">#{i18n['user.edit']}</button>
</h:column>
<!-- <h:column> <!-- <h:column>
<h:commandButton action="#{userView.shop()}" value="#{i18n['user.shop']}" /> <h:commandButton action="#{userView.shop()}" value="#{i18n['user.shop']}" />
</h:column> --> </h:column> -->
</h:dataTable> </p:dataTable>
<script> <script>
jQuery(function() { jQuery(function() {
jQuery(".hoverable").hover(function () { jQuery(".hoverable").hover(function () {
......
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tools="http://java.sun.com/jsf/composite/tools">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:dataTable id="reader" value="#{readerListDataView.readers}" var="rr">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.name']}" />
</f:facet>
<h:outputText value="#{rr.identification}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['reader.description']}" />
</f:facet>
<h:outputText value="#{rr.description}" />
</h:column>
<h:column>
<h:link outcome="/shop/showReaderEvents" value="#{i18n['reader.select']}">
<f:param value="#{rr.id}" name="readerId" />
</h:link>
</h:column>
<h:column>
<h:link outcome="/shop/editReader" value="#{i18n['reader.edit']}">
<f:param value="#{rr.id}" name="readerId" />
</h:link>
</h:column>
</h:dataTable>
</composite:implementation>
</html>
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:p="http://primefaces.org/ui">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:outputScript library="primefaces" name="jquery/jquery.js"
target="head" />
<div style="width: 300px; margin: 0 auto;">
<h:form id="userform" enctype="multipart/form-data">
<ui:fragment rendered="#{not empty userView.user.id}">
<h:outputText rendered="#{empty userView.user.currentImage}"
value="#{i18n['user.noCurrentImage']}" />
<ui:fragment rendered="#{!empty userView.user.currentImage}">
<img style="width: 150px;"
src="#{request.contextPath}/dydata/userimage/#{userView.user.currentImage.id}.img"
alt="image" />
</ui:fragment>
<br />
</ui:fragment>
<h:outputText value="#{userView.selectedUser.nick}" />
<br />
<h:outputText value="#{userView.selectedUser.wholeName}" />
<br /><br />
<h:outputText value="#{userView.selectedUser.address}" />
<br />
<h:outputText value="#{userView.selectedUser.zip}" />
<h:outputText value=" #{userView.selectedUser.town}" />
<br /><br />
<h:outputText value="#{userView.selectedUser.email}" />
<br />
<h:outputText value="#{userView.selectedUser.phone}" />
<br />
</h:form>
</div>
</composite:implementation>
</html>
/* 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 {
float: left;
width: 72px;
height: 72px;
background: burlywood;
border: 1px solid black;
margin: 2px;
}
a.shopItem {
color: black !important;
}
a.shopItem 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 {
background: darkgoldenrod;
}
a.shopItem:active {
background: red;
}
a.userimagetile, a.usertile {
float: left;
}
a.userimagetile div {
width: 128px;
height: 224px;
border: 1px solid black;
margin: 2px;
}
a.userimagetile div img {
width: 100%;
}
.usertilenick {
font-size: 14pt;
}
a.userbackbutton:link, a.userbackbutton:visited {
color: black;
text-decoration: none;
}
a.userbackbutton div{
background: #CEE4ED;
width:8em;
height: 2em;
padding: 1em;
border: 1px solid black;
}
a.usertile div {
background: #CEE4ED;
width: 10em;
height: 10em;
padding: 1em;
margin: 1em;
border: 1px solid black;
}
* {
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*/
#main {
clear: both;
}
.container.top,.container.bottom {
clear: both;
text-align: center;
}
.container.top a,.container.bottom a {
font-size: 90%;
color: #aaa;
text-decoration: none;
}
.container.bottom {
clear: both;
}
#content {
width: 800px;
margin: 0 auto;
}
\ No newline at end of file
/* 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 {
float: left;
width: 72px;
height: 72px;
background: burlywood;
border: 1px solid black;
margin: 2px;
}
a.shopItem {
color: black !important;
}
a.shopItem 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 {
background: darkgoldenrod;
}
a.shopItem:active {
background: red;
}
a.userimagetile, a.usertile {
float: left;
}
a.userimagetile div {
width: 128px;
height: 224px;
border: 1px solid black;
margin: 2px;
}
a.userimagetile div img {
width: 100%;
}
.usertilenick {
font-size: 14pt;
}
a.userbackbutton:link, a.userbackbutton:visited {
color: black;
text-decoration: none;
}
a.userbackbutton div{
background: #CEE4ED;
width:8em;
height: 2em;
padding: 1em;
border: 1px solid black;
}
a.usertile div {
background: #CEE4ED;
width: 10em;
height: 10em;
padding: 1em;
margin: 1em;
border: 1px solid black;
}
* {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 {
}
/* General css, use for non-layout purposes for general elements */ /* General css, use for non-layout purposes for general elements */
/* userlistview popup */ /* userlistview popup */
.userdata_popup { .userdata_popup {
position: absolute; position: absolute;
border: 1px solid black; border: 1px solid black;
background: white; background: white;
border-radius: 3px; border-radius: 3px;
display: none; display: none;
width: 300px;
height: 150px;
} }
/* general class for hoverable usage */ /* general class for hoverable usage */
.hoverable { .hoverable {
} }
.text-center { .hidden {
display: none;
}
#webcamcontainer {
}
#shopItems {
}
.ui-panel-title {
text-overflow: clip;
}
.shopItem {
float: left;
width: 72px;
height: 72px;
background: burlywood;
border: 1px solid black;
margin: 2px;
}
a.shopItem {
color: black !important;
}
a.shopItem div {
position: absolute;
height: 72px;
width: 72px;
text-align: center; 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);
} }
.closed { }
background-color: #eee; a.shopItem:hover {
background: darkgoldenrod;
} }
.hidden { a.shopItem:active {
display: none; background: red;
} }
\ No newline at end of file
/* General css, use for non-layout purposes for general elements */ /* General css, use for non-layout purposes for general elements */
/* userlistview popup */ /* userlistview popup */
.userdata_popup { .userdata_popup {
position: absolute; position: absolute;
border: 1px solid black; border: 1px solid black;
background: white; background: white;
border-radius: 3px; border-radius: 3px;
display: none; display: none;
width: 300px; width: 300px;
height: 150px; height: 150px;
} }
/* general class for hoverable usage */ /* general class for hoverable usage */
.hoverable { .hoverable {
...@@ -20,33 +18,61 @@ height: 150px; ...@@ -20,33 +18,61 @@ height: 150px;
.hidden { .hidden {
display: none; display: none;
} }
#webcamcontainer { #webcamcontainer {
} }
#shopItems {} #shopItems {
}
.ui-panel-title {
text-overflow: clip;
}
.shopItem { .shopItem {
position: relative; float: left;
float:left; width: 72px;
width: 64px; height: 72px;
height: 64px; background: burlywood;
background: gold;
border: 1px solid black; border: 1px solid black;
margin: 2px; margin: 2px;
} }
.shopItem:hover { a.shopItem {
background: goldenrod; color: black !important;
}
a.shopItem 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 {
background: darkgoldenrod;
} }
.shopItem a { a.shopItem:active {
display: block; background: red;
width: 100%;
height: 100%;
color: black;
text-decoration: none;
} }
\ No newline at end of file
...@@ -2,13 +2,14 @@ ...@@ -2,13 +2,14 @@
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" <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:products="http://java.sun.com/jsf/composite/cditools/products" xmlns:p="http://primefaces.org/ui" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop" xmlns:p="http://primefaces.org/ui" xmlns:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:c="http://java.sun.com/jsp/jstl/core"> xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:shop="http://java.sun.com/jsf/composite/cditools/shop"
>
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/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="#{userView.initView}" />
<f:event type="preRenderView" listener="#{productShopView.initShopView}" /> <f:event type="preRenderView" listener="#{productShopView.initShopView}" />
</f:metadata> </f:metadata>
...@@ -18,62 +19,8 @@ ...@@ -18,62 +19,8 @@
</ui:define> </ui:define>
<ui:define name="content"> <ui:define name="content">
<h:form id="shoppingcartform"> <shop:shoppingcart />
<h:panelGrid columns="2">
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['shop.accountBalance']}" />
<h:outputText value="#{productShopView.accountBalance}">
<f:convertNumber />
</h:outputText>
<h:outputLabel value="#{i18n['shop.totalPrice']}" />
<h:outputText value="#{productShopView.totalPrice}">
<f:convertNumber />
</h:outputText>
<h:outputLabel value="#{i18n['shop.cash']}" />
<h:inputText value="#{productShopView.cash}">
<f:ajax render="@form" event="valueChange" />
<f:convertNumber />
</h:inputText>
</h:panelGrid>
<h:panelGroup>
<h:outputLabel value="#{i18n['shop.readBarcode']}" />
<h:inputText id="barcode" value="#{productShopView.barcode}" />
<h:commandButton action="#{productShopView.readBarcode}" onclick="blip(); return true;" value="#{i18n['productShopView.readBarcode']}">
<f:ajax render="@form" onevent="barcodeReadEvent" execute="@form" />
</h:commandButton>
</h:panelGroup>
</h:panelGrid>
<h:outputText value="#{i18n['product.shopInstant']}" />
<h:selectBooleanCheckbox value="#{productShopView.payInstant}">
<f:ajax render="@form" execute="@form" />
</h:selectBooleanCheckbox>
<products:shop commitaction="#{productShopView.commitShoppingCart()}" items="#{productShopView.shoppingcart}" commitValue="#{i18n['productshop.commit']}" />
</h:form>
<script>
var blipSnd = new Audio(
"#{request.contextPath}/resources/media/blip.mp3")
$(function() {
$("#shoppingcartform\\:barcode").focus();
});
function blip() {
blipSnd.play();
}
function barcodeReadEvent(data) {
if (data.status == "success") {
$("#shoppingcartform\\:barcode").focus();
}
}
</script>
</ui:define> </ui:define>
......
<!DOCTYPE html <!DOCTYPE html
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:users="http://java.sun.com/jsf/composite/cditools/user" <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:f="http://java.sun.com/jsf/core"> xmlns:h="http://java.sun.com/jsf/html" xmlns:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core"
>
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata> <f:metadata>
......
...@@ -62,16 +62,29 @@ public class SessionHandler { ...@@ -62,16 +62,29 @@ public class SessionHandler {
return ret; return ret;
} }
public String getFullscreen() {
template = "blipview";
return template;
}
public String getAdduserfullscreen() {
template = "adduser";
return template;
}
public String getLayout() { public String getLayout() {
// TODO: layout selection code missing!! // TODO: layout selection code missing!!
// return "stream1"; template = "template1";
return template;
/*
if (template == null) { if (template == null) {
template = eventbean.getPropertyString(LanEventPropertyKey.EVENT_LAYOUT); template = eventbean.getPropertyString(LanEventPropertyKey.EVENT_LAYOUT);
} }
if (template == null) { if (template == null) {
template = "template1"; template = "template1";
} }
return template; return template; */
} }
// public boolean hasPermission(String target, String permission) { // public boolean hasPermission(String target, String permission) {
......
...@@ -119,7 +119,7 @@ placegroupview.toptext = \ ...@@ -119,7 +119,7 @@ placegroupview.toptext = \
poll.edit = edit poll.edit = edit
product.providedRole = Tuote m\u00E4\u00E4ritt\u00E4\u00E4 roolin product.providedRole = Tuote tarjoaa roolin
product.returnProductEdit = Palaa tuotteeseen: product.returnProductEdit = Palaa tuotteeseen:
product.saved = Tuote tallennettu product.saved = Tuote tallennettu
......
...@@ -33,6 +33,11 @@ actionlog.tasklist.header = Tasklist ...@@ -33,6 +33,11 @@ actionlog.tasklist.header = Tasklist
actionlog.time = Time actionlog.time = Time
actionlog.user = User actionlog.user = User
adduser.newuser = Create new user
adduser.update = Update picture
adduser.welcome = Welcome
adduser.welcometext = You can easily add a new user or update your user image for your profile. Simply to start, wanted action to start.
applicationPermission.description = description applicationPermission.description = description
applicationPermission.name = Rightsgroup applicationPermission.name = Rightsgroup
...@@ -119,8 +124,8 @@ checkout.return.successDelayed = Delayed payment successfull. Payment will be co ...@@ -119,8 +124,8 @@ checkout.return.successDelayed = Delayed payment successfull. Payment will be co
checkout.return.successMessage = Payment confirmed. Your products have been paid. checkout.return.successMessage = Payment confirmed. Your products have been paid.
compo.edit = Edit compo compo.edit = Edit compo
compo.saveVotes = Save votes
compo.savesort = Save order compo.savesort = Save order
compo.saveVotes = Save votes
compo.votesSaved = Votes saved compo.votesSaved = Votes saved
compofile.download = Download compofile.download = Download
...@@ -193,18 +198,17 @@ eventorg.save = Save ...@@ -193,18 +198,17 @@ eventorg.save = Save
eventorgView.eventname = Name of event eventorgView.eventname = Name of event
eventorganiser.name = Eventorganiser eventorganiser.name = Eventorganiser
feedback.canFeedback = Feedback feedback.canFeedback = Feedback
feedback.submit = Submit feedback.submit = Submit
feedback.thanks = Thanks feedback.thanks = Thanks
food = Food
food = Food
foodWave.accountevents = Accountevents foodWave.accountevents = Accountevents
foodWave.activeFoodWaves = Active Foodwaves foodWave.activeFoodWaves = Active Foodwaves
foodWave.billLines = Pending Online Payments foodWave.billLines = Pending Online Payments
foodWave.deliveredFoodWaves = Delivered Foodwaves foodWave.deliveredFoodWaves = Delivered Foodwaves
foodWave.description = Description
foodWave.list = Active Foodwaves foodWave.list = Active Foodwaves
foodWave.name = Foodwave foodWave.name = Foodwave
foodWave.orders = Amount of Orders foodWave.orders = Amount of Orders
...@@ -213,17 +217,16 @@ foodWave.show = Show ...@@ -213,17 +217,16 @@ foodWave.show = Show
foodWave.template.name = Template foodWave.template.name = Template
foodWave.template.waves = Foodwaves foodWave.template.waves = Foodwaves
foodWave.templatename = Choose Products foodWave.templatename = Choose Products
foodWave.time = Time
foodWave.totalReserved = Total foodWave.totalReserved = Total
foodWave.unconfirmedOrders = Unconfirmed foodWave.unconfirmedOrders = Unconfirmed
foodWave.template.name = Name
foodadmin.editTemplate = Edit foodadmin.editTemplate = Edit
foodshop.buyAndPay = Buy and Pay foodshop.buyAndPay = Buy and Pay
foodshop.buyFromCounter = Pay at info foodWave.time = Time
foodshop.buyFromInternet = Pay at Internet
foodshop.total = Total
foodshop.total = Total
foodshop.buyFromCounter = Pay at info
foodwave.buyInPrice = Buy In Price foodwave.buyInPrice = Buy In Price
foodwave.foodwaveBuyInPrice = Total buy in price foodwave.foodwaveBuyInPrice = Total buy in price
foodwave.markPaid = Foodwave marked paid foodwave.markPaid = Foodwave marked paid
...@@ -261,6 +264,8 @@ foodwavetemplate.selectproducts = Products ...@@ -261,6 +264,8 @@ foodwavetemplate.selectproducts = Products
foodwavetemplate.startTime = Foodwave time foodwavetemplate.startTime = Foodwave time
foodwavetemplate.waveName = Wave name foodwavetemplate.waveName = Wave name
foodshop.buyFromInternet = Pay at Internet
game.gamepoints = Game points game.gamepoints = Game points
gamepoints = Gamepoints gamepoints = Gamepoints
...@@ -281,6 +286,10 @@ imagefile.file = Imagefile ...@@ -281,6 +286,10 @@ imagefile.file = Imagefile
importuser.file = File importuser.file = File
importuser.template = Template importuser.template = Template
infoview.back = Back
infoview.computerplace = Computer places
infoview.shop = Shop
invite.emailexists = User with that email address already exists in the system. invite.emailexists = User with that email address already exists in the system.
invite.notFound = Invite invalid or already used invite.notFound = Invite invalid or already used
invite.successfull = Invite sent successfully invite.successfull = Invite sent successfully
...@@ -342,8 +351,6 @@ mapView.buyPlaces = Lock selected places ...@@ -342,8 +351,6 @@ mapView.buyPlaces = Lock selected places
mapView.errorWhenReleasingPlace = Error when releasing place mapView.errorWhenReleasingPlace = Error when releasing place
mapView.errorWhenReservingPlace = Error when reserving place! mapView.errorWhenReservingPlace = Error when reserving place!
mapView.errorWhileBuyingPlaces = Error when buying places. Please try again. If error reoccurs please contact organizers. mapView.errorWhileBuyingPlaces = Error when buying places. Please try again. If error reoccurs please contact organizers.
mapView.notEnoughCreditsToReserve = You don't have enough credits to reserve this place.
menu.item = Item menu.item = Item
menu.name = Name menu.name = Name
menu.select = Select menu.select = Select
...@@ -351,6 +358,8 @@ menu.sort = Sort ...@@ -351,6 +358,8 @@ menu.sort = Sort
menuitem.navigation.key = Product flag menuitem.navigation.key = Product flag
mapView.notEnoughCreditsToReserve = You don't have enough credits to reserve this place.
nasty.user = Go away! nasty.user = Go away!
org.hibernate.validator.constraints.Email.message = not a well-formed email address org.hibernate.validator.constraints.Email.message = not a well-formed email address
...@@ -510,9 +519,9 @@ poll.name = Poll name ...@@ -510,9 +519,9 @@ poll.name = Poll name
poll.save = Send answers poll.save = Send answers
product.barcode = Barcode product.barcode = Barcode
product.buyInPrice = Buy in price
product.billed = Billed product.billed = Billed
product.boughtTotal = Products billed product.boughtTotal = Products billed
product.buyInPrice = Buy in price
product.cart.count = To shoppingcart product.cart.count = To shoppingcart
product.cashed = Cashpaid product.cashed = Cashpaid
product.color = Color in UI product.color = Color in UI
...@@ -532,10 +541,10 @@ product.totalPrice = Total ...@@ -532,10 +541,10 @@ product.totalPrice = Total
product.unitName = Unit name product.unitName = Unit name
product.vat = VAT product.vat = VAT
productShopView.readBarcode = Read barcode
products.save = Save products.save = Save
productsShopView.readBarcode = Read
productshop.billCreated = Bill created productshop.billCreated = Bill created
productshop.commit = Buy productshop.commit = Buy
productshop.limits = Available productshop.limits = Available
...@@ -545,16 +554,16 @@ productshop.noItemsInCart = There are no products in shopping cart ...@@ -545,16 +554,16 @@ productshop.noItemsInCart = There are no products in shopping cart
productshop.plusOne = +1 productshop.plusOne = +1
productshop.plusTen = +10 productshop.plusTen = +10
productshop.total = Total productshop.total = Total
reader.assocToCard = Associate to card
reader.automaticProduct = Default product reader.automaticProduct = Default product
reader.automaticProductCount = Amount reader.automaticProductCount = Amount
reader.assocToCard = Associate to card
reader.createNewCard = Create new card reader.createNewCard = Create new card
reader.description = Description reader.description = Description
reader.edit = Edit reader.edit = Edit
reader.save = Save
reader.identification = Identification reader.identification = Identification
reader.name = Reader name reader.name = Reader name
reader.save = Save
reader.select = Select reader reader.select = Select reader
reader.tag = Tag reader.tag = Tag
reader.type = Type reader.type = Type
...@@ -600,10 +609,23 @@ salespoint.noSalesPoints = Amount ...@@ -600,10 +609,23 @@ salespoint.noSalesPoints = Amount
sendPicture.header = S sendPicture.header = S
shop.accountBalance = Account balance shop.accountBalance = Credits
shop.cash = Cash deposit shop.actions = Actions
shop.readBarcode = Read barcode shop.barcode = Barcode
shop.totalPrice = Price of products shop.buyCash = Buy by Cash
shop.buyCredit = Buy Credit
shop.calcsubtotal = Calc Subtotal
shop.cash = Cash
shop.cashBack = Back
shop.cashGiven = Cash given
shop.cashback = Cashback
shop.confirmCreditBuy = Are You sure ?
shop.count = Q
shop.price = price
shop.product = Product
shop.readBarcode = Read
shop.shop = Shop
shop.totalPrice = Total
shop.user = Selling to shop.user = Selling to
sidebar.bill.list = My bills sidebar.bill.list = My bills
...@@ -647,13 +669,13 @@ submenu.auth.login = Login ...@@ -647,13 +669,13 @@ submenu.auth.login = Login
submenu.auth.logoutResponse = Logout successfull submenu.auth.logoutResponse = Logout successfull
submenu.auth.sendResetMail = Password reset submenu.auth.sendResetMail = Password reset
submenu.bill.billSummary = Bill summary submenu.bill.billSummary = Bill summary
submenu.bill.list = My bills
submenu.bill.listAll = All bills
submenu.foodadmin.createTemplate = Create foodwave template submenu.foodadmin.createTemplate = Create foodwave template
submenu.foodadmin.listTemplates = List foodwave templates submenu.foodadmin.listTemplates = List foodwave templates
submenu.foodmanager.listFoodwaves = List active foodwaves submenu.foodmanager.listFoodwaves = List active foodwaves
submenu.foodwave.list = Open foodwaves submenu.foodwave.list = Open foodwaves
submenu.foodwave.listTemplates = Food provides submenu.foodwave.listTemplates = Food provides
submenu.bill.list = My bills
submenu.bill.listAll = All bills
submenu.index = Frontpage submenu.index = Frontpage
submenu.map.create = Create map submenu.map.create = Create map
submenu.map.list = List maps submenu.map.list = List maps
...@@ -674,9 +696,9 @@ submenu.shop.listReaders = List readers ...@@ -674,9 +696,9 @@ submenu.shop.listReaders = List readers
submenu.shop.showReaderEvents = Reader events submenu.shop.showReaderEvents = Reader events
submenu.user.accountEvents = Account events submenu.user.accountEvents = Account events
submenu.user.changePassword = Change password submenu.user.changePassword = Change password
submenu.user.foodwave = Food
submenu.user.create = Create new user submenu.user.create = Create new user
submenu.user.edit = User information submenu.user.edit = User information
submenu.user.foodwave = Food
submenu.user.invite = Invite friends submenu.user.invite = Invite friends
submenu.user.manageuserlinks = Manage users submenu.user.manageuserlinks = Manage users
submenu.user.other = Other submenu.user.other = Other
...@@ -704,7 +726,7 @@ svm.pending.successMessage = Payment pending. You will receive email after payme ...@@ -704,7 +726,7 @@ svm.pending.successMessage = Payment pending. You will receive email after payme
svm.success.errorMessage = Payment could not be verified! svm.success.errorMessage = Payment could not be verified!
svm.success.successMessage = Payment was successfull. You can now your credits in the system. svm.success.successMessage = Payment was successfull. You can now your credits in the system.
template.loggedInAs = Logged in as: template.loggedInAs = Logged in as
topnavi.adminshop = Adminshop topnavi.adminshop = Adminshop
topnavi.billing = Billing topnavi.billing = Billing
...@@ -738,15 +760,16 @@ user.createdmessage = User has been created successfully. You can no ...@@ -738,15 +760,16 @@ user.createdmessage = User has been created successfully. You can no
user.defaultImage = Default picture user.defaultImage = Default picture
user.edit = Edit user.edit = Edit
user.edit.title = My information user.edit.title = My information
user.email = Email
user.firstNames = Firstname
user.food.title = Choose Menu user.food.title = Choose Menu
user.foodwave.products.title = Choose Products user.foodwave.products.title = Choose Products
user.foodwavelist.title = Choose Foodwave user.foodwavelist.title = Choose Foodwave
user.email = Email
user.firstNames = Firstname
user.hasImage = Image user.hasImage = Image
user.image = Image user.image = Image
user.imagelist = Saved images user.imagelist = Saved images
user.imagesubmit = Send image user.imagesubmit = Send image
user.insert = Insert
user.insertToken = Insert token user.insertToken = Insert token
user.invalidLoginCredentials = Invalid user credentials user.invalidLoginCredentials = Invalid user credentials
user.invite = Invite user.invite = Invite
...@@ -794,9 +817,9 @@ userImport.commit = Commit ...@@ -794,9 +817,9 @@ userImport.commit = Commit
userView.image = Image userView.image = Image
usercart.clear = Clear Cart
usercart.addSearchedUsers = Add searched users usercart.addSearchedUsers = Add searched users
usercart.cartsize = Size usercart.cartsize = Size
usercart.clear = Clear Cart
usercart.showCart = Show usercart usercart.showCart = Show usercart
usercart.traverse = Traverse usercart.traverse = Traverse
......
...@@ -33,6 +33,11 @@ actionlog.tasklist.header = Teht\u00E4v\u00E4lista ...@@ -33,6 +33,11 @@ actionlog.tasklist.header = Teht\u00E4v\u00E4lista
actionlog.time = Aika actionlog.time = Aika
actionlog.user = Tekij\u00E4 actionlog.user = Tekij\u00E4
adduser.newuser = Luo uusi k\u00E4ytt\u00E4j\u00E4
adduser.update = P\u00E4ivit\u00E4 k\u00E4vij\u00E4kuva
adduser.welcome = Tervetuloa
adduser.welcometext = Voit helposti ja k\u00E4tev\u00E4sti luoda tai p\u00E4ivitt\u00E4\u00E4 k\u00E4ytt\u00E4j\u00E4profiilisi kuvan t\u00E4ss\u00E4. Valitse toiminto allaolevista valinnoista.
applicationPermission.description = kuvaus applicationPermission.description = kuvaus
applicationPermission.name = Oikeusryhm\u00E4 applicationPermission.name = Oikeusryhm\u00E4
...@@ -117,8 +122,8 @@ checkout.return.successDelayed = Viiv\u00E4stetty maksu onnistunut. Maksu vahvis ...@@ -117,8 +122,8 @@ checkout.return.successDelayed = Viiv\u00E4stetty maksu onnistunut. Maksu vahvis
checkout.return.successMessage = Maksu vahvistettu. Tuotteet on maksettu. Voit siirty\u00E4 eteenp\u00E4in tilauksessasi. checkout.return.successMessage = Maksu vahvistettu. Tuotteet on maksettu. Voit siirty\u00E4 eteenp\u00E4in tilauksessasi.
compo.edit = Muokkaa compoa compo.edit = Muokkaa compoa
compo.saveVotes = Tallenna \u00E4\u00E4net
compo.savesort = Tallenna j\u00E4rjestys compo.savesort = Tallenna j\u00E4rjestys
compo.saveVotes = Tallenna \u00E4\u00E4net
compo.votesSaved = \u00C4\u00E4net tallennettu compo.votesSaved = \u00C4\u00E4net tallennettu
compofile.download = lataa compofile.download = lataa
...@@ -191,18 +196,17 @@ eventorg.save = Tallenna ...@@ -191,18 +196,17 @@ eventorg.save = Tallenna
eventorgView.eventname = Tapahtuman nimi eventorgView.eventname = Tapahtuman nimi
eventorganiser.name = Tapahtumaj\u00E4rjest\u00E4j\u00E4 eventorganiser.name = Tapahtumaj\u00E4rjest\u00E4j\u00E4
feedback.canFeedback = Vituttaako? feedback.canFeedback = Vituttaako?
feedback.submit = L\u00E4het\u00E4 feedback.submit = L\u00E4het\u00E4
feedback.thanks = Kiiiiitooooos! :) feedback.thanks = Kiiiiitooooos! :)
food = Ruoka
food = Ruoka
foodWave.accountevents = Maksetut tilaukset foodWave.accountevents = Maksetut tilaukset
foodWave.activeFoodWaves = Aktiiviset Ruokatilaukset foodWave.activeFoodWaves = Aktiiviset Ruokatilaukset
foodWave.billLines = Maksamattomat Verkkomaksut foodWave.billLines = Maksamattomat Verkkomaksut
foodWave.deliveredFoodWaves = Toimitetut Ruokatilaukset foodWave.deliveredFoodWaves = Toimitetut Ruokatilaukset
foodWave.description = Kuvaus
foodWave.list = Ruokatilaukset foodWave.list = Ruokatilaukset
foodWave.name = Ruokatilaus foodWave.name = Ruokatilaus
foodWave.orders = Tilausten M\u00E4\u00E4r\u00E4 foodWave.orders = Tilausten M\u00E4\u00E4r\u00E4
...@@ -211,17 +215,16 @@ foodWave.show = N\u00E4yt\u00E4 ...@@ -211,17 +215,16 @@ foodWave.show = N\u00E4yt\u00E4
foodWave.template.name = Tilauspohja foodWave.template.name = Tilauspohja
foodWave.template.waves = Ruokatilaus foodWave.template.waves = Ruokatilaus
foodWave.templatename = Valitse tuotteet foodWave.templatename = Valitse tuotteet
foodWave.time = Aika
foodWave.totalReserved = Yhteens\u00E4 foodWave.totalReserved = Yhteens\u00E4
foodWave.unconfirmedOrders = Vahvistamattomia foodWave.unconfirmedOrders = Vahvistamattomia
foodWave.template.name = Nimi
foodadmin.editTemplate = Muokkaa foodadmin.editTemplate = Muokkaa
foodshop.buyAndPay = Varaa ja maksa foodshop.buyAndPay = Varaa ja maksa
foodshop.buyFromCounter = Maksa infossa foodWave.time = Aika
foodshop.buyFromInternet = Maksa Internetiss\u00E4
foodshop.total = Yhteens\u00E4
foodshop.total = Yhteens\u00E4
foodshop.buyFromCounter = Maksa infossa
foodwave.buyInPrice = Sis\u00E4\u00E4nostohinta foodwave.buyInPrice = Sis\u00E4\u00E4nostohinta
foodwave.foodwaveBuyInPrice = Sis\u00E4\u00E4nostohinta foodwave.foodwaveBuyInPrice = Sis\u00E4\u00E4nostohinta
foodwave.markPaid = Merkitty maksetuksi foodwave.markPaid = Merkitty maksetuksi
...@@ -259,6 +262,8 @@ foodwavetemplate.selectproducts = Tuotteet ...@@ -259,6 +262,8 @@ foodwavetemplate.selectproducts = Tuotteet
foodwavetemplate.startTime = Tilausaika foodwavetemplate.startTime = Tilausaika
foodwavetemplate.waveName = Tilauksen nimi foodwavetemplate.waveName = Tilauksen nimi
foodshop.buyFromInternet = Maksa Internetiss\u00E4
game.gamepoints = Insomnia Game pisteet: game.gamepoints = Insomnia Game pisteet:
gamepoints = Pelipisteit\u00E4 gamepoints = Pelipisteit\u00E4
...@@ -288,6 +293,10 @@ importuser.template = Malli ...@@ -288,6 +293,10 @@ importuser.template = Malli
index.title = Etusivu index.title = Etusivu
infoview.back = Takaisin
infoview.computerplace = Tietokonepaikat
infoview.shop = Kauppa
invite.emailexists = J\u00E4rjestelm\u00E4ss\u00E4 on jo k\u00E4ytt\u00E4j\u00E4tunnus samalla s\u00E4hk\u00F6postiosoitteella. invite.emailexists = J\u00E4rjestelm\u00E4ss\u00E4 on jo k\u00E4ytt\u00E4j\u00E4tunnus samalla s\u00E4hk\u00F6postiosoitteella.
invite.notFound = Kutsu virheellinen tai jo k\u00E4ytetty. invite.notFound = Kutsu virheellinen tai jo k\u00E4ytetty.
invite.successfull = Kutsu l\u00E4hetetty invite.successfull = Kutsu l\u00E4hetetty
...@@ -350,14 +359,14 @@ mapView.errorWhenReleasingPlace = Paikkaa vapauttassa tapahtui virhe. ...@@ -350,14 +359,14 @@ mapView.errorWhenReleasingPlace = Paikkaa vapauttassa tapahtui virhe.
mapView.errorWhenReservingPlace = Paikkaa varatessa tapahtui virhe. mapView.errorWhenReservingPlace = Paikkaa varatessa tapahtui virhe.
mapView.errorWhileBuyingPlaces = Virhe paikkojen ostossa. Ole hyv\u00E4 ja yrit\u00E4 uudelleen. Jos virhe toistuu ota yhteytt\u00E4 j\u00E4rjest\u00E4jiin. mapView.errorWhileBuyingPlaces = Virhe paikkojen ostossa. Ole hyv\u00E4 ja yrit\u00E4 uudelleen. Jos virhe toistuu ota yhteytt\u00E4 j\u00E4rjest\u00E4jiin.
mapView.notEnoughCreditsToReserve = Sinulla ei ole riitt\u00E4v\u00E4sti suoritettuja konepaikkamaksuja t\u00E4m\u00E4n paikan varaamiseen. mapView.notEnoughCreditsToReserve = Sinulla ei ole riitt\u00E4v\u00E4sti suoritettuja konepaikkamaksuja t\u00E4m\u00E4n paikan varaamiseen.
menu.name = Nimi
menu.index = Etusivu menu.index = Etusivu
menu.name = Nimi menu.select = Valitse
menu.place.placemap = Paikkakartta menu.place.placemap = Paikkakartta
menu.sort = J\u00E4rjest\u00E4
menu.poll.index = Kyselyt menu.poll.index = Kyselyt
menu.select = Valitse
menu.shop.createBill = Kauppa menu.shop.createBill = Kauppa
menu.sort = J\u00E4rjest\u00E4
menu.user.edit = Omat tiedot menu.user.edit = Omat tiedot
news.abstract = Lyhennelm\u00E4 news.abstract = Lyhennelm\u00E4
...@@ -507,7 +516,6 @@ product.paid = Maksettu ...@@ -507,7 +516,6 @@ product.paid = Maksettu
product.prepaid = Prepaid product.prepaid = Prepaid
product.prepaidInstant = Luodaan kun prepaid maksetaan product.prepaidInstant = Luodaan kun prepaid maksetaan
product.price = Tuotteen hinta product.price = Tuotteen hinta
product.providedRole = Tuote m\u00E4\u00E4ritt\u00E4\u00E4 roolin
product.save = Tallenna product.save = Tallenna
product.shopInstant = Luo k\u00E4teismaksu tuotteille product.shopInstant = Luo k\u00E4teismaksu tuotteille
product.sort = J\u00E4rjestys luku product.sort = J\u00E4rjestys luku
...@@ -519,6 +527,8 @@ productShopView.readBarcode = Lue viivakoodi ...@@ -519,6 +527,8 @@ productShopView.readBarcode = Lue viivakoodi
products.save = Tallenna products.save = Tallenna
productsShopView.readBarcode = Lue
productshop.billCreated = Lasku luotu productshop.billCreated = Lasku luotu
productshop.commit = Osta productshop.commit = Osta
productshop.limits = Vapaana productshop.limits = Vapaana
...@@ -528,16 +538,16 @@ productshop.noItemsInCart = Ostoskorissa ei ole tuotteita ...@@ -528,16 +538,16 @@ productshop.noItemsInCart = Ostoskorissa ei ole tuotteita
productshop.plusOne = +1 productshop.plusOne = +1
productshop.plusTen = +10 productshop.plusTen = +10
productshop.total = Yhteens\u00E4 productshop.total = Yhteens\u00E4
reader.assocToCard = Yhdist\u00E4 korttiin
reader.automaticProduct = Oletustuote reader.automaticProduct = Oletustuote
reader.automaticProductCount = M\u00E4\u00E4r\u00E4 reader.automaticProductCount = M\u00E4\u00E4r\u00E4
reader.assocToCard = Yhdist\u00E4 korttiin
reader.createNewCard = Luo uusi kortti reader.createNewCard = Luo uusi kortti
reader.description = Kuvaus reader.description = Kuvaus
reader.edit = Muokkaa reader.edit = Muokkaa
reader.save = Tallenna
reader.identification = Tunniste reader.identification = Tunniste
reader.name = Lukijan nimi reader.name = Lukijan nimi
reader.save = Tallenna
reader.select = Valitse lukija reader.select = Valitse lukija
reader.tag = Tag reader.tag = Tag
reader.type = Tyyppi reader.type = Tyyppi
...@@ -580,10 +590,22 @@ salespoint.noSalesPoints = M\u00E4\u00E4r\u00E4 ...@@ -580,10 +590,22 @@ salespoint.noSalesPoints = M\u00E4\u00E4r\u00E4
sendPicture.header = L\u00E4het\u00E4 kuva sendPicture.header = L\u00E4het\u00E4 kuva
shop.accountBalance = Tilin saldo shop.accountBalance = Credits
shop.cash = K\u00E4teispano shop.actions = Hallinta
shop.readBarcode = Lue viivakoodi shop.barcode = Viivakoodi
shop.totalPrice = Tuotteiden hinta shop.buyCash = K\u00E4teismaksu
shop.buyCredit = Credit
shop.calcsubtotal = Laske v\u00E4lisumma
shop.cash = K\u00E4teinen
shop.cashGiven = K\u00E4teist\u00E4 saatu
shop.cashback = Takaisin
shop.confirmCreditBuy = Varmastikko ?
shop.count = Lkm
shop.price = Hinta
shop.product = Tuote
shop.readBarcode = Lue
shop.toAccountValue = Tilille
shop.totalPrice = Yhteens\u00E4
shop.user = Myyd\u00E4\u00E4n shop.user = Myyd\u00E4\u00E4n
sidebar.bill.list = Omat laskut sidebar.bill.list = Omat laskut
...@@ -626,12 +648,12 @@ submenu.auth.login = Kirjaudu ...@@ -626,12 +648,12 @@ submenu.auth.login = Kirjaudu
submenu.auth.logoutResponse = Uloskirjautuminen onnistui submenu.auth.logoutResponse = Uloskirjautuminen onnistui
submenu.auth.sendResetMail = Salasanan palautus submenu.auth.sendResetMail = Salasanan palautus
submenu.bill.billSummary = Laskujen yhteenveto submenu.bill.billSummary = Laskujen yhteenveto
submenu.bill.list = N\u00E4yt\u00E4 omat laskut
submenu.bill.listAll = Kaikki laskut
submenu.foodadmin.createTemplate = Luo tilauspohja submenu.foodadmin.createTemplate = Luo tilauspohja
submenu.foodadmin.listTemplates = Muokkaa tilauspohjia submenu.foodadmin.listTemplates = Muokkaa tilauspohjia
submenu.foodmanager.listFoodwaves = Aktiiviset ruokatilaukset submenu.foodmanager.listFoodwaves = Aktiiviset ruokatilaukset
submenu.foodwave.list = Avoimet tilaukset submenu.foodwave.list = Avoimet tilaukset
submenu.bill.list = N\u00E4yt\u00E4 omat laskut
submenu.bill.listAll = Kaikki laskut
submenu.index = Etusivu submenu.index = Etusivu
submenu.map.create = Uusi kartta submenu.map.create = Uusi kartta
submenu.map.list = N\u00E4yt\u00E4 kartat submenu.map.list = N\u00E4yt\u00E4 kartat
...@@ -653,9 +675,9 @@ submenu.shop.showReaderEvents = Lukijan tapahtumat ...@@ -653,9 +675,9 @@ submenu.shop.showReaderEvents = Lukijan tapahtumat
submenu.user.accountEvents = Tilitapahtumat submenu.user.accountEvents = Tilitapahtumat
submenu.user.changePassword = Vaihda salasana submenu.user.changePassword = Vaihda salasana
submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4 submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4
submenu.user.foodwave = Ruoka
submenu.user.createCardTemplate = Luo korttiryhm\u00E4 submenu.user.createCardTemplate = Luo korttiryhm\u00E4
submenu.user.edit = K\u00E4ytt\u00E4j\u00E4n tiedot submenu.user.edit = K\u00E4ytt\u00E4j\u00E4n tiedot
submenu.user.foodwave = Ruoka
submenu.user.invite = Kutsu yst\u00E4vi\u00E4 submenu.user.invite = Kutsu yst\u00E4vi\u00E4
submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t
submenu.user.listCardTemplates = Korttiryhm\u00E4t submenu.user.listCardTemplates = Korttiryhm\u00E4t
...@@ -685,7 +707,7 @@ svm.pending.successMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4het ...@@ -685,7 +707,7 @@ svm.pending.successMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4het
svm.success.errorMessage = Verkkomaksua ei voitu verifioida! Virheest\u00E4 on raportoitu eteenp\u00E4in. svm.success.errorMessage = Verkkomaksua ei voitu verifioida! Virheest\u00E4 on raportoitu eteenp\u00E4in.
svm.success.successMessage = Verkkomaksu onnistui. svm.success.successMessage = Verkkomaksu onnistui.
template.loggedInAs = Kirjautunut tunnuksella: template.loggedInAs = Kirjautunut tunnuksella
topnavi.adminshop = Kauppa topnavi.adminshop = Kauppa
topnavi.billing = Laskutus topnavi.billing = Laskutus
...@@ -719,11 +741,11 @@ user.createdmessage = K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistu ...@@ -719,11 +741,11 @@ user.createdmessage = K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistu
user.defaultImage = Oletukuva user.defaultImage = Oletukuva
user.edit = Muokkaa user.edit = Muokkaa
user.edit.title = Omat tiedot user.edit.title = Omat tiedot
user.email = S\u00E4hk\u00F6posti
user.firstNames = Etunimi
user.food.title = Valitse Menu user.food.title = Valitse Menu
user.foodwave.products.title = Valitse tuotteet user.foodwave.products.title = Valitse tuotteet
user.foodwavelist.title = Valitse Ruokatilaus user.foodwavelist.title = Valitse Ruokatilaus
user.email = S\u00E4hk\u00F6posti
user.firstNames = Etunimi
user.hasImage = Kuva user.hasImage = Kuva
user.imageUploaded = Kuva l\u00E4hetetty. user.imageUploaded = Kuva l\u00E4hetetty.
user.imagelist = Tallennetut kuvat user.imagelist = Tallennetut kuvat
...@@ -773,9 +795,9 @@ userImport.commit = Hyv\u00E4ksy ...@@ -773,9 +795,9 @@ userImport.commit = Hyv\u00E4ksy
userView.image = Kuva userView.image = Kuva
usercart.clear = Tyhjenn\u00E4 k\u00E4ytt\u00E4j\u00E4kori
usercart.addSearchedUsers = Lis\u00E4\u00E4 haetut k\u00E4ytt\u00E4j\u00E4t usercart.addSearchedUsers = Lis\u00E4\u00E4 haetut k\u00E4ytt\u00E4j\u00E4t
usercart.cartsize = Koko usercart.cartsize = Koko
usercart.clear = Tyhjenn\u00E4 k\u00E4ytt\u00E4j\u00E4kori
usercart.showCart = K\u00E4ytt\u00E4j\u00E4kori usercart.showCart = K\u00E4ytt\u00E4j\u00E4kori
usercart.traverse = K\u00E4y l\u00E4pi usercart.traverse = K\u00E4y l\u00E4pi
......
...@@ -84,7 +84,7 @@ public abstract class GenericCDIView implements Serializable { ...@@ -84,7 +84,7 @@ public abstract class GenericCDIView implements Serializable {
navihandler.saveDestination(viewidbuilder.toString()); navihandler.saveDestination(viewidbuilder.toString());
logger.debug("Permission denied. Saving navi {} for later use", viewidbuilder.toString()); logger.debug("Permission denied. Saving navi {} for later use", viewidbuilder.toString());
// navihandler.navigateTo("/permissionDenied"); // navihandler.navigateTo("/permissionDenied");
fcont.getApplication().getNavigationHandler().handleNavigation(fcont, null, "/permissionDenied"); fcont.getApplication().getNavigationHandler().handleNavigation(fcont, null, "/permissionDenied?faces-redirect=true");
} }
return ret; return ret;
} }
......
...@@ -19,6 +19,7 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD ...@@ -19,6 +19,7 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
private SearchQuery searchQuery = new SearchQuery(); private SearchQuery searchQuery = new SearchQuery();
protected Long resultcount = 0L; protected Long resultcount = 0L;
private Long pagecount = 0L; private Long pagecount = 0L;
// protected String sort; // protected String sort;
// protected String search; // protected String search;
private List<T> results; private List<T> results;
...@@ -148,4 +149,12 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD ...@@ -148,4 +149,12 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
this.searchQuery = searchQuery; this.searchQuery = searchQuery;
} }
public Boolean isDirection() {
return searchQuery.isDirection();
}
public void setDirection(Boolean direction) {
searchQuery.setDirection(direction);
}
} }
...@@ -158,7 +158,7 @@ public class PlaceView extends GenericCDIView { ...@@ -158,7 +158,7 @@ public class PlaceView extends GenericCDIView {
public String searchUser() { public String searchUser() {
super.beginConversation(); super.beginConversation();
userlist = new ListDataModel<User>(userbean.getUsers(new SearchQuery(0, 0, null, searchuser)).getResults()); userlist = new ListDataModel<User>(userbean.getUsers(new SearchQuery(0, 0, null, searchuser, false)).getResults());
return null; return null;
} }
......
package fi.insomnia.bortal.web.cdiview.menu;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import org.primefaces.component.menuitem.MenuItem;
import org.primefaces.component.separator.Separator;
import org.primefaces.component.submenu.Submenu;
import org.primefaces.model.DefaultMenuModel;
import org.primefaces.model.MenuModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.MenuBeanLocal;
import fi.insomnia.bortal.model.MenuNavigation;
import fi.insomnia.bortal.utilities.I18n;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@Named
@RequestScoped
public class PrimeMenuView extends GenericCDIView {
private static final long serialVersionUID = -5720164797157054213L;
// private String pagename;
// // @Inject
// // private transient LayoutView layoutview;
//
@EJB
private transient MenuBeanLocal menubean;
// private LinkedList<List<JsfMenuitem>> menus;
// private HashSet<MenuNavigation> navis;
// private Map<String, List<PageContent>> contents = new HashMap<String,
// List<PageContent>>();
// @EJB
// private transient SitePageBeanLocal pagebean;
private DefaultMenuModel menuModel;
private static final Logger logger = LoggerFactory.getLogger(PrimeMenuView.class);
public MenuModel getMenuModel()
{
if (menuModel == null)
{
menuModel = new DefaultMenuModel();
// menubean.findNavigation(layoutview.getPagepath());
List<MenuNavigation> tops = menubean.getTopmenus();
for (MenuNavigation m : tops)
{
if (m.getItem() != null && m.getChildren().isEmpty())
{
MenuItem menuitem = mkMenuitem(m);
if (menuitem != null)
{
menuModel.addMenuItem(menuitem);
}
} else {
Submenu subm = addSubmenu(m);
if (subm != null)
{
menuModel.addSubmenu(subm);
}
}
}
}
return menuModel;
}
private Submenu addSubmenu(MenuNavigation m) {
Submenu ret = null;
if (m.isVisible() && (m.getPermission() == null || super.hasPermission(m.getPermission())))
{
ret = new Submenu();
ret.setLabel(I18n.get(m.getKey()));
for (MenuNavigation child : m.getChildren())
{
if (child.getChildren().isEmpty()) {
if (child.getItem() != null)
{
MenuItem item = mkMenuitem(child);
if (item != null)
{
item.setValue(I18n.get(child.getKey()));
ret.getChildren().add(item);
}
} else if (ret.getChildCount() > 0) {
ret.getChildren().add(new Separator());
}
} else {
Submenu subm = addSubmenu(child);
if (subm != null)
{
subm.setLabel(I18n.get(child.getKey()));
ret.getChildren().add(subm);
}
}
}
if (ret.getChildCount() == 0)
{
ret = null;
}
}
return ret;
}
private MenuItem mkMenuitem(MenuNavigation m) {
MenuItem item = null;
if (m.isVisible() && (m.getPermission() == null || super.hasPermission(m.getPermission())))
{
item = new MenuItem();
String outcome;
if (m.getSitepage() != null)
{
outcome = new StringBuilder("/pages/index?id=").append(m.getSitepage().getId()).toString();
} else {
outcome = m.getItem().getUrl();
}
String key = I18n.get(m.getKey());
item.setValue(key);
item.setOutcome(outcome);
}
return item;
}
}
...@@ -101,16 +101,10 @@ public class ProductShopView extends GenericCDIView { ...@@ -101,16 +101,10 @@ public class ProductShopView extends GenericCDIView {
} }
} }
long logtime;
public String add(Integer count) { public String add(Integer count) {
logtime = Calendar.getInstance().getTimeInMillis();
ProductShopItem item = shoppingcart.getRowData(); ProductShopItem item = shoppingcart.getRowData();
item.setCount(item.getCount().add(BigDecimal.valueOf(count))); item.setCount(item.getCount().add(BigDecimal.valueOf(count)));
logger.debug("product add count {}", Calendar.getInstance().getTimeInMillis() - logtime);
updateCartLimits(item); updateCartLimits(item);
logger.debug("Updated cartLimits count {}", Calendar.getInstance().getTimeInMillis() - logtime);
return null; return null;
} }
...@@ -143,28 +137,23 @@ public class ProductShopView extends GenericCDIView { ...@@ -143,28 +137,23 @@ public class ProductShopView extends GenericCDIView {
if (item != null && !listdata.contains(item)) { if (item != null && !listdata.contains(item)) {
listdata.add(item); listdata.add(item);
} }
logger.debug("update 1 {}", Calendar.getInstance().getTimeInMillis() - logtime);
Map<Integer, BigDecimal> prodCounts = new HashMap<Integer, BigDecimal>(); Map<Integer, BigDecimal> prodCounts = new HashMap<Integer, BigDecimal>();
for (ProductShopItem sc : shoppingcart) { for (ProductShopItem sc : shoppingcart) {
prodCounts.put(sc.getProduct().getId(), sc.getCount()); prodCounts.put(sc.getProduct().getId(), sc.getCount());
} }
logger.debug("update 2 {}", Calendar.getInstance().getTimeInMillis() - logtime);
HashMap<Integer, BigDecimal> limits = productBean.getProductLimit(prodCounts, user); HashMap<Integer, BigDecimal> limits = productBean.getProductLimit(
logger.debug("update 4 {}", Calendar.getInstance().getTimeInMillis() - logtime); prodCounts, user);
// Update the updated cart first // Update the updated cart first
if (item != null) if (item != null) {
{
BigDecimal l = limits.get(item.getProduct().getId()); BigDecimal l = limits.get(item.getProduct().getId());
if (item.updateLimit(l)) if (item.updateLimit(l)) {
{
updateCartLimits(null); updateCartLimits(null);
return; return;
} }
} }
logger.debug("update 5 {}", Calendar.getInstance().getTimeInMillis() - logtime);
for (ProductShopItem n : shoppingcart) { for (ProductShopItem n : shoppingcart) {
BigDecimal l = limits.get(n.getProduct().getId()); BigDecimal l = limits.get(n.getProduct().getId());
...@@ -176,21 +165,56 @@ public class ProductShopView extends GenericCDIView { ...@@ -176,21 +165,56 @@ public class ProductShopView extends GenericCDIView {
} }
public String removeBought() {
ProductShopItem row = boughtItems.getRowData();
row.setCount(row.getCount().subtract(BigDecimal.ONE));
updateCartLimits(row);
return null;
}
// public ListDataModel<ProductShopItem> getProducts() {
// List<ProductShopItem> prods = new ArrayList<ProductShopItem>();
// for (ProductShopItem sc : shoppingcart) {
// if (sc.getCount() != null && sc.getCount().compareTo(BigDecimal.ONE) !=
// -1) {
// prods.add(sc);
// }
// }
// return prods;
//
// }
public void updateAllCartLimits() { public void updateAllCartLimits() {
updateCartLimits(null); updateCartLimits(null);
} }
public BigDecimal getAccountBalance() { public BigDecimal getTransactionTotal()
{
BigDecimal ret = getCartPrice().subtract(getAccountCredits());
if (BigDecimal.ZERO.compareTo(ret) > 0)
{
ret = BigDecimal.ZERO;
}
return ret;
}
public BigDecimal getBalanceAfterTransaction() {
BigDecimal ret = user.getAccountBalance(); BigDecimal ret = user.getAccountBalance();
ret = ret.add(getCash()); ret = ret.add(getCash());
ret = ret.subtract(getTotalPrice()); 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[] { user.getAccountBalance(), getCash(),
getTotalPrice(), ret }); getCartPrice(), ret });
return ret;
}
public BigDecimal getAccountCredits() {
BigDecimal ret = user.getAccountBalance();
return ret; return ret;
} }
public BigDecimal getTotalPrice() { public BigDecimal getCartPrice() {
BigDecimal ret = BigDecimal.ZERO; BigDecimal ret = BigDecimal.ZERO;
for (ProductShopItem cart : shoppingcart) { for (ProductShopItem cart : shoppingcart) {
ret = ret.add(cart.getPrice()); ret = ret.add(cart.getPrice());
...@@ -241,13 +265,15 @@ public class ProductShopView extends GenericCDIView { ...@@ -241,13 +265,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(), user).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, user)
.getUser();
} }
if (retuser != null) { if (retuser != null) {
user = retuser; user = retuser;
...@@ -304,7 +330,7 @@ public class ProductShopView extends GenericCDIView { ...@@ -304,7 +330,7 @@ public class ProductShopView extends GenericCDIView {
public BigDecimal getCash() { public BigDecimal getCash() {
if (payInstant) { if (payInstant) {
cash = getTotalPrice(); cash = getCartPrice();
logger.info("Getting instantcash as {}", cash); logger.info("Getting instantcash as {}", cash);
} }
if (cash == null) { if (cash == null) {
......
...@@ -14,14 +14,17 @@ import org.slf4j.LoggerFactory; ...@@ -14,14 +14,17 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.ProductBeanLocal; import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.beans.ReaderBeanLocal; import fi.insomnia.bortal.beans.ReaderBeanLocal;
import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.ShopPermission; import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.PrintedCard; import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.Reader; import fi.insomnia.bortal.model.Reader;
import fi.insomnia.bortal.model.ReaderEvent; import fi.insomnia.bortal.model.ReaderEvent;
import fi.insomnia.bortal.model.ReaderType; import fi.insomnia.bortal.model.ReaderType;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.utilities.SearchQuery; import fi.insomnia.bortal.utilities.SearchQuery;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
...@@ -78,6 +81,9 @@ public class ReaderView extends GenericCDIView { ...@@ -78,6 +81,9 @@ public class ReaderView extends GenericCDIView {
// card.getPrintedCard()); // card.getPrintedCard());
return null; return null;
} }
public List<Role> getUserRoles(EventUser user) {
return userbean.findUsersRoles(user);
}
public void initUserassocView() { public void initUserassocView() {
if (super.requirePermissions(UserPermission.CREATE_NEW) && event == null) { if (super.requirePermissions(UserPermission.CREATE_NEW) && event == null) {
...@@ -89,7 +95,9 @@ public class ReaderView extends GenericCDIView { ...@@ -89,7 +95,9 @@ public class ReaderView extends GenericCDIView {
super.beginConversation(); super.beginConversation();
} }
} }
public boolean isReaderSelected() {
return this.readerid != null;
}
public String assocToCard() public String assocToCard()
{ {
...@@ -107,7 +115,7 @@ public class ReaderView extends GenericCDIView { ...@@ -107,7 +115,7 @@ public class ReaderView extends GenericCDIView {
if (usersearch == null || usersearch.length() < 2) { if (usersearch == null || usersearch.length() < 2) {
super.addFaceMessage("user.tooShortSearch"); super.addFaceMessage("user.tooShortSearch");
} else { } else {
userlist = UserCardWrapper.initWrapper(userbean.getUsers(new SearchQuery(0, 0, null, usersearch)).getResults(), userbean); userlist = UserCardWrapper.initWrapper(userbean.getUsers(new SearchQuery(0, 0, null, usersearch, false)).getResults(), userbean);
} }
return null; return null;
...@@ -208,6 +216,13 @@ public class ReaderView extends GenericCDIView { ...@@ -208,6 +216,13 @@ public class ReaderView extends GenericCDIView {
this.readerid = readerid; this.readerid = readerid;
} }
public String setReaderToId(Integer readerid) {
this.readerid = readerid;
this.namecontainer.setReaderId(readerid);
reader = readerbean.getReader(readerid);
return "/admin/info/index";
}
public Reader getReader() { public Reader getReader() {
return reader; return reader;
} }
......
...@@ -111,6 +111,7 @@ public class UserView extends GenericCDIView { ...@@ -111,6 +111,7 @@ public class UserView extends GenericCDIView {
} else { } else {
user = getCurrentUser(); user = getCurrentUser();
} }
canSave = getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY);
} }
return user; return user;
} }
......
...@@ -24,6 +24,24 @@ public class ProductShopItem { ...@@ -24,6 +24,24 @@ public class ProductShopItem {
private BigDecimal price; private BigDecimal price;
private BigDecimal limit; private BigDecimal limit;
public BigDecimal getCreditPrice()
{
if (BigDecimal.ZERO.compareTo(price) < 0)
{
return price;
}
return BigDecimal.ZERO;
}
public BigDecimal getDebitPrice()
{
if (BigDecimal.ZERO.compareTo(price) > 0)
{
return price;
}
return BigDecimal.ZERO;
}
public ProductShopItem(Product prod) { public ProductShopItem(Product prod) {
super(); super();
this.product = prod; this.product = prod;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!