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 3950 additions and 2311 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,49 +35,54 @@ import fi.insomnia.bortal.utilities.BarcodeUtils; ...@@ -34,49 +35,54 @@ 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;
* Default constructor. @EJB
*/ private CardTemplateFacade cardTemplateFacade;
public CardPrintBean() { @EJB
// TODO Auto-generated constructor stub private UserFacade userfacade;
}
/**
* Default constructor.
//TODO: Roles? */
public MassPrintResult getUserCardsAsPrintablePdf(List<Integer> userIdList) throws Exception { public CardPrintBean() {
ArrayList<EventUser> listOfEventUsers = new ArrayList<EventUser>(); // TODO Auto-generated constructor stub
}
for(Integer userId : userIdList) {
listOfEventUsers.add(eventUserFacade.find(userId)); // TODO: Roles?
} public MassPrintResult getUserCardsAsPrintablePdf(List<Integer> userIdList) throws Exception {
ArrayList<EventUser> listOfEventUsers = new ArrayList<EventUser>();
for (Integer userId : userIdList) {
listOfEventUsers.add(eventUserFacade.find(userId));
}
return constructPdf(listOfEventUsers);
}
public MassPrintResult getUserCardAsPrintablePdf(Integer userId) throws Exception {
ArrayList<EventUser> listOfEventUsers = new ArrayList<EventUser>();
listOfEventUsers.add(eventUserFacade.find(userId));
return constructPdf(listOfEventUsers); return constructPdf(listOfEventUsers);
} }
public MassPrintResult getUserCardAsPrintablePdf(Integer userId) throws Exception { public void acceptMassPrintResult(MassPrintResult mpr) {
ArrayList<EventUser> listOfEventUsers = new ArrayList<EventUser>(); for (EventUser eu : mpr.getAffectedUsers()) {
PrintedCard printedCard = cardTemplateBean.checkPrintedCard(eu);
listOfEventUsers.add(eventUserFacade.find(userId)); printedCard.setPrintCount(printedCard.getPrintCount() + 1);
System.out.println("Print count " + printedCard.getPrintCount());
return constructPdf(listOfEventUsers); }
}
cardTemplateFacade.flush();
public void acceptMassPrintResult(MassPrintResult mpr) { }
for(EventUser eu : mpr.getAffectedUsers()) {
PrintedCard printedCard = cardTemplateBean.checkPrintedCard(eu); private MassPrintResult constructPdf(List<EventUser> users) throws Exception {
printedCard.setPrintCount(printedCard.getPrintCount()+1);
System.out.println("Print count "+printedCard.getPrintCount());
}
cardTemplateFacade.flush();
}
private MassPrintResult constructPdf(List<EventUser> users) throws Exception {
// double[] pageSize = new double[] { cardBackground.getWidth(), // double[] pageSize = new double[] { cardBackground.getWidth(),
// cardBackground.getHeight() }; // cardBackground.getHeight() };
...@@ -88,94 +94,94 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -88,94 +94,94 @@ public class CardPrintBean implements CardPrintBeanLocal {
double pagex = 155.52; // 54,0 mm double pagex = 155.52; // 54,0 mm
double pagey = 243.84; // 85,5 mm double pagey = 243.84; // 85,5 mm
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();
BufferedImage cardBackground = ImageIO.read(new ByteArrayInputStream( BufferedImage cardBackground = ImageIO.read(new ByteArrayInputStream(
cardTemplate.getImage())); cardTemplate.getImage()));
BufferedImage faceBufferedImage = ImageIO BufferedImage faceBufferedImage = ImageIO
.read(new ByteArrayInputStream(user.getCurrentImage() .read(new ByteArrayInputStream(user.getCurrentImage()
.getImageData())); .getImageData()));
if(faceBufferedImage.getWidth() > 1024 || faceBufferedImage.getHeight() > 1024) { if(faceBufferedImage.getWidth() > 1024 || faceBufferedImage.getHeight() > 1024) {
throw new Exception("Image dimensions too large, please take/upload smaller!"); throw new Exception("Image dimensions too large, please take/upload smaller!");
} }
int originalWidth = faceBufferedImage.getWidth(); int originalWidth = faceBufferedImage.getWidth();
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);
Page page = new Page(pdf, new double[] { pagex, pagey }); Page page = new Page(pdf, new double[] { pagex, pagey });
// Render background image // Render background image
Image templateImage = new Image(pdf, Image templateImage = new Image(pdf,
convertBufferedImageToPng(cardBackground), ImageType.PNG); convertBufferedImageToPng(cardBackground), ImageType.PNG);
templateImage.setPosition(0, 0); templateImage.setPosition(0, 0);
templateImage.scaleBy(0.245); templateImage.scaleBy(0.245);
templateImage.drawOn(page); templateImage.drawOn(page);
// Render face image // Render face image
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
// Big font for nick // Big font for nick
com.pdfjet.Font nickFont = new com.pdfjet.Font(pdf, CoreFont.HELVETICA); com.pdfjet.Font nickFont = new com.pdfjet.Font(pdf, CoreFont.HELVETICA);
nickFont.setSize(16.0); nickFont.setSize(16.0);
// User nick text // User nick text
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
com.pdfjet.Font font = new com.pdfjet.Font(pdf, CoreFont.HELVETICA); com.pdfjet.Font font = new com.pdfjet.Font(pdf, CoreFont.HELVETICA);
font.setSize(10.0); font.setSize(10.0);
// Full name text // Full name text
String wholeName = user.getUser().getFirstnames() + " " String wholeName = user.getUser().getFirstnames() + " "
+ user.getUser().getLastname(); + user.getUser().getLastname();
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
String barcodeString = String.valueOf(user.getUser().getCreated() String barcodeString = String.valueOf(user.getUser().getCreated()
.getTime().getTime()); .getTime().getTime());
...@@ -187,18 +193,19 @@ public class CardPrintBean implements CardPrintBeanLocal { ...@@ -187,18 +193,19 @@ public class CardPrintBean implements CardPrintBeanLocal {
barCodeImage.setPosition(0.0, 243.5); barCodeImage.setPosition(0.0, 243.5);
barCodeImage.scaleBy(0.7); barCodeImage.scaleBy(0.7);
barCodeImage.drawOn(page); barCodeImage.drawOn(page);
mpr.getAffectedUsers().add(user); mpr.getAffectedUsers().add(user);
} }
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;
} }
private ByteArrayInputStream convertBufferedImageToPng(BufferedImage img) private ByteArrayInputStream convertBufferedImageToPng(BufferedImage img)
throws IOException { throws IOException {
ByteArrayOutputStream outStream = new ByteArrayOutputStream(); ByteArrayOutputStream outStream = new ByteArrayOutputStream();
ImageIO.write(img, "png", outStream); ImageIO.write(img, "png", outStream);
......
...@@ -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;
try {
value = getResourceBundle().getString(key);
} catch (MissingResourceException e) {
value = null;
}
if (key == null) { if (key == null) {
value = "########"; value = "########";
} else if (value == null) { } else {
value = "???" + key + "???"; try {
value = getResourceBundle().getString(key);
} catch (MissingResourceException e) {
value = null;
}
if (value == null) {
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;
}
} }
...@@ -9,9 +9,8 @@ ...@@ -9,9 +9,8 @@
</session-config> </session-config>
<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}">
<h:head> <h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><h:outputText value="#{layoutView.getHeader()}" /></title> <title><h:outputText value="#{layoutView.getHeader()}" /></title>
<meta name="description" content="Lippukauppa" /> <meta name="description" content="Lippukauppa" />
<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>
...@@ -22,14 +29,16 @@ ...@@ -22,14 +29,16 @@
<h:body> <h:body>
<div id="page-container"> <div id="page-container">
<div id="logo"> <div id="logo">
<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}" />
...@@ -41,92 +50,110 @@ ...@@ -41,92 +50,110 @@
</div> </div>
<div id="page-header"> <div id="page-header">
<div id="login"> <div id="login">
<h:outputText rendered="#{sessionHandler.loggedIn}" value="#{i18n['template.loggedInAs']} #{sessionHandler.currentUser.nick}" /> <h:outputText rendered="#{sessionHandler.loggedIn}"
<div> value="#{i18n['template.loggedInAs']} #{sessionHandler.currentUser.nick}" />
<tools:loginLogout /> <div>
<tools:loginLogout />
</div>
</div> </div>
</div> </div>
<ui:fragment rendered="#{menuView.getMenu(0).size() > 1}"> <div id="main">
<div id="top-menu">
<ul> <p:menubar model="#{primeMenuView.menuModel}" style="width:80%; float: left;">
<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> </p:menubar>
</ul> <p:menubar style="float:left; width: auto;">
<p:submenu label="#{sessionHandler.currentUser.wholeName}">
<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">
<h:link rendered="#{layoutView.manageContent}"
styleClass="editorlink" value="#{i18n['layout.editTop']}"
outcome="/pages/manage">
<f:param name="pagename" value="#{layoutView.pagepath}:top" />
</h:link>
</div> </div>
</ui:fragment>
</div>
<div id="main"> <div class="container clearfix">
<div id="main-nav"> <ui:fragment rendered="#{menuView.getMenu(2).size() > 1}">
<ul> <div id="right">
<li jsfc="ui:repeat" var="menuitem" value="#{menuView.getMenu(1)}"> <ul>
<h:link outcome="#{menuitem.outcome}" value="#{i18n[menuitem.navigation.key]}" styleClass="#{menuitem.selected?'active':''}" /> <ui:repeat var="menuitem" value="#{menuView.getMenu(2)}">
</li> <h:outputText rendered="#{!empty menuitem.header}"
</ul> value="&lt;/ul>&lt;h1>#{i18n[menuitem.header]}&lt;/h1>&lt;ul>"
</div> escape="false" />
<li><h:link outcome="#{menuitem.outcome}"
<div class="container top"> value="#{i18n[menuitem.navigation.key]}"
<h:link rendered="#{layoutView.manageContent}" styleClass="editorlink" value="#{i18n['layout.editTop']}" outcome="/pages/manage"> styleClass="#{menuitem.selected?'active':''}" /></li>
<f:param name="pagename" value="#{layoutView.pagepath}:top" /> </ui:repeat>
</h:link> </ul>
</div> </div>
</ui:fragment>
<div class="container clearfix">
<div id="left">
<ui:fragment rendered="#{menuView.getMenu(2).size() > 1}"> <ui:insert name="title" />
<div id="right"> <p:messages severity="info" />
<ul> <h:messages />
<ui:repeat var="menuitem" value="#{menuView.getMenu(2)}"> <ui:repeat var="cont1" value="#{menuView.getPagecontent('top')}">
<h:outputText rendered="#{!empty menuitem.header}" value="&lt;/ul>&lt;h1>#{i18n[menuitem.header]}&lt;/h1>&lt;ul>" escape="false" /> <h:outputText value="#{cont1.content}" escape="false" />
<li><h:link outcome="#{menuitem.outcome}" value="#{i18n[menuitem.navigation.key]}" styleClass="#{menuitem.selected?'active':''}" /></li> </ui:repeat>
</ui:repeat> <ui:insert name="content" />
</ul> <ui:repeat var="cont1"
value="#{menuView.getPagecontent('bottom')}">
<h:outputText value="#{cont1.content}" escape="false" />
</ui:repeat>
</div> </div>
</ui:fragment>
<div id="left">
<ui:insert name="title" />
<h:messages globalOnly="true" />
<ui:repeat var="cont1" value="#{menuView.getPagecontent('top')}">
<h:outputText value="#{cont1.content}" escape="false" />
</ui:repeat>
<ui:insert name="content" />
<ui:repeat var="cont1" value="#{menuView.getPagecontent('bottom')}">
<h:outputText value="#{cont1.content}" escape="false" />
</ui:repeat>
</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}"
<f:param name="pagename" value="#{layoutView.pagepath}:bottom" /> styleClass="editorlink" value="#{i18n['layout.editBottom']}"
</h:link> outcome="/pages/manage">
<f:param name="pagename" value="#{layoutView.pagepath}:bottom" />
</h:link>
</div>
</div> </div>
</div> </div>
</div>
<!-- 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>
...@@ -19,4 +17,4 @@ ...@@ -19,4 +17,4 @@
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
</html> </html>
...@@ -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>
<?xml version='1.0' encoding='UTF-8' ?> <?xml version='1.0' encoding='UTF-8' ?>
<!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" <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:composite="http://java.sun.com/jsf/composite" xmlns:ui="http://java.sun.com/jsf/facelets" 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">
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:attribute name="creating" required="false" default="false" /> <composite:attribute name="creating" required="false" default="false" />
<composite:attribute name="admincreate" required="false" />
<composite:attribute name="commitvalue" required="true" /> <composite:attribute name="commitvalue" required="true" />
<composite:attribute name="commitaction" required="true" method-signature="java.lang.String action()" /> <composite:attribute name="commitaction" required="true" method-signature="java.lang.String action()" />
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />
<!-- <h2>
<h:outputText rendered="#{!cc.attrs.creating}" disabled="#{!cc.attrs.creating and !userView.canSave}" id="viewlogin" value="#{userView.selectedUser.login}" />
</h2>
-->
<h:form id="userform" enctype="multipart/form-data">
<h:panelGrid columns="2">
<h:panelGroup>
<ui:fragment rendered="#{not empty userView.user.id}">
<p:overlayPanel id="chartPanel" for="webcamButton" hideEffect="fade">
<p:photoCam widgetVar="pc" listener="#{userView.oncapture}" update="@all" />
<p:commandButton type="button" value="Capture" onclick="pc.capture()" />
</p:overlayPanel>
<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 />
<p:commandButton id="webcamButton" value="#{i18n['userimage.webcam']}" type="button" />
<br />
<br />
<p:fileUpload id="uploadfile" required="TRUE" requiredMessage="Required!" invalidSizeMessage="#{i18n['user.imageTooBig']}" sizeLimit="1024" value="#{userView.image}" mode="simple" />
<p:message for="uploadfile" />
<p:commandButton action="#{userView.sendImage}" value="#{i18n['user.imagesubmit']}" />
</ui:fragment>
<ui:fragment rendered="#{cc.attrs.creating}">
<h:outputLabel value="#{i18n['user.login']}" for="login" />
<br />
<p:inputText size="25" id="login" disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.login}" />
<p:message for="login" />
<br />
</ui:fragment>
<br />
<h:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.password']}" for="password" />
<br />
<p:password validator="#{userValidator.password}" rendered="#{cc.attrs.creating}" id="password" value="#{userView.password}" />
<br />
<p:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.passwordcheck']}" for="passwordcheck" />
<br />
<p:password validator="#{userValidator.password}" rendered="#{cc.attrs.creating}" id="passwordcheck" value="#{userView.passwordcheck}" />
<br />
</h:panelGroup>
<h:panelGroup>
<table>
<tr>
<td colspan="2"><h:outputLabel value="#{i18n['user.nick']}" for="nick" /> <br /> <p:inputText size="45" id="nick" disabled="#{!cc.attrs.creating and !userView.canSave}"
value="#{userView.selectedUser.nick}" /></td>
</tr>
<tr>
<td><h:outputLabel value="#{i18n['user.firstNames']}" for="firstnames" /><br /> <p:inputText size="22" id="firstnames" disabled="#{!cc.attrs.creating and !userView.canSave}"
value="#{userView.selectedUser.firstnames}" /></td>
<td><h:outputLabel value="#{i18n['user.lastName']}" for="lastname" /><br /> <p:inputText size="30" id="lastname" disabled="#{!cc.attrs.creating and !userView.canSave}"
value="#{userView.selectedUser.lastname}" /></td>
</tr>
<tr>
<td><h:outputLabel for="birthday" value="#{i18n['user.birthday']}" /><br /> <p:calendar id="birthday" navigator="true" yearRange="c-80:c-0" locale="fi"
value="#{userView.selectedUser.birthday}" pattern="#{sessionHandler.dateFormat}" timeZone="#{sessionHandler.timezone}" /> <h:message for="birthday" /></td>
<td><h:outputLabel value="#{i18n['user.sex']}" for="sex" /> <br /> <p:selectOneMenu disabled="#{!cc.attrs.creating and !userView.canSave}" id="sex" value="#{userView.selectedUser.gender}">
<f:selectItem id="undefined" itemLabel="#{i18n['user.sex.UNDEFINED']}" itemValue="UNDEFINED" />
<f:selectItem id="male" itemLabel="#{i18n['user.sex.MALE']}" itemValue="MALE" />
<f:selectItem id="female" itemLabel="#{i18n['user.sex.FEMALE']}" itemValue="FEMALE" />
</p:selectOneMenu></td>
</tr>
</table>
<table>
<tr>
<td colspan="2"><p:outputLabel value="#{i18n['user.address']}" for="address" /><br /> <p:inputText size="45" id="address" disabled="#{!cc.attrs.creating and !userView.canSave}"
value="#{userView.selectedUser.address}" /></td>
</tr>
<tr>
<td><p:outputLabel value="#{i18n['user.zipCode']}" for="zip" /><br /> <p:inputText styleClass="ui-input" size="7" id="zip" disabled="#{!cc.attrs.creating and !userView.canSave}"
value="#{userView.selectedUser.zip}" /> <p:message for="zip" /></td>
<td><p:outputLabel value="#{i18n['user.town']}" for="town" /><br /> <p:inputText styleClass="ui-input" size="25" id="town" disabled="#{!cc.attrs.creating and !userView.canSave}"
value="#{userView.selectedUser.town}" /> <p:message for="town" /></td>
</tr>
<tr>
<td colspan="2"><h:outputLabel value="#{i18n['user.email']}" for="email" /> <br /> <p:inputText validator="#{userValidator.validateEmail}" size="45" id="email"
disabled="#{!cc.attrs.creating and !userView.canSave}" value="#{userView.selectedUser.email}" /></td>
</tr>
</table>
<p:commandButton ajax="false" rendered="#{cc.attrs.creating or userView.canSave}" id="commitbtn" action="#{cc.attrs.commitaction}" value="#{cc.attrs.commitvalue}" />
</h:panelGroup>
<h:form id="userform">
<h:panelGrid columns="3">
<h:outputLabel rendered="#{!cc.attrs.creating}" value="#{i18n['user.login']}:" for="viewlogin" />
<h:outputText rendered="#{!cc.attrs.creating}" disabled="#{!cc.attrs.creating and !userView.canSave()}"
id="viewlogin" value="#{userView.selectedUser.login}"
/>
<h:message rendered="#{!cc.attrs.creating}" for="viewlogin" />
<h:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.login']}:" for="login" />
<h:inputText size="45" rendered="#{cc.attrs.creating}" validator="#{userValidator.login}"
disabled="#{!cc.attrs.creating and !userView.canSave()}" id="login" value="#{userView.selectedUser.login}"
/>
<h:message rendered="#{cc.attrs.creating}" for="login" />
<h:outputLabel value="#{i18n['user.nick']}:" for="nick" />
<h:inputText size="45" id="nick" disabled="#{!cc.attrs.creating and !userView.canSave()}" value="#{userView.selectedUser.nick}" />
<h:message for="nick" />
<h:outputLabel value="#{i18n['user.email']}:" for="email" />
<h:inputText validator="#{userValidator.validateEmail}" size="45" id="email" disabled="#{!cc.attrs.creating and !userView.canSave()}"
value="#{userView.selectedUser.email}"
/>
<h:message for="email" />
<h:outputLabel value="#{i18n['user.firstNames']}:" for="firstnames" />
<h:inputText size="45" id="firstnames" disabled="#{!cc.attrs.creating and !userView.canSave()}"
value="#{userView.selectedUser.firstnames}"
/>
<h:message for="firstnames" />
<h:outputLabel value="#{i18n['user.lastName']}:" for="lastname" />
<h:inputText size="45" id="lastname" disabled="#{!cc.attrs.creating and !userView.canSave()}"
value="#{userView.selectedUser.lastname}"
/>
<h:message for="lastname" />
<h:outputLabel value="#{i18n['user.address']}:" for="address" />
<h:inputText size="45" id="address" disabled="#{!cc.attrs.creating and !userView.canSave()}"
value="#{userView.selectedUser.address}"
/>
<h:message for="address" />
<h:outputLabel value="#{i18n['user.zipCode']}:" for="zip" />
<h:inputText size="45" id="zip" disabled="#{!cc.attrs.creating and !userView.canSave()}" value="#{userView.selectedUser.zip}" />
<h:message for="zip" />
<h:outputLabel value="#{i18n['user.town']}:" for="town" />
<h:inputText size="45" id="town" disabled="#{!cc.attrs.creating and !userView.canSave()}" value="#{userView.selectedUser.town}" />
<h:message for="town" />
<!--
<h:outputLabel value="#{i18n['user.defaultImage']}:" for="currentImage" />
<h:selectOneMenu rendered="#{sessionHandler.hasPermission('USER', 'READ')}" id="currentImage" value="#{userView.selectedUser.currentImage}" converter="#{userimageConverter}" >
<f:selectItems var="image" itemLabel="#{image.description}" value="#{userView.selectedUser.userImageList}" />
</h:selectOneMenu>
-->
<h:outputLabel value="#{i18n['user.sex']}:" for="sex" />
<h:selectOneRadio disabled="#{!cc.attrs.creating and !userView.canSave()}" id="sex"
value="#{userView.selectedUser.gender}"
>
<f:selectItem id="undefined" itemLabel="#{i18n['user.sex.UNDEFINED']}" itemValue="UNDEFINED" />
<f:selectItem id="male" itemLabel="#{i18n['user.sex.MALE']}" itemValue="MALE" />
<f:selectItem id="female" itemLabel="#{i18n['user.sex.FEMALE']}" itemValue="FEMALE" />
</h:selectOneRadio>
<h:message for="sex" />
<h:outputLabel for="birthday" value="#{i18n['user.birthday']}:"/>
<p:calendar id="birthday" navigator="true" yearRange="c-80:c-0" locale="fi" value="#{userView.selectedUser.birthday}" pattern="#{sessionHandler.dateFormat}" timeZone="#{sessionHandler.timezone}" />
<h:message for="birthday" />
<h:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.password']}:" for="password" />
<h:inputSecret validator="#{userValidator.password}" rendered="#{cc.attrs.creating}" id="password"
value="#{userView.password}"
/>
<h:message rendered="#{cc.attrs.creating}" for="password" />
<h:outputLabel rendered="#{cc.attrs.creating}" value="#{i18n['user.passwordcheck']}:" for="passwordcheck" />
<h:inputSecret validator="#{userValidator.password}" rendered="#{cc.attrs.creating}" id="passwordcheck"
value="#{userView.passwordcheck}"
/>
<h:message rendered="#{cc.attrs.creating}" for="passwordcheck" />
<h:outputLabel rendered="#{sessionHandler.superadmin}" value="#{i18n['user.superadmin']}:" for="superadmin" />
<h:selectBooleanCheckbox disabled="#{!cc.attrs.creating and !userView.canSave()}"
rendered="#{sessionHandler.superadmin}" id="superadmin" value="#{userView.selectedUser.superadmin}"
/>
<h:message rendered="#{sessionHandler.superadmin}" for="superadmin" />
<h:commandButton rendered="#{cc.attrs.creating or userView.canSave()}" id="commitbtn"
action="#{cc.attrs.commitaction}" value="#{cc.attrs.commitvalue}"
/>
</h:panelGrid> </h:panelGrid>
</h:form> </h:form>
</composite:implementation> </composite:implementation>
</html> </html>
\ No newline at end of file
...@@ -2,23 +2,46 @@ ...@@ -2,23 +2,46 @@
<!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">
<p:dataTable id="user" value="#{userSearchView.results}" var="user">
<h:column> <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" />
<f:param name="page" value="0" /> <f:param name="page" value="0" />
</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 {
}
.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;
} }
.text-center { 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 {
} }
.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;
} }
.shopItem a { a.shopItem div {
display: block; position: absolute;
width: 100%; height: 72px;
height: 100%; width: 72px;
color: black; text-align: center;
text-decoration: none; /* 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;
}
\ 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>
...@@ -17,63 +18,9 @@ ...@@ -17,63 +18,9 @@
<users:usertabs tabId="shop" /> <users:usertabs tabId="shop" />
</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) {
......
actionlog.create.header = Create new actionmessage actionlog.create.header = Create new actionmessage
actionlog.create.message = Message actionlog.create.message = Message
actionlog.create.role = Target role actionlog.create.role = Target role
actionlog.create.submitbutton = Send actionlog.create.submitbutton = Send
actionlog.create.taskradio = Task actionlog.create.taskradio = Task
actionlog.crew = Crew actionlog.crew = Crew
actionlog.message = Event actionlog.message = Event
actionlog.messagelist.description = You can follow and create new action messages in this view actionlog.messagelist.description = You can follow and create new action messages in this view
actionlog.messagelist.header = Messagelist actionlog.messagelist.header = Messagelist
actionlog.state = State actionlog.state = State
actionlog.task = Task actionlog.task = Task
actionlog.tasklist.header = Tasklist actionlog.tasklist.header = Tasklist
actionlog.time = Time actionlog.time = Time
actionlog.user = User actionlog.user = User
bortalApplication.BILL = Creating, and managing bills bortalApplication.BILL = Creating, and managing bills
bortalApplication.COMPO = Managing compos bortalApplication.COMPO = Managing compos
bortalApplication.CONTENT = Product & shop management bortalApplication.CONTENT = Product & shop management
bortalApplication.LAYOUT = Laout management bortalApplication.LAYOUT = Laout management
bortalApplication.MAP = Map management bortalApplication.MAP = Map management
bortalApplication.POLL = Polling stuff bortalApplication.POLL = Polling stuff
bortalApplication.SALESPOINT = Managing salespoint bortalApplication.SALESPOINT = Managing salespoint
bortalApplication.SHOP = Product % shop management bortalApplication.SHOP = Product % shop management
bortalApplication.TERMINAL = Sales and self help terminal roles bortalApplication.TERMINAL = Sales and self help terminal roles
bortalApplication.USER = User management related bortalApplication.USER = User management related
bortalApplication.bill.CREATE_BILL = Create bills for self bortalApplication.bill.CREATE_BILL = Create bills for self
bortalApplication.bill.READ_ALL = "Read all bills" bortalApplication.bill.READ_ALL = "Read all bills"
bortalApplication.bill.VIEW_OWN = View own bills bortalApplication.bill.VIEW_OWN = View own bills
bortalApplication.bill.WRITE_ALL = Modify all bills bortalApplication.bill.WRITE_ALL = Modify all bills
bortalApplication.compo.MANAGE = Manage compos bortalApplication.compo.MANAGE = Manage compos
bortalApplication.compo.SUBMIT_ENTRY = Submit entry bortalApplication.compo.SUBMIT_ENTRY = Submit entry
bortalApplication.compo.VIEW_COMPOS = View compos bortalApplication.compo.VIEW_COMPOS = View compos
bortalApplication.compo.VOTE = Vote bortalApplication.compo.VOTE = Vote
bortalApplication.content.MANAGE_ACTIONLOG = Manage actionlog bortalApplication.content.MANAGE_ACTIONLOG = Manage actionlog
bortalApplication.content.MANAGE_MENU = Manage menus bortalApplication.content.MANAGE_MENU = Manage menus
bortalApplication.content.MANAGE_NEWS = Manage newsgroups bortalApplication.content.MANAGE_NEWS = Manage newsgroups
bortalApplication.content.MANAGE_PAGES = Manage pages bortalApplication.content.MANAGE_PAGES = Manage pages
bortalApplication.map.BUY_PLACES = Reserve and buy places from map bortalApplication.map.BUY_PLACES = Reserve and buy places from map
bortalApplication.map.MANAGE_MAPS = Create and modify maps bortalApplication.map.MANAGE_MAPS = Create and modify maps
bortalApplication.map.MANAGE_OTHERS = Manage other users reservations in map bortalApplication.map.MANAGE_OTHERS = Manage other users reservations in map
bortalApplication.map.VIEW = View maps bortalApplication.map.VIEW = View maps
bortalApplication.poll.ANSWER = Can answer and view availabe polls bortalApplication.poll.ANSWER = Can answer and view availabe polls
bortalApplication.poll.CREATE = Create and manage polls bortalApplication.poll.CREATE = Create and manage polls
bortalApplication.poll.VIEW_RESULTS = View anonymized poll results bortalApplication.poll.VIEW_RESULTS = View anonymized poll results
bortalApplication.salespoint.MODIFY = Modify salespoints bortalApplication.salespoint.MODIFY = Modify salespoints
bortalApplication.salespoint.VIEW = View salespoints bortalApplication.salespoint.VIEW = View salespoints
bortalApplication.shop.LIST_ALL_PRODUCTS = List all products in shop bortalApplication.shop.LIST_ALL_PRODUCTS = List all products in shop
bortalApplication.shop.LIST_USERPRODUCTS = List products for users in shop bortalApplication.shop.LIST_USERPRODUCTS = List products for users in shop
bortalApplication.shop.MANAGE_PRODUCTS = Create and modify products bortalApplication.shop.MANAGE_PRODUCTS = Create and modify products
bortalApplication.shop.SHOP_PRODUCTS = Shop products to self bortalApplication.shop.SHOP_PRODUCTS = Shop products to self
bortalApplication.shop.SHOP_TO_OTHERS = Shop to other users bortalApplication.shop.SHOP_TO_OTHERS = Shop to other users
bortalApplication.terminal.CASHIER = Access cashier terminal functions bortalApplication.terminal.CASHIER = Access cashier terminal functions
bortalApplication.terminal.CUSTOMER = Access client terminal functions bortalApplication.terminal.CUSTOMER = Access client terminal functions
bortalApplication.terminal.SELFHELP = Self help terminal bortalApplication.terminal.SELFHELP = Self help terminal
bortalApplication.user.ANYUSER = All users have this anyways bortalApplication.user.ANYUSER = All users have this anyways
bortalApplication.user.CREATE_NEW = Create new user bortalApplication.user.CREATE_NEW = Create new user
bortalApplication.user.INVITE_USERS = Invite users bortalApplication.user.INVITE_USERS = Invite users
bortalApplication.user.LOGIN = Can login bortalApplication.user.LOGIN = Can login
bortalApplication.user.LOGOUT = Can logout bortalApplication.user.LOGOUT = Can logout
bortalApplication.user.MANAGE_HTTP_SESSION = Manage http sessions bortalApplication.user.MANAGE_HTTP_SESSION = Manage http sessions
bortalApplication.user.MODIFY = Modify users bortalApplication.user.MODIFY = Modify users
bortalApplication.user.MODIFY_ACCOUNTEVENTS = Modify Account events bortalApplication.user.MODIFY_ACCOUNTEVENTS = Modify Account events
bortalApplication.user.READ_ORGROLES = View organization roles bortalApplication.user.READ_ORGROLES = View organization roles
bortalApplication.user.READ_ROLES = View all roles. bortalApplication.user.READ_ROLES = View all roles.
bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events bortalApplication.user.VIEW_ACCOUNTEVENTS = Show other users account events
bortalApplication.user.VIEW_ALL = View all users bortalApplication.user.VIEW_ALL = View all users
bortalApplication.user.VIEW_SELF = Can view self bortalApplication.user.VIEW_SELF = Can view self
bortalApplication.user.WRITE_ORGROLES = Modify organization roles bortalApplication.user.WRITE_ORGROLES = Modify organization roles
bortalApplication.user.WRITE_ROLES = Modify roles bortalApplication.user.WRITE_ROLES = Modify roles
cardTemplate.emptyCardTemplate = ---- cardTemplate.emptyCardTemplate = ----
error.contact = If this happens again, contact Info with the following code: error.contact = If this happens again, contact Info with the following code:
error.error = You have encountered an error. error.error = You have encountered an error.
eventorg.create = Create eventorg.create = Create
global.cancel = Cancel global.cancel = Cancel
global.copyright = Codecrew Ry global.copyright = Codecrew Ry
global.notAuthorizedExecute = You are not authorized to do that!! global.notAuthorizedExecute = You are not authorized to do that!!
global.notauthorized = You don't have enough rights to enter this site. global.notauthorized = You don't have enough rights to enter this site.
global.save = Save global.save = Save
httpsession.creationTime = Created httpsession.creationTime = Created
login.login = Login login.login = Login
login.logout = Logout login.logout = Logout
login.logoutmessage = You have logged out of the system login.logoutmessage = You have logged out of the system
login.password = Password login.password = Password
login.submit = Login login.submit = Login
login.username = Username login.username = Username
loginerror.header = Login failed loginerror.header = Login failed
loginerror.message = Username of password incorrect. loginerror.message = Username of password incorrect.
loginerror.resetpassword = Reset password loginerror.resetpassword = Reset password
#Bill number #Bill number
# Validationmessages # Validationmessages
map.id = # map.id = #
navi.auth.login = frontpage navi.auth.login = frontpage
navi.auth.loginerror = frontpage navi.auth.loginerror = frontpage
navi.auth.logout = frontpage navi.auth.logout = frontpage
pagegroup.auth.login = frontpage pagegroup.auth.login = frontpage
passwordChanged.body = You can now login with the new password. passwordChanged.body = You can now login with the new password.
passwordChanged.header = Password changed successfully. passwordChanged.header = Password changed successfully.
passwordReset.errorChanging = Unexpected error whilst password reset. Contact your administrator. passwordReset.errorChanging = Unexpected error whilst password reset. Contact your administrator.
passwordReset.hashNotFound = Password change token has expired. Please send the query again. passwordReset.hashNotFound = Password change token has expired. Please send the query again.
permissiondenied.alreadyLoggedIn = You don't have enough rights permissiondenied.alreadyLoggedIn = You don't have enough rights
permissiondenied.header = Access denied permissiondenied.header = Access denied
permissiondenied.notLoggedIn = You don't have enough rights to enter this site. permissiondenied.notLoggedIn = You don't have enough rights to enter this site.
placegroupview.toptext = \ 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
productshop.minusOne = -1 productshop.minusOne = -1
productshop.minusTen = -10 productshop.minusTen = -10
productshop.plusOne = +1 productshop.plusOne = +1
productshop.plusTen = +10 productshop.plusTen = +10
resetMail.body = You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that. resetMail.body = You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that.
resetMail.header = Reset lost password resetMail.header = Reset lost password
resetMail.send = Send email resetMail.send = Send email
resetMail.username = Username resetMail.username = Username
resetmailSent.body = Email has been sent containing a link where you can change the password. resetmailSent.body = Email has been sent containing a link where you can change the password.
resetmailSent.header = Email sent resetmailSent.header = Email sent
user.unauthenticated = Kirjautumaton user.unauthenticated = Kirjautumaton
acc_line.eventuser = Customer acc_line.eventuser = Customer
acc_line.nick = Nick acc_line.nick = Nick
acc_line.product = Product acc_line.product = Product
acc_line.quantity = Quantity acc_line.quantity = Quantity
acc_line.time = Transaction Date acc_line.time = Transaction Date
accountEvent.commit = Save accountEvent.commit = Save
accountEvent.delivered = Delivered accountEvent.delivered = Delivered
accountEvent.edit = Edit accountEvent.edit = Edit
accountEvent.eventTime = Time accountEvent.eventTime = Time
accountEvent.productname = Product accountEvent.productname = Product
accountEvent.quantity = Count accountEvent.quantity = Count
accountEvent.seller = Sold by accountEvent.seller = Sold by
accountEvent.total = Total accountEvent.total = Total
accountEvent.unitPrice = Unit price accountEvent.unitPrice = Unit price
actionlog.create.header = Create new actionmessage actionlog.create.header = Create new actionmessage
actionlog.create.message = Message actionlog.create.message = Message
actionlog.create.role = Target role actionlog.create.role = Target role
actionlog.create.submitbutton = Send actionlog.create.submitbutton = Send
actionlog.create.taskradio = Task actionlog.create.taskradio = Task
actionlog.crew = Crew actionlog.crew = Crew
actionlog.message = Event actionlog.message = Event
actionlog.messagelist.description = You can follow and create new action messages in this view actionlog.messagelist.description = You can follow and create new action messages in this view
actionlog.messagelist.header = Messagelist actionlog.messagelist.header = Messagelist
actionlog.messagestate.DONE = Done actionlog.messagestate.DONE = Done
actionlog.messagestate.NEW = New actionlog.messagestate.NEW = New
actionlog.messagestate.PENDING = Pending actionlog.messagestate.PENDING = Pending
actionlog.state = State actionlog.state = State
actionlog.task = Task actionlog.task = Task
actionlog.tasklist.header = Tasklist actionlog.tasklist.header = Tasklist
actionlog.time = Time actionlog.time = Time
actionlog.user = User actionlog.user = User
applicationPermission.description = description adduser.newuser = Create new user
applicationPermission.name = Rightsgroup adduser.update = Update picture
adduser.welcome = Welcome
barcodeReader.readBarcode = Read barcode adduser.welcometext = You can easily add a new user or update your user image for your profile. Simply to start, wanted action to start.
bill.addr1 = Address 1 applicationPermission.description = description
bill.addr2 = Address 2 applicationPermission.name = Rightsgroup
bill.addr3 = Address 3
bill.addr4 = Address 4 barcodeReader.readBarcode = Read barcode
bill.addr5 = Address 5
bill.address = Payers address bill.addr1 = Address 1
bill.billAmount = Bill amount bill.addr2 = Address 2
bill.billIsPaid = Bill is paid bill.addr3 = Address 3
bill.billLines = Products bill.addr4 = Address 4
bill.billNumber = Bill number bill.addr5 = Address 5
bill.billPaidDate = Paid date bill.address = Payers address
bill.deliveryTerms = Delivery terms bill.billAmount = Bill amount
bill.edit = edit bill.billIsPaid = Bill is paid
bill.isPaid = Paid bill.billLines = Products
bill.markPaid = Mark paid bill.billNumber = Bill number
bill.markedPaid = Bill marked paid bill.billPaidDate = Paid date
bill.notes = Notes bill.deliveryTerms = Delivery terms
bill.noticetime = Notice time bill.edit = edit
bill.ourReference = Our reference bill.isPaid = Paid
bill.paidDate = Paid date bill.markPaid = Mark paid
bill.payer = Payer bill.markedPaid = Bill marked paid
bill.paymentTime = Payment time bill.notes = Notes
bill.paymentTime.now = Now bill.noticetime = Notice time
bill.printBill = Print bill bill.ourReference = Our reference
bill.receiverAddress = Receiver address bill.paidDate = Paid date
bill.referenceNumberBase = Reference number base bill.payer = Payer
bill.referencenumber = Reference nr. bill.paymentTime = Payment time
bill.sentDate = Sent date bill.paymentTime.now = Now
bill.show = Show bill.printBill = Print bill
bill.theirReference = Clients reference bill.receiverAddress = Receiver address
bill.totalPrice = Total bill.referenceNumberBase = Reference number base
bill.totalprice = Total bill.referencenumber = Reference nr.
bill.sentDate = Sent date
billLine.eventuser = Customer bill.show = Show
billLine.nick = Nick bill.theirReference = Clients reference
billLine.price = Unit Price bill.totalPrice = Total
billLine.product = Product bill.totalprice = Total
billLine.quantity = Quantity
billLine.time = Order Date billLine.eventuser = Customer
billLine.nick = Nick
billedit.billnotfound = Bill not found. Select again. billLine.price = Unit Price
billLine.product = Product
billine.linePrice = Total billLine.quantity = Quantity
billine.name = Product billLine.time = Order Date
billine.quantity = Quantity
billine.referencedProduct = Referenced product billedit.billnotfound = Bill not found. Select again.
billine.save = Save
billine.unitName = Unit billine.linePrice = Total
billine.unitPrice = Unit price billine.name = Product
billine.vat = VAT billine.quantity = Quantity
billine.referencedProduct = Referenced product
bills.noBills = No bills billine.save = Save
billine.unitName = Unit
card.massprint.title = Print all billine.unitPrice = Unit price
billine.vat = VAT
cardTemplate.create = Create
cardTemplate.edit = Edit bills.noBills = No bills
cardTemplate.id = Id
cardTemplate.imageheader = Current Template card.massprint.title = Print all
cardTemplate.name = Card template
cardTemplate.power = Card power cardTemplate.create = Create
cardTemplate.roles = Associated roles cardTemplate.edit = Edit
cardTemplate.save = Save cardTemplate.id = Id
cardTemplate.sendImage = Upload Image cardTemplate.imageheader = Current Template
cardTemplate.name = Card template
cart.item = Item cardTemplate.power = Card power
cart.item_quantity = Quantity cardTemplate.roles = Associated roles
cart.item_total = Total cardTemplate.save = Save
cart.item_unitprice = Price cardTemplate.sendImage = Upload Image
cart.total = Total
cart.item = Item
checkout.cancel.errorMessage = Error confirming the cancel\u2026 Please report this to code@codecrew.fi cart.item_quantity = Quantity
checkout.cancel.successMessage = You can retry payment at your own bills. cart.item_total = Total
checkout.reject.errorMessage = Error while processing rejected payment. Please report this error to code@codecrew.fi cart.item_unitprice = Price
checkout.reject.successMessage = Payment rejected. You can retry payment from your own bills. cart.total = Total
checkout.return.errorDelayed = Error confirming delayed payment. Please contact code@codecrew.fi
checkout.return.errorMessage = Error confirming the successfull return message. Please report this error to code@codecrew.fi checkout.cancel.errorMessage = Error confirming the cancel\u2026 Please report this to code@codecrew.fi
checkout.return.successDelayed = Delayed payment successfull. Payment will be confirmed at a later time, usually within a hour. checkout.cancel.successMessage = You can retry payment at your own bills.
checkout.return.successMessage = Payment confirmed. Your products have been paid. checkout.reject.errorMessage = Error while processing rejected payment. Please report this error to code@codecrew.fi
checkout.reject.successMessage = Payment rejected. You can retry payment from your own bills.
compo.edit = Edit compo checkout.return.errorDelayed = Error confirming delayed payment. Please contact code@codecrew.fi
compo.saveVotes = Save votes checkout.return.errorMessage = Error confirming the successfull return message. Please report this error to code@codecrew.fi
compo.savesort = Save order checkout.return.successDelayed = Delayed payment successfull. Payment will be confirmed at a later time, usually within a hour.
compo.votesSaved = Votes saved checkout.return.successMessage = Payment confirmed. Your products have been paid.
compofile.download = Download compo.edit = Edit compo
compofile.download.header = Download file compo.savesort = Save order
compofile.upload = Upload file compo.saveVotes = Save votes
compo.votesSaved = Votes saved
discount.active = Active
discount.amountMax = Max amount compofile.download = Download
discount.amountMin = Min amount compofile.download.header = Download file
discount.code = Discount code compofile.upload = Upload file
discount.create = Create new
discount.details = Details discount.active = Active
discount.edit = Edit discount.amountMax = Max amount
discount.maxNum = Max nr of discounts discount.amountMin = Min amount
discount.perUser = Discounts per user discount.code = Discount code
discount.percentage = Discount percent discount.create = Create new
discount.products = Products discount.details = Details
discount.role = Role discount discount.edit = Edit
discount.save = Save discount.maxNum = Max nr of discounts
discount.shortdesc = Description discount.perUser = Discounts per user
discount.validFrom = Valid from discount.percentage = Discount percent
discount.validTo = Valid to discount.products = Products
discount.role = Role discount
editplace.header = Edit place discount.save = Save
discount.shortdesc = Description
editplacegroup.header = Placegroup information discount.validFrom = Valid from
discount.validTo = Valid to
entry.edit = Edit entry
editplace.header = Edit place
error.contact = If this happens again, contact Info with the following code:
error.error = You have encountered an error. editplacegroup.header = Placegroup information
event.defaultRole = Default user role entry.edit = Edit entry
event.edit = Edit
event.endTime = End time error.contact = If this happens again, contact Info with the following code:
event.name = Event name error.error = You have encountered an error.
event.nextBillNumber = Initial bill number
event.referenceNumberBase = Reference number base event.defaultRole = Default user role
event.save = Save event.edit = Edit
event.startTime = Start time event.endTime = End time
event.name = Event name
eventdomain.domainname = Domain event.nextBillNumber = Initial bill number
eventdomain.remove = Remove event.referenceNumberBase = Reference number base
event.save = Save
eventmap.active = Active event.startTime = Start time
eventmap.buyable.like = Place name match
eventmap.buyable.lock = Lock places eventdomain.domainname = Domain
eventmap.buyable.release = Release places eventdomain.remove = Remove
eventmap.name = Map name
eventmap.notes = Notes eventmap.active = Active
eventmap.save = Save eventmap.buyable.like = Place name match
eventmap.buyable.lock = Lock places
eventorg.bankName1 = Bank name 2 eventmap.buyable.release = Release places
eventorg.bankName2 = Bank name 2 eventmap.name = Map name
eventorg.bankNumber1 = Bank account nr. 1 eventmap.notes = Notes
eventorg.bankNumber2 = Bank account nr. 2 eventmap.save = Save
eventorg.billAddress1 = Billing address 1
eventorg.billAddress2 = Billing address 2 eventorg.bankName1 = Bank name 2
eventorg.billAddress3 = Billing address 3 eventorg.bankName2 = Bank name 2
eventorg.billAddress4 = Billing address 4 eventorg.bankNumber1 = Bank account nr. 1
eventorg.bundleCountry = Country bundle eventorg.bankNumber2 = Bank account nr. 2
eventorg.create = Create eventorg.billAddress1 = Billing address 1
eventorg.createEvent = Create event eventorg.billAddress2 = Billing address 2
eventorg.createevent = Create new event eventorg.billAddress3 = Billing address 3
eventorg.edit = Edit eventorg.billAddress4 = Billing address 4
eventorg.events = Event of the organisation eventorg.bundleCountry = Country bundle
eventorg.organisation = Organisation name eventorg.create = Create
eventorg.save = Save eventorg.createEvent = Create event
eventorg.createevent = Create new event
eventorgView.eventname = Name of event eventorg.edit = Edit
eventorg.events = Event of the organisation
eventorganiser.name = Eventorganiser eventorg.organisation = Organisation name
eventorg.save = Save
feedback.canFeedback = Feedback
feedback.submit = Submit eventorgView.eventname = Name of event
feedback.thanks = Thanks
eventorganiser.name = Eventorganiser
food = Food feedback.canFeedback = Feedback
feedback.submit = Submit
foodWave.accountevents = Accountevents feedback.thanks = Thanks
foodWave.activeFoodWaves = Active Foodwaves
foodWave.billLines = Pending Online Payments
foodWave.deliveredFoodWaves = Delivered Foodwaves food = Food
foodWave.description = Description foodWave.accountevents = Accountevents
foodWave.list = Active Foodwaves foodWave.activeFoodWaves = Active Foodwaves
foodWave.name = Foodwave foodWave.billLines = Pending Online Payments
foodWave.orders = Amount of Orders foodWave.deliveredFoodWaves = Delivered Foodwaves
foodWave.paid = Paid
foodWave.show = Show foodWave.list = Active Foodwaves
foodWave.template.name = Template foodWave.name = Foodwave
foodWave.template.waves = Foodwaves foodWave.orders = Amount of Orders
foodWave.templatename = Choose Products foodWave.paid = Paid
foodWave.time = Time foodWave.show = Show
foodWave.totalReserved = Total foodWave.template.name = Template
foodWave.unconfirmedOrders = Unconfirmed foodWave.template.waves = Foodwaves
foodWave.templatename = Choose Products
foodadmin.editTemplate = Edit foodWave.totalReserved = Total
foodWave.unconfirmedOrders = Unconfirmed
foodshop.buyAndPay = Buy and Pay foodWave.template.name = Name
foodshop.buyFromCounter = Pay at info foodadmin.editTemplate = Edit
foodshop.buyFromInternet = Pay at Internet
foodshop.total = Total foodshop.buyAndPay = Buy and Pay
foodWave.time = Time
foodwave.buyInPrice = Buy In Price
foodwave.foodwaveBuyInPrice = Total buy in price foodshop.total = Total
foodwave.markPaid = Foodwave marked paid foodshop.buyFromCounter = Pay at info
foodwave.orders = Foodwave Orders foodwave.buyInPrice = Buy In Price
foodwave.price = Foodwave price foodwave.foodwaveBuyInPrice = Total buy in price
foodwave.summaryView = Foodwave Summary foodwave.markPaid = Foodwave marked paid
foodwave.template.basicinfo = Template Information foodwave.orders = Foodwave Orders
foodwave.template.description = Description foodwave.price = Foodwave price
foodwave.template.edit.title = Foodwave Template Editor foodwave.summaryView = Foodwave Summary
foodwave.template.list.title = Foodwave Templates foodwave.template.basicinfo = Template Information
foodwave.template.name = Name foodwave.template.description = Description
foodwave.template.selectproducts = Products foodwave.template.edit.title = Foodwave Template Editor
foodwave.totalCount = Amount foodwave.template.list.title = Foodwave Templates
foodwave.totalPrice = Customer Price foodwave.template.name = Name
foodwave.template.selectproducts = Products
foodwaveTemplate.name = Name foodwave.totalCount = Amount
foodwave.totalPrice = Customer Price
foodwavetemplate.actions = Actions
foodwavetemplate.addproduct = Add foodwaveTemplate.name = Name
foodwavetemplate.basicinfo = Template
foodwavetemplate.createFoodwave = Create Foodwave foodwavetemplate.actions = Actions
foodwavetemplate.createwave = Create foodwave foodwavetemplate.addproduct = Add
foodwavetemplate.description = Description foodwavetemplate.basicinfo = Template
foodwavetemplate.edit = Edit foodwave template foodwavetemplate.createFoodwave = Create Foodwave
foodwavetemplate.editRow = Edit foodwavetemplate.createwave = Create foodwave
foodwavetemplate.maxfoods = Maximum orders foodwavetemplate.description = Description
foodwavetemplate.name = Name foodwavetemplate.edit = Edit foodwave template
foodwavetemplate.price = Price foodwavetemplate.editRow = Edit
foodwavetemplate.productdescription = Description foodwavetemplate.maxfoods = Maximum orders
foodwavetemplate.productname = Name foodwavetemplate.name = Name
foodwavetemplate.removeFromList = Remove foodwavetemplate.price = Price
foodwavetemplate.save = Ok foodwavetemplate.productdescription = Description
foodwavetemplate.savetemplate = Submit foodwavetemplate.productname = Name
foodwavetemplate.selectproducts = Products foodwavetemplate.removeFromList = Remove
foodwavetemplate.startTime = Foodwave time foodwavetemplate.save = Ok
foodwavetemplate.waveName = Wave name foodwavetemplate.savetemplate = Submit
foodwavetemplate.selectproducts = Products
game.gamepoints = Game points foodwavetemplate.startTime = Foodwave time
foodwavetemplate.waveName = Wave name
gamepoints = Gamepoints
foodshop.buyFromInternet = Pay at Internet
global.cancel = Cancel
global.copyright = Codecrew Ry game.gamepoints = Game points
global.eventname = Event name
global.notAuthorizedExecute = You are not authorized to do that!! gamepoints = Gamepoints
global.notauthorized = You don't have enough rights to enter this site.
global.save = Save global.cancel = Cancel
global.copyright = Codecrew Ry
httpsession.creationTime = Created global.eventname = Event name
httpsession.invalidate = Invalidate global.notAuthorizedExecute = You are not authorized to do that!!
global.notauthorized = You don't have enough rights to enter this site.
imagefile.description = Description global.save = Save
imagefile.file = Imagefile
httpsession.creationTime = Created
importuser.file = File httpsession.invalidate = Invalidate
importuser.template = Template
imagefile.description = Description
invite.emailexists = User with that email address already exists in the system. imagefile.file = Imagefile
invite.notFound = Invite invalid or already used
invite.successfull = Invite sent successfully importuser.file = File
invite.userCreateSuccessfull = User successfully created. You can now login. importuser.template = Template
javax.validation.constraints.AssertFalse.message = must be false infoview.back = Back
javax.validation.constraints.AssertTrue.message = must be true infoview.computerplace = Computer places
javax.validation.constraints.DecimalMax.message = must be less than or equal to {value} infoview.shop = Shop
javax.validation.constraints.DecimalMin.message = must be greater than or equal to {value}
javax.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected) invite.emailexists = User with that email address already exists in the system.
javax.validation.constraints.Future.message = must be in the future invite.notFound = Invite invalid or already used
javax.validation.constraints.Max.message = must be less than or equal to {value} invite.successfull = Invite sent successfully
javax.validation.constraints.Min.message = must be greater than or equal to {value} invite.userCreateSuccessfull = User successfully created. You can now login.
javax.validation.constraints.NotNull.message = may not be null
javax.validation.constraints.Null.message = must be null javax.validation.constraints.AssertFalse.message = must be false
javax.validation.constraints.Past.message = must be in the past javax.validation.constraints.AssertTrue.message = must be true
javax.validation.constraints.Pattern.message = must match "{regexp}" javax.validation.constraints.DecimalMax.message = must be less than or equal to {value}
javax.validation.constraints.Size.message = size must be between {min} and {max} javax.validation.constraints.DecimalMin.message = must be greater than or equal to {value}
javax.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)
layout.editBottom = Edit bottom content javax.validation.constraints.Future.message = must be in the future
layout.editContent = Edit center javax.validation.constraints.Max.message = must be less than or equal to {value}
layout.editTop = Edit topcontent javax.validation.constraints.Min.message = must be greater than or equal to {value}
javax.validation.constraints.NotNull.message = may not be null
login.login = Login javax.validation.constraints.Null.message = must be null
login.logout = Logout javax.validation.constraints.Past.message = must be in the past
login.logoutmessage = You have logged out of the system javax.validation.constraints.Pattern.message = must match "{regexp}"
login.password = Password javax.validation.constraints.Size.message = size must be between {min} and {max}
login.submit = Login
login.username = Username layout.editBottom = Edit bottom content
layout.editContent = Edit center
loginerror.header = Login failed layout.editTop = Edit topcontent
loginerror.message = Username of password incorrect.
loginerror.resetpassword = Reset password login.login = Login
login.logout = Logout
map.edit = Edit login.logoutmessage = You have logged out of the system
map.generate = Generate places login.password = Password
map.height = Place height (px) login.submit = Login
map.id = # login.username = Username
map.name = Name
map.namebase = Semicolon separated table prefixes loginerror.header = Login failed
map.oneRowTable = One row tables loginerror.message = Username of password incorrect.
map.placesInRow = Places in row loginerror.resetpassword = Reset password
map.product = Place product
map.startX = Place start X-coordinate map.edit = Edit
map.startY = Place start Y-coordinate\n map.generate = Generate places
map.submitMap = Send map image map.height = Place height (px)
map.tableCount = Place count map.id = #
map.tableXdiff = Table X difference map.name = Name
map.tableYdiff = Table Y difference map.namebase = Semicolon separated table prefixes
map.tablesHorizontal = Generate horizontal tables map.oneRowTable = One row tables
map.width = Place width (px) map.placesInRow = Places in row
map.product = Place product
mapEdit.removePlaces = Remove ALL places map.startX = Place start X-coordinate
map.startY = Place start Y-coordinate\n
mapManage.lockedPlaces = Locked {0} places. map.submitMap = Send map image
mapManage.releasedPlaces = Released {0} places map.tableCount = Place count
map.tableXdiff = Table X difference
mapView.buyPlaces = Lock selected places map.tableYdiff = Table Y difference
mapView.errorWhenReleasingPlace = Error when releasing place map.tablesHorizontal = Generate horizontal tables
mapView.errorWhenReservingPlace = Error when reserving place! map.width = Place width (px)
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. mapEdit.removePlaces = Remove ALL places
menu.item = Item mapManage.lockedPlaces = Locked {0} places.
menu.name = Name mapManage.releasedPlaces = Released {0} places
menu.select = Select
menu.sort = Sort mapView.buyPlaces = Lock selected places
mapView.errorWhenReleasingPlace = Error when releasing place
menuitem.navigation.key = Product flag mapView.errorWhenReservingPlace = Error when reserving place!
mapView.errorWhileBuyingPlaces = Error when buying places. Please try again. If error reoccurs please contact organizers.
nasty.user = Go away! menu.item = Item
menu.name = Name
org.hibernate.validator.constraints.Email.message = not a well-formed email address menu.select = Select
org.hibernate.validator.constraints.Length.message = length must be between {min} and {max} menu.sort = Sort
org.hibernate.validator.constraints.NotEmpty.message = may not be empty
org.hibernate.validator.constraints.Range.message = must be between {min} and {max} menuitem.navigation.key = Product flag
orgrole.create = Create mapView.notEnoughCreditsToReserve = You don't have enough credits to reserve this place.
orgrole.name = Name
orgrole.parents = Parent nasty.user = Go away!
page.account.edit.header = Edit account events org.hibernate.validator.constraints.Email.message = not a well-formed email address
page.account.list.header = Account events org.hibernate.validator.constraints.Length.message = length must be between {min} and {max}
page.admin.sendimage.header = Send image org.hibernate.validator.constraints.NotEmpty.message = may not be empty
page.auth.login.header = Login error org.hibernate.validator.constraints.Range.message = must be between {min} and {max}
page.auth.login.loginerror.header = Kirjautumisvirhe
page.auth.login.loginerror.pagegroup = frontpage orgrole.create = Create
page.auth.login.logout.header = Uloskirjautuminen orgrole.name = Name
page.auth.login.logout.pagegroup = frontpage orgrole.parents = Parent
page.auth.login.pagegroup = frontpage
page.auth.login.title = Login error page.account.edit.header = Edit account events
page.auth.loginerror.header = Login failed page.account.list.header = Account events
page.auth.loginerror.pagegroup = frontpage page.admin.sendimage.header = Send image
page.auth.logout.pagegroup = frontpage page.auth.login.header = Login error
page.auth.notauthorized.pagegroup = frontpage page.auth.login.loginerror.header = Kirjautumisvirhe
page.auth.resetPassword.header = Reset password page.auth.login.loginerror.pagegroup = frontpage
page.bill.billSummary.header = Summary of bills page.auth.login.logout.header = Uloskirjautuminen
page.bill.edit.header = Edit bill page.auth.login.logout.pagegroup = frontpage
page.bill.listAll.header = Bills page.auth.login.pagegroup = frontpage
page.bill.placemap.header = Place map page.auth.login.title = Login error
page.bill.show.header = Bill info page.auth.loginerror.header = Login failed
page.checkout.cancel.header = Payment cancelled! page.auth.loginerror.pagegroup = frontpage
page.checkout.delayed.header = Delayed payment page.auth.logout.pagegroup = frontpage
page.checkout.reject.header = Payment rejected! page.auth.notauthorized.pagegroup = frontpage
page.checkout.return.header = Payment confirmed page.auth.resetPassword.header = Reset password
page.game.list.header = Insomnia Game page.bill.billSummary.header = Summary of bills
page.game.start.header = Insomnia Game page.bill.edit.header = Edit bill
page.index.header = Frontpage page.bill.listAll.header = Bills
page.index.pagegroup = frontpage page.bill.placemap.header = Place map
page.permissionDenied.header = Access denied page.bill.show.header = Bill info
page.place.edit.header = Edit place page.checkout.cancel.header = Payment cancelled!
page.place.insertToken.header = Insert place token page.checkout.delayed.header = Delayed payment
page.place.mygroups.header = My places page.checkout.reject.header = Payment rejected!
page.place.placemap.header = Reserve place page.checkout.return.header = Payment confirmed
page.poll.answer.header = Poll page.game.list.header = Insomnia Game
page.poll.answered.header = Thank you for your answer page.game.start.header = Insomnia Game
page.poll.start.header = Poll page.index.header = Frontpage
page.product.create.pagegroup = admin page.index.pagegroup = frontpage
page.product.createBill.header = Buy products page.permissionDenied.header = Access denied
page.product.createBill.pagegroup = shop page.place.edit.header = Edit place
page.product.edit.pagegroup = admin page.place.insertToken.header = Insert place token
page.product.list.pagegroup = admin page.place.mygroups.header = My places
page.product.validateBillProducts.header = Bill created page.place.placemap.header = Reserve place
page.role.create.pagegroup = admin page.poll.answer.header = Poll
page.role.edit.pagegroup = admin page.poll.answered.header = Thank you for your answer
page.role.list.pagegroup = admin page.poll.start.header = Poll
page.shop.readerevents.header = RFID shop page.product.create.pagegroup = admin
page.svm.failure.header = Payment error page.product.createBill.header = Buy products
page.svm.pending.header = Payment pending page.product.createBill.pagegroup = shop
page.svm.success.header = Payment successfull page.product.edit.pagegroup = admin
page.tests.placemap.pagegroup = shop page.product.list.pagegroup = admin
page.user.create.header = New user page.product.validateBillProducts.header = Bill created
page.user.create.pagegroup = user page.role.create.pagegroup = admin
page.user.edit.header = Edit user page.role.edit.pagegroup = admin
page.user.edit.pagegroup = user page.role.list.pagegroup = admin
page.user.editself.header = My preferences page.shop.readerevents.header = RFID shop
page.user.editself.pagegroup = user page.svm.failure.header = Payment error
page.user.list.header = Users page.svm.pending.header = Payment pending
page.user.list.pagegroup = user page.svm.success.header = Payment successfull
page.user.mygroups.header = My places page.tests.placemap.pagegroup = shop
page.viewexpired = frontpage page.user.create.header = New user
page.user.create.pagegroup = user
pagination.firstpage = First page.user.edit.header = Edit user
pagination.lastpage = Last page.user.edit.pagegroup = user
pagination.nextpage = Next page.user.editself.header = My preferences
pagination.pages = Pages page.user.editself.pagegroup = user
pagination.previouspage = Previous page.user.list.header = Users
pagination.results = Results page.user.list.pagegroup = user
page.user.mygroups.header = My places
passwordChanged.body = You can now login with the new password. page.viewexpired = frontpage
passwordChanged.header = Password changed successfully.
pagination.firstpage = First
passwordReset.errorChanging = Unexpected error whilst password reset. Contact your administrator. pagination.lastpage = Last
passwordReset.hashNotFound = Password change token has expired. Please send the query again. pagination.nextpage = Next
pagination.pages = Pages
passwordreset.mailBody = You can change your password in address: {0}\n\nIf you have not requested password reset, ignore this message.\n\nStream intranet\nwww.streamparty.org\ninfo@streamparty.org pagination.previouspage = Previous
passwordreset.mailSubject = [STREAM] Password reset pagination.results = Results
passwordreset.usernotfound = Username not found. Please note that username is case sensitive.
passwordChanged.body = You can now login with the new password.
permissiondenied.alreadyLoggedIn = You don't have enough rights passwordChanged.header = Password changed successfully.
permissiondenied.header = Access denied
permissiondenied.notLoggedIn = You don't have enough rights to enter this site. passwordReset.errorChanging = Unexpected error whilst password reset. Contact your administrator.
passwordReset.hashNotFound = Password change token has expired. Please send the query again.
place.buyable = Buyable
place.code = Placecode passwordreset.mailBody = You can change your password in address: {0}\n\nIf you have not requested password reset, ignore this message.\n\nStream intranet\nwww.streamparty.org\ninfo@streamparty.org
place.commit = Save passwordreset.mailSubject = [STREAM] Password reset
place.description = Description passwordreset.usernotfound = Username not found. Please note that username is case sensitive.
place.details = Details
place.edit = Edit permissiondenied.alreadyLoggedIn = You don't have enough rights
place.height = Height permissiondenied.header = Access denied
place.id = ID permissiondenied.notLoggedIn = You don't have enough rights to enter this site.
place.mapX = X
place.mapY = Y place.buyable = Buyable
place.membership = Associated user place.code = Placecode
place.name = Name place.commit = Save
place.product = Product place.description = Description
place.releasetime = Releasetime place.details = Details
place.width = Width place.edit = Edit
place.height = Height
placeSelect.legend.blue = My selected place place.id = ID
placeSelect.legend.green = My reserved place place.mapX = X
placeSelect.legend.grey = Released if needed place.mapY = Y
placeSelect.legend.red = Reserved place place.membership = Associated user
placeSelect.legend.white = Empty place place.name = Name
placeSelect.placeName = Place place.product = Product
placeSelect.placePrice = Price place.releasetime = Releasetime
placeSelect.placeProductName = Place type place.width = Width
placeSelect.placesleft = Places left
placeSelect.reservationPrice = Reservation price placeSelect.legend.blue = My selected place
placeSelect.reservedPlaces = Reserved places placeSelect.legend.green = My reserved place
placeSelect.totalPlaces = Places in total placeSelect.legend.grey = Released if needed
placeSelect.legend.red = Reserved place
placegroup.created = Created placeSelect.legend.white = Empty place
placegroup.creator = Reserver placeSelect.placeName = Place
placegroup.details = Details placeSelect.placePrice = Price
placegroup.edit = Show placeSelect.placeProductName = Place type
placegroup.edited = Edited placeSelect.placesleft = Places left
placegroup.name = Name placeSelect.reservationPrice = Reservation price
placegroup.placename = Place placeSelect.reservedPlaces = Reserved places
placegroup.places = Places placeSelect.totalPlaces = Places in total
placegroup.printPdf = Print placecodes
placegroup.created = Created
placegroupview.groupCreator = Reserver placegroup.creator = Reserver
placegroupview.header = My places placegroup.details = Details
placegroupview.noMemberships = No places placegroup.edit = Show
placegroupview.placeReleaseFailed = Releasing of place failed! placegroup.edited = Edited
placegroupview.placeReleased = Place {0} released placegroup.name = Name
placegroupview.releasePlace = Release placegroup.placename = Place
placegroupview.reservationName = Place placegroup.places = Places
placegroupview.reservationProduct = Product placegroup.printPdf = Print placecodes
placegroupview.token = Placecode / user
placegroupview.groupCreator = Reserver
placetoken.commit = Associate token placegroupview.header = My places
placetoken.pageHeader = Add token placegroupview.noMemberships = No places
placetoken.placelist = My places placegroupview.placeReleaseFailed = Releasing of place failed!
placetoken.token = Token placegroupview.placeReleased = Place {0} released
placetoken.tokenNotFound = Token not found! Check token placegroupview.releasePlace = Release
placetoken.topText = You can associate a ticket bought by someone else to your account by inserting a token to the field below placegroupview.reservationName = Place
placegroupview.reservationProduct = Product
poll.answer = Answer to poll placegroupview.token = Placecode / user
poll.begin = Open poll
poll.create = Create placetoken.commit = Associate token
poll.description = Description placetoken.pageHeader = Add token
poll.edit = Edit placetoken.placelist = My places
poll.end = Close poll placetoken.token = Token
poll.name = Poll name placetoken.tokenNotFound = Token not found! Check token
poll.save = Send answers placetoken.topText = You can associate a ticket bought by someone else to your account by inserting a token to the field below
product.barcode = Barcode poll.answer = Answer to poll
product.billed = Billed poll.begin = Open poll
product.boughtTotal = Products billed poll.create = Create
product.buyInPrice = Buy in price poll.description = Description
product.cart.count = To shoppingcart poll.edit = Edit
product.cashed = Cashpaid poll.end = Close poll
product.color = Color in UI poll.name = Poll name
product.create = Create product poll.save = Send answers
product.createDiscount = Add volumediscount
product.edit = edit product.barcode = Barcode
product.name = Name of product product.buyInPrice = Buy in price
product.paid = Paid product.billed = Billed
product.prepaid = Prepaid product.boughtTotal = Products billed
product.prepaidInstant = Created when prepaid is paid product.cart.count = To shoppingcart
product.price = Price of product product.cashed = Cashpaid
product.providedRole = Product defines role product.color = Color in UI
product.save = Save product.create = Create product
product.shopInstant = Create automatic cashpayment product.createDiscount = Add volumediscount
product.sort = Sort nr product.edit = edit
product.totalPrice = Total product.name = Name of product
product.unitName = Unit name product.paid = Paid
product.vat = VAT product.prepaid = Prepaid
product.prepaidInstant = Created when prepaid is paid
productShopView.readBarcode = Read barcode product.price = Price of product
product.providedRole = Product defines role
products.save = Save product.save = Save
product.shopInstant = Create automatic cashpayment
productshop.billCreated = Bill created product.sort = Sort nr
productshop.commit = Buy product.totalPrice = Total
productshop.limits = Available product.unitName = Unit name
productshop.minusOne = -1 product.vat = VAT
productshop.minusTen = -10
productshop.noItemsInCart = There are no products in shopping cart products.save = Save
productshop.plusOne = +1
productshop.plusTen = +10 productsShopView.readBarcode = Read
productshop.total = Total
productshop.billCreated = Bill created
reader.assocToCard = Associate to card productshop.commit = Buy
reader.automaticProduct = Default product productshop.limits = Available
reader.automaticProductCount = Amount productshop.minusOne = -1
reader.createNewCard = Create new card productshop.minusTen = -10
reader.description = Description productshop.noItemsInCart = There are no products in shopping cart
reader.edit = Edit productshop.plusOne = +1
reader.identification = Identification productshop.plusTen = +10
reader.name = Reader name productshop.total = Total
reader.save = Save reader.automaticProduct = Default product
reader.select = Select reader reader.automaticProductCount = Amount
reader.tag = Tag
reader.type = Type reader.assocToCard = Associate to card
reader.user = User reader.createNewCard = Create new card
reader.description = Description
readerView.searchforuser = Search user reader.edit = Edit
reader.save = Save
readerevent.associateToUser = Associate to user reader.identification = Identification
readerevent.seenSince = Last seen reader.name = Reader name
readerevent.shopToUser = Buy to user reader.select = Select reader
readerevent.tagname = Tag reader.tag = Tag
reader.type = Type
readerview.cards = Card ( printcount ) reader.user = User
resetMail.body = You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that. readerView.searchforuser = Search user
resetMail.header = Reset lost password
resetMail.send = Send email readerevent.associateToUser = Associate to user
resetMail.username = Username readerevent.seenSince = Last seen
readerevent.shopToUser = Buy to user
resetmailSent.body = Email has been sent containing a link where you can change the password. readerevent.tagname = Tag
resetmailSent.header = Email sent
readerview.cards = Card ( printcount )
rfidevent.empty = Empty
rfidevent.reader = Reader resetMail.body = You can change a forgotten password by inserting your username to the field below. A link where you can change the password will be sent to the email address associated to that.
rfidevent.searchuser = Search user resetMail.header = Reset lost password
rfidevent.tag = Tag resetMail.send = Send email
resetMail.username = Username
role.cardtemplate = Cardtemplate
role.create = Create role resetmailSent.body = Email has been sent containing a link where you can change the password.
role.description = Description resetmailSent.header = Email sent
role.edit = Edit
role.edit.save = Save rfidevent.empty = Empty
role.execute = (X) rfidevent.reader = Reader
role.name = Name rfidevent.searchuser = Search user
role.parents = Parents rfidevent.tag = Tag
role.permissionheader = Role permissions
role.read = (R) role.cardtemplate = Cardtemplate
role.write = (W) role.create = Create role
role.description = Description
salespoint.edit = Edit role.edit = Edit
salespoint.name = Name role.edit.save = Save
salespoint.noSalesPoints = Amount role.execute = (X)
role.name = Name
sendPicture.header = S role.parents = Parents
role.permissionheader = Role permissions
shop.accountBalance = Account balance role.read = (R)
shop.cash = Cash deposit role.write = (W)
shop.readBarcode = Read barcode
shop.totalPrice = Price of products salespoint.edit = Edit
shop.user = Selling to salespoint.name = Name
salespoint.noSalesPoints = Amount
sidebar.bill.list = My bills
sidebar.bill.listAll = All bills sendPicture.header = S
sidebar.bill.summary = Summary of bills
sidebar.bills = Bills shop.accountBalance = Credits
sidebar.cardTemplate.create = New card template shop.actions = Actions
sidebar.cardTemplate.list = Show card templates shop.barcode = Barcode
sidebar.createuser = Register a new account shop.buyCash = Buy by Cash
sidebar.eventorg.list = My organisations shop.buyCredit = Buy Credit
sidebar.map.list = Maps shop.calcsubtotal = Calc Subtotal
sidebar.map.placemap = Placemap shop.cash = Cash
sidebar.maps = Maps shop.cashBack = Back
sidebar.other = Other shop.cashGiven = Cash given
sidebar.product.create = New product shop.cashback = Cashback
sidebar.product.createBill = Create bill shop.confirmCreditBuy = Are You sure ?
sidebar.product.list = Products shop.count = Q
sidebar.products = Products shop.price = price
sidebar.role.create = New role shop.product = Product
sidebar.role.list = Roles shop.readBarcode = Read
sidebar.roles = Roles shop.shop = Shop
sidebar.shop.readerEvents = Reader events shop.totalPrice = Total
sidebar.shop.readerlist = Show readers shop.user = Selling to
sidebar.user.create = New user
sidebar.user.editself = My preferences sidebar.bill.list = My bills
sidebar.user.list = Users sidebar.bill.listAll = All bills
sidebar.users = Users sidebar.bill.summary = Summary of bills
sidebar.utils.flushCache = Flush Cache sidebar.bills = Bills
sidebar.utils.testdata = Testdata sidebar.cardTemplate.create = New card template
sidebar.cardTemplate.list = Show card templates
sitepage.addContent = Add content block sidebar.createuser = Register a new account
sitepage.create = Create sidebar.eventorg.list = My organisations
sitepage.edit = Edit sidebar.map.list = Maps
sitepage.name = Page name sidebar.map.placemap = Placemap
sitepage.roles = Visible for roles sidebar.maps = Maps
sitepage.save = Save sidebar.other = Other
sidebar.product.create = New product
sitepagelist.header = Site pages sidebar.product.createBill = Create bill
sidebar.product.list = Products
submenu.auth.login = Login sidebar.products = Products
submenu.auth.logoutResponse = Logout successfull sidebar.role.create = New role
submenu.auth.sendResetMail = Password reset sidebar.role.list = Roles
submenu.bill.billSummary = Bill summary sidebar.roles = Roles
submenu.bill.list = My bills sidebar.shop.readerEvents = Reader events
submenu.bill.listAll = All bills sidebar.shop.readerlist = Show readers
submenu.foodadmin.createTemplate = Create foodwave template sidebar.user.create = New user
submenu.foodadmin.listTemplates = List foodwave templates sidebar.user.editself = My preferences
submenu.foodmanager.listFoodwaves = List active foodwaves sidebar.user.list = Users
submenu.foodwave.list = Open foodwaves sidebar.users = Users
submenu.foodwave.listTemplates = Food provides sidebar.utils.flushCache = Flush Cache
submenu.index = Frontpage sidebar.utils.testdata = Testdata
submenu.map.create = Create map
submenu.map.list = List maps sitepage.addContent = Add content block
submenu.orgrole.create = Create organisationrole sitepage.create = Create
submenu.orgrole.list = Organisation roles sitepage.edit = Edit
submenu.pages.create = Create content sitepage.name = Page name
submenu.pages.list = List pages sitepage.roles = Visible for roles
submenu.place.insertToken = Insert placecode sitepage.save = Save
submenu.place.myGroups = Place reservations
submenu.place.placemap = Placemap sitepagelist.header = Site pages
submenu.poll.index = Polls
submenu.product.create = Create product submenu.auth.login = Login
submenu.product.list = List products submenu.auth.logoutResponse = Logout successfull
submenu.role.create = Create role submenu.auth.sendResetMail = Password reset
submenu.role.list = Roles submenu.bill.billSummary = Bill summary
submenu.shop.createBill = Shop submenu.foodadmin.createTemplate = Create foodwave template
submenu.shop.listReaders = List readers submenu.foodadmin.listTemplates = List foodwave templates
submenu.shop.showReaderEvents = Reader events submenu.foodmanager.listFoodwaves = List active foodwaves
submenu.user.accountEvents = Account events submenu.foodwave.list = Open foodwaves
submenu.user.changePassword = Change password submenu.foodwave.listTemplates = Food provides
submenu.user.create = Create new user submenu.bill.list = My bills
submenu.user.edit = User information submenu.bill.listAll = All bills
submenu.user.foodwave = Food submenu.index = Frontpage
submenu.user.invite = Invite friends submenu.map.create = Create map
submenu.user.manageuserlinks = Manage users submenu.map.list = List maps
submenu.user.other = Other submenu.orgrole.create = Create organisationrole
submenu.user.rolelinks = Manage roles submenu.orgrole.list = Organisation roles
submenu.user.sendPicture = Send picture submenu.pages.create = Create content
submenu.user.shop = Shop submenu.pages.list = List pages
submenu.user.userlinks = User information submenu.place.insertToken = Insert placecode
submenu.useradmin.create = Create user submenu.place.myGroups = Place reservations
submenu.useradmin.createCardTemplate = Create cardtemplate submenu.place.placemap = Placemap
submenu.useradmin.list = List users submenu.poll.index = Polls
submenu.useradmin.listCardTemplates = Card templates submenu.product.create = Create product
submenu.useradmin.showTakePicture = Show webcam submenu.product.list = List products
submenu.useradmin.validateUser = Validate user submenu.role.create = Create role
submenu.voting.compolist = Compos submenu.role.list = Roles
submenu.voting.create = Create new compo submenu.shop.createBill = Shop
submenu.voting.myEntries = My entries submenu.shop.listReaders = List readers
submenu.shop.showReaderEvents = Reader events
supernavi.admin = Adminview submenu.user.accountEvents = Account events
supernavi.user = Userview submenu.user.changePassword = Change password
submenu.user.foodwave = Food
svm.failure.errorMessage = Payment error. submenu.user.create = Create new user
svm.failure.successMessage = Payment error successfull\u2026 ( Possibly already marked paid ) submenu.user.edit = User information
svm.pending.errorMessage = Unknown error! If payment was successfull email will be sent after verification. submenu.user.invite = Invite friends
svm.pending.successMessage = Payment pending. You will receive email after payment verification. submenu.user.manageuserlinks = Manage users
svm.success.errorMessage = Payment could not be verified! submenu.user.other = Other
svm.success.successMessage = Payment was successfull. You can now your credits in the system. submenu.user.rolelinks = Manage roles
submenu.user.sendPicture = Send picture
template.loggedInAs = Logged in as: submenu.user.shop = Shop
submenu.user.userlinks = User information
topnavi.adminshop = Adminshop submenu.useradmin.create = Create user
topnavi.billing = Billing submenu.useradmin.createCardTemplate = Create cardtemplate
topnavi.compos = Compos submenu.useradmin.list = List users
topnavi.contents = Site contents submenu.useradmin.listCardTemplates = Card templates
topnavi.foodwave = Food submenu.useradmin.showTakePicture = Show webcam
topnavi.frontpage = Front page submenu.useradmin.validateUser = Validate user
topnavi.log = Log submenu.voting.compolist = Compos
topnavi.maps = Maps submenu.voting.create = Create new compo
topnavi.placemap = Map submenu.voting.myEntries = My entries
topnavi.poll = Polls
topnavi.products = Products supernavi.admin = Adminview
topnavi.shop = Shop supernavi.user = Userview
topnavi.user = My properties
topnavi.userinit = User auth svm.failure.errorMessage = Payment error.
topnavi.usermgmt = Users svm.failure.successMessage = Payment error successfull\u2026 ( Possibly already marked paid )
svm.pending.errorMessage = Unknown error! If payment was successfull email will be sent after verification.
user.accountBalance = Account balance svm.pending.successMessage = Payment pending. You will receive email after payment verification.
user.accountEventHeader = Account events svm.success.errorMessage = Payment could not be verified!
user.accountevents = Account events svm.success.successMessage = Payment was successfull. You can now your credits in the system.
user.address = Address
user.bank = Bank template.loggedInAs = Logged in as
user.bankaccount = Bank number
user.birthday = Birthday topnavi.adminshop = Adminshop
user.cardPower = Usertype topnavi.billing = Billing
user.changePassword = Change password topnavi.compos = Compos
user.changepassword.forUser = For user topnavi.contents = Site contents
user.changepassword.title = Change password topnavi.foodwave = Food
user.create = Create user topnavi.frontpage = Front page
user.createdmessage = User has been created successfully. You can now login. topnavi.log = Log
user.defaultImage = Default picture topnavi.maps = Maps
user.edit = Edit topnavi.placemap = Map
user.edit.title = My information topnavi.poll = Polls
user.email = Email topnavi.products = Products
user.firstNames = Firstname topnavi.shop = Shop
user.food.title = Choose Menu topnavi.user = My properties
user.foodwave.products.title = Choose Products topnavi.userinit = User auth
user.foodwavelist.title = Choose Foodwave topnavi.usermgmt = Users
user.hasImage = Image
user.image = Image user.accountBalance = Account balance
user.imagelist = Saved images user.accountEventHeader = Account events
user.imagesubmit = Send image user.accountevents = Account events
user.insertToken = Insert token user.address = Address
user.invalidLoginCredentials = Invalid user credentials user.bank = Bank
user.invite = Invite user.bankaccount = Bank number
user.invite.header = Accept invitation user.birthday = Birthday
user.invitemail = Email address user.cardPower = Usertype
user.lastName = Lastname user.changePassword = Change password
user.login = Login user.changepassword.forUser = For user
user.myGroups = My place reservations user.changepassword.title = Change password
user.nick = Nick user.create = Create user
user.noAccountevents = No account events user.createdmessage = User has been created successfully. You can now login.
user.noCurrentImage = No image user.defaultImage = Default picture
user.noImage = No image user.edit = Edit
user.oldPassword = Current password user.edit.title = My information
user.page.invite = Invite friends user.food.title = Choose Menu
user.password = Password user.foodwave.products.title = Choose Products
user.passwordcheck = Password ( again ) user.foodwavelist.title = Choose Foodwave
user.passwordlengthMessage = Password is too short! user.email = Email
user.phone = Tel user.firstNames = Firstname
user.realname = Name user.hasImage = Image
user.roles = Roles user.image = Image
user.rolesave = Save roles user.imagelist = Saved images
user.save = Save user.imagesubmit = Send image
user.saveFailed = Save failed, Not enough permissions! user.insert = Insert
user.saveSuccessfull = Changes saved successfully user.insertToken = Insert token
user.sendPicture = Send image user.invalidLoginCredentials = Invalid user credentials
user.sex = Sex user.invite = Invite
user.sex.FEMALE = Female user.invite.header = Accept invitation
user.sex.MALE = Male user.invitemail = Email address
user.sex.UNDEFINED = Undefined user.lastName = Lastname
user.shop = Buy user.login = Login
user.shop.title = Shop to user user.myGroups = My place reservations
user.successfullySaved = Changes saved successfully user.nick = Nick
user.superadmin = Superadmin user.noAccountevents = No account events
user.thisIsCurrentImage = Current image user.noCurrentImage = No image
user.town = City user.noImage = No image
user.uploadimage = Send image user.oldPassword = Current password
user.username = Username user.page.invite = Invite friends
user.validate.notUniqueUsername = Username already exists. Please select another. user.password = Password
user.validateUser.commit = Send user.passwordcheck = Password ( again )
user.validateUser.header = Please insert credentials user.passwordlengthMessage = Password is too short!
user.wholeName = Name user.phone = Tel
user.zipCode = Postal nr. user.realname = Name
user.roles = Roles
userImport.commit = Commit user.rolesave = Save roles
user.save = Save
userView.image = Image user.saveFailed = Save failed, Not enough permissions!
user.saveSuccessfull = Changes saved successfully
usercart.addSearchedUsers = Add searched users user.sendPicture = Send image
usercart.cartsize = Size user.sex = Sex
usercart.clear = Clear Cart user.sex.FEMALE = Female
usercart.showCart = Show usercart user.sex.MALE = Male
usercart.traverse = Traverse user.sex.UNDEFINED = Undefined
user.shop = Buy
userimage.webcam = Take picture with webcam user.shop.title = Shop to user
user.successfullySaved = Changes saved successfully
userlist.header = Users user.superadmin = Superadmin
userlist.onlythisevent = Limit to users of this event user.thisIsCurrentImage = Current image
userlist.placeassoc = Assigned to place user.town = City
userlist.rolefilter = Assigned roles user.uploadimage = Send image
userlist.saldofilter = Saldo user.username = Username
userlist.search = Search user.validate.notUniqueUsername = Username already exists. Please select another.
userlist.showAdvancedSearch = Advanced search user.validateUser.commit = Send
user.validateUser.header = Please insert credentials
usertitle.managingUser = Shop user.wholeName = Name
user.zipCode = Postal nr.
userview.header = Users
userview.invalidEmail = Invalid email address userImport.commit = Commit
userview.loginstringFaulty = Username has to be atleast 2 characters long!
userview.oldPasswordError = Invalid password! userView.image = Image
userview.passwordTooShort = Password has to be atleast 5 characters long!
userview.passwordsChanged = Password changed usercart.clear = Clear Cart
userview.passwordsDontMatch = Passwords do not match! Please try again! usercart.addSearchedUsers = Add searched users
userview.userExists = Username already exists! please select another. usercart.cartsize = Size
usercart.showCart = Show usercart
viewexpired.body = Please login again. usercart.traverse = Traverse
viewexpired.title = Login expired. Please login again.
userimage.webcam = Take picture with webcam
voting.allcompos.curEntries = # of entries
voting.allcompos.descri = Description userlist.header = Users
voting.allcompos.description = List of all compos and theirs information. userlist.onlythisevent = Limit to users of this event
voting.allcompos.endTime = End time userlist.placeassoc = Assigned to place
voting.allcompos.header = All compos userlist.rolefilter = Assigned roles
voting.allcompos.maxParts = Max participants userlist.saldofilter = Saldo
voting.allcompos.name = Name userlist.search = Search
voting.allcompos.startTime = Start time userlist.showAdvancedSearch = Advanced search
voting.allcompos.submitEnd = Submit end
voting.allcompos.submitEntry = Submit entry usertitle.managingUser = Shop
voting.allcompos.submitStart = Submit start
voting.allcompos.voteEnd = Vote end userview.header = Users
voting.allcompos.voteStart = Vote start userview.invalidEmail = Invalid email address
voting.compo.submit = Submit entry userview.loginstringFaulty = Username has to be atleast 2 characters long!
voting.compo.vote = Vote userview.oldPasswordError = Invalid password!
voting.compoentryadd.button = Send userview.passwordTooShort = Password has to be atleast 5 characters long!
voting.compoentryadd.description = Add new entry to compo userview.passwordsChanged = Password changed
voting.compoentryadd.entryname = Name userview.passwordsDontMatch = Passwords do not match! Please try again!
voting.compoentryadd.file = File userview.userExists = Username already exists! please select another.
voting.compoentryadd.notes = Notes
voting.compoentryadd.screenmessage = Screenmessage viewexpired.body = Please login again.
voting.compoentryadd.title = Add entry viewexpired.title = Login expired. Please login again.
voting.compoentryadd.uploadedFile = File to
voting.compoentrysave.button = Save voting.allcompos.curEntries = # of entries
voting.create.compoEnd = End time voting.allcompos.descri = Description
voting.create.compoStart = Start time voting.allcompos.description = List of all compos and theirs information.
voting.create.createButton = Create voting.allcompos.endTime = End time
voting.create.dateValidatorEndDate = End time before start time. voting.allcompos.header = All compos
voting.create.description = Description voting.allcompos.maxParts = Max participants
voting.create.header = Create compo voting.allcompos.name = Name
voting.create.maxParticipants = Max participants voting.allcompos.startTime = Start time
voting.create.name = Name voting.allcompos.submitEnd = Submit end
voting.create.submitEnd = Submit close voting.allcompos.submitEntry = Submit entry
voting.create.submitStart = Submit start voting.allcompos.submitStart = Submit start
voting.create.voteEnd = Voting close voting.allcompos.voteEnd = Vote end
voting.create.voteStart = Voting start voting.allcompos.voteStart = Vote start
voting.compo.submit = Submit entry
voting.compo.vote = Vote
voting.compoentryadd.button = Send
voting.compoentryadd.description = Add new entry to compo
voting.compoentryadd.entryname = Name
voting.compoentryadd.file = File
voting.compoentryadd.notes = Notes
voting.compoentryadd.screenmessage = Screenmessage
voting.compoentryadd.title = Add entry
voting.compoentryadd.uploadedFile = File to
voting.compoentrysave.button = Save
voting.create.compoEnd = End time
voting.create.compoStart = Start time
voting.create.createButton = Create
voting.create.dateValidatorEndDate = End time before start time.
voting.create.description = Description
voting.create.header = Create compo
voting.create.maxParticipants = Max participants
voting.create.name = Name
voting.create.submitEnd = Submit close
voting.create.submitStart = Submit start
voting.create.voteEnd = Voting close
voting.create.voteStart = Voting start
acc_line.eventuser = Asiakas acc_line.eventuser = Asiakas
acc_line.nick = Nimimerkki acc_line.nick = Nimimerkki
acc_line.product = Tuote acc_line.product = Tuote
acc_line.quantity = M\u00E4\u00E4r\u00E4 acc_line.quantity = M\u00E4\u00E4r\u00E4
acc_line.time = Ostoaika acc_line.time = Ostoaika
accountEvent.commit = Tallenna accountEvent.commit = Tallenna
accountEvent.delivered = Toimitettu accountEvent.delivered = Toimitettu
accountEvent.edit = Muokkaa accountEvent.edit = Muokkaa
accountEvent.eventTime = Aika accountEvent.eventTime = Aika
accountEvent.productname = Tuote accountEvent.productname = Tuote
accountEvent.quantity = Lkm accountEvent.quantity = Lkm
accountEvent.seller = Myyj\u00E4 accountEvent.seller = Myyj\u00E4
accountEvent.total = Yhteens\u00E4 accountEvent.total = Yhteens\u00E4
accountEvent.unitPrice = Yksikk\u00F6hinta accountEvent.unitPrice = Yksikk\u00F6hinta
actionlog.create.header = Luo uusi ActionMessage actionlog.create.header = Luo uusi ActionMessage
actionlog.create.message = Viesti actionlog.create.message = Viesti
actionlog.create.role = Kohderooli actionlog.create.role = Kohderooli
actionlog.create.submitbutton = L\u00E4het\u00E4 actionlog.create.submitbutton = L\u00E4het\u00E4
actionlog.create.taskradio = Teht\u00E4v\u00E4 actionlog.create.taskradio = Teht\u00E4v\u00E4
actionlog.crew = Crew actionlog.crew = Crew
actionlog.message = Tapahtuma actionlog.message = Tapahtuma
actionlog.messagelist.description = Voit seurata sek\u00E4 luoda uusia ActionMessageja t\u00E4ss\u00E4 n\u00E4kym\u00E4ss\u00E4. actionlog.messagelist.description = Voit seurata sek\u00E4 luoda uusia ActionMessageja t\u00E4ss\u00E4 n\u00E4kym\u00E4ss\u00E4.
actionlog.messagelist.header = Viestilista actionlog.messagelist.header = Viestilista
actionlog.messagestate.DONE = Tehty actionlog.messagestate.DONE = Tehty
actionlog.messagestate.NEW = Uusi actionlog.messagestate.NEW = Uusi
actionlog.messagestate.PENDING = Ty\u00F6n alla actionlog.messagestate.PENDING = Ty\u00F6n alla
actionlog.state = Tila actionlog.state = Tila
actionlog.task = Teht\u00E4v\u00E4 actionlog.task = Teht\u00E4v\u00E4
actionlog.tasklist.header = Teht\u00E4v\u00E4lista actionlog.tasklist.header = Teht\u00E4v\u00E4lista
actionlog.time = Aika actionlog.time = Aika
actionlog.user = Tekij\u00E4 actionlog.user = Tekij\u00E4
applicationPermission.description = kuvaus adduser.newuser = Luo uusi k\u00E4ytt\u00E4j\u00E4
applicationPermission.name = Oikeusryhm\u00E4 adduser.update = P\u00E4ivit\u00E4 k\u00E4vij\u00E4kuva
adduser.welcome = Tervetuloa
barcodeReader.readBarcode = Lue viivakoodi 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.
bill.addr1 = Osoite 1 applicationPermission.description = kuvaus
bill.addr2 = Osoite 2 applicationPermission.name = Oikeusryhm\u00E4
bill.addr3 = Osoite 3
bill.addr4 = Osoite 4 barcodeReader.readBarcode = Lue viivakoodi
bill.addr5 = Osoite 5
bill.address = Maksajan osoite bill.addr1 = Osoite 1
bill.billAmount = Laskun summa bill.addr2 = Osoite 2
bill.billIsPaid = Lasku on maksettu bill.addr3 = Osoite 3
bill.billLines = Tuotteet bill.addr4 = Osoite 4
bill.billNumber = Laskun numero bill.addr5 = Osoite 5
bill.billPaidDate = Maksup\u00E4iv\u00E4 bill.address = Maksajan osoite
bill.deliveryTerms = Toimitusehdot bill.billAmount = Laskun summa
bill.edit = Muokkaa bill.billIsPaid = Lasku on maksettu
bill.isPaid = Maksettu bill.billLines = Tuotteet
bill.markPaid = Maksettu bill.billNumber = Laskun numero
bill.markedPaid = Lasku merkitty maksetuksi. bill.billPaidDate = Maksup\u00E4iv\u00E4
bill.notes = Huomioita bill.deliveryTerms = Toimitusehdot
bill.noticetime = Huomautusaika bill.edit = Muokkaa
bill.ourReference = Myyj\u00E4n viite bill.isPaid = Maksettu
bill.paidDate = Maksup\u00E4iv\u00E4 bill.markPaid = Maksettu
bill.payer = Maksaja bill.markedPaid = Lasku merkitty maksetuksi.
bill.paymentTime = Maksuehdot bill.notes = Huomioita
bill.paymentTime.now = Heti bill.noticetime = Huomautusaika
bill.printBill = Tulosta lasku bill.ourReference = Myyj\u00E4n viite
bill.receiverAddress = Kauppiaan osoite bill.paidDate = Maksup\u00E4iv\u00E4
bill.referenceNumberBase = Viitenumeropohja bill.payer = Maksaja
bill.referencenumber = Viitenumero bill.paymentTime = Maksuehdot
bill.sentDate = P\u00E4iv\u00E4ys bill.paymentTime.now = Heti
bill.show = N\u00E4yt\u00E4 bill.printBill = Tulosta lasku
bill.theirReference = Asiakkaan viite bill.receiverAddress = Kauppiaan osoite
bill.totalPrice = Laskun summa bill.referenceNumberBase = Viitenumeropohja
bill.totalprice = Yhteens\u00E4 bill.referencenumber = Viitenumero
bill.sentDate = P\u00E4iv\u00E4ys
billLine.eventuser = Asiakas bill.show = N\u00E4yt\u00E4
billLine.nick = Nimimerkki bill.theirReference = Asiakkaan viite
billLine.price = Kappalehinta bill.totalPrice = Laskun summa
billLine.product = Tuote bill.totalprice = Yhteens\u00E4
billLine.quantity = M\u00E4\u00E4r\u00E4
billLine.time = Tilausaika billLine.eventuser = Asiakas
billLine.nick = Nimimerkki
billine.linePrice = Yhteens\u00E4 billLine.price = Kappalehinta
billine.name = Tuote billLine.product = Tuote
billine.quantity = Lukum\u00E4\u00E4r\u00E4 billLine.quantity = M\u00E4\u00E4r\u00E4
billine.referencedProduct = Tuoteviittaus billLine.time = Tilausaika
billine.save = Tallenna
billine.unitName = Yksikk\u00F6 billine.linePrice = Yhteens\u00E4
billine.unitPrice = Yksikk\u00F6hinta billine.name = Tuote
billine.vat = ALV billine.quantity = Lukum\u00E4\u00E4r\u00E4
billine.referencedProduct = Tuoteviittaus
bills.noBills = Ei laskuja billine.save = Tallenna
billine.unitName = Yksikk\u00F6
card.massprint.title = Tulosta kaikki billine.unitPrice = Yksikk\u00F6hinta
billine.vat = ALV
cardTemplate.create = Luo
cardTemplate.edit = Muokkaa bills.noBills = Ei laskuja
cardTemplate.id = Id
cardTemplate.imageheader = Nykyinen pohja card.massprint.title = Tulosta kaikki
cardTemplate.name = Korttipohja
cardTemplate.power = Teho cardTemplate.create = Luo
cardTemplate.roles = Yhdistetyt roolit cardTemplate.edit = Muokkaa
cardTemplate.save = Tallenna cardTemplate.id = Id
cardTemplate.sendImage = Lataa kuva cardTemplate.imageheader = Nykyinen pohja
cardTemplate.name = Korttipohja
cart.item = Tuote cardTemplate.power = Teho
cart.item_quantity = M\u00E4\u00E4r\u00E4 cardTemplate.roles = Yhdistetyt roolit
cart.item_total = Yhteens\u00E4 cardTemplate.save = Tallenna
cart.item_unitprice = Hinta cardTemplate.sendImage = Lataa kuva
cart.total = Yhteens\u00E4
cart.item = Tuote
checkout.cancel.errorMessage = Virhe peruutuksen vahvistuksessa\u2026 Ilmoita t\u00E4st\u00E4 osoitteeseen code@codecrew.fi cart.item_quantity = M\u00E4\u00E4r\u00E4
checkout.cancel.successMessage = Voit yritt\u00E4\u00E4 maksua uudelleen omista laskuistasi. cart.item_total = Yhteens\u00E4
checkout.reject.errorMessage = Virhe hyl\u00E4tyn maksun k\u00E4sittelyss\u00E4. Raportoi t\u00E4m\u00E4 virhe osoitteeseen: code@codecrew.fi cart.item_unitprice = Hinta
checkout.reject.successMessage = Maksu hyl\u00E4tty. Voit yritt\u00E4\u00E4 maksua uudelleen omista laskuistasi. cart.total = Yhteens\u00E4
checkout.return.errorDelayed = Virhe viiv\u00E4stetyn maksun vahvistuksessa. Ota yhteytt\u00E4 code@codecrew.fi
checkout.return.errorMessage = Virhe maksun onnistuneen maksun vahvistuksessa. Raportoi t\u00E4m\u00E4 virhe yll\u00E4pidolle: code@codecrew.fi checkout.cancel.errorMessage = Virhe peruutuksen vahvistuksessa\u2026 Ilmoita t\u00E4st\u00E4 osoitteeseen code@codecrew.fi
checkout.return.successDelayed = Viiv\u00E4stetty maksu onnistunut. Maksu vahvistet\u00E4\u00E4n my\u00F6hemp\u00E4n\u00E4 ajankohtana, yleens\u00E4 noin tunnin sis\u00E4ll\u00E4. checkout.cancel.successMessage = Voit yritt\u00E4\u00E4 maksua uudelleen omista laskuistasi.
checkout.return.successMessage = Maksu vahvistettu. Tuotteet on maksettu. Voit siirty\u00E4 eteenp\u00E4in tilauksessasi. checkout.reject.errorMessage = Virhe hyl\u00E4tyn maksun k\u00E4sittelyss\u00E4. Raportoi t\u00E4m\u00E4 virhe osoitteeseen: code@codecrew.fi
checkout.reject.successMessage = Maksu hyl\u00E4tty. Voit yritt\u00E4\u00E4 maksua uudelleen omista laskuistasi.
compo.edit = Muokkaa compoa checkout.return.errorDelayed = Virhe viiv\u00E4stetyn maksun vahvistuksessa. Ota yhteytt\u00E4 code@codecrew.fi
compo.saveVotes = Tallenna \u00E4\u00E4net checkout.return.errorMessage = Virhe maksun onnistuneen maksun vahvistuksessa. Raportoi t\u00E4m\u00E4 virhe yll\u00E4pidolle: code@codecrew.fi
compo.savesort = Tallenna j\u00E4rjestys checkout.return.successDelayed = Viiv\u00E4stetty maksu onnistunut. Maksu vahvistet\u00E4\u00E4n my\u00F6hemp\u00E4n\u00E4 ajankohtana, yleens\u00E4 noin tunnin sis\u00E4ll\u00E4.
compo.votesSaved = \u00C4\u00E4net tallennettu checkout.return.successMessage = Maksu vahvistettu. Tuotteet on maksettu. Voit siirty\u00E4 eteenp\u00E4in tilauksessasi.
compofile.download = lataa compo.edit = Muokkaa compoa
compofile.download.header = Lataa tiedosto compo.savesort = Tallenna j\u00E4rjestys
compofile.upload = L\u00E4het\u00E4 tiedosto compo.saveVotes = Tallenna \u00E4\u00E4net
compo.votesSaved = \u00C4\u00E4net tallennettu
discount.active = Aktiivinen
discount.amountMax = Enimm\u00E4ism\u00E4\u00E4r\u00E4 compofile.download = lataa
discount.amountMin = V\u00E4himm\u00E4ism\u00E4\u00E4r\u00E4 compofile.download.header = Lataa tiedosto
discount.code = Alennuskoodi compofile.upload = L\u00E4het\u00E4 tiedosto
discount.create = Luo uusi
discount.details = Tiedot discount.active = Aktiivinen
discount.edit = Muokkaa discount.amountMax = Enimm\u00E4ism\u00E4\u00E4r\u00E4
discount.maxNum = Alennusten enimm\u00E4islkm discount.amountMin = V\u00E4himm\u00E4ism\u00E4\u00E4r\u00E4
discount.perUser = Alennuksia per k\u00E4ytt\u00E4j\u00E4 discount.code = Alennuskoodi
discount.percentage = Alennusprosentti discount.create = Luo uusi
discount.products = Tuotteet discount.details = Tiedot
discount.role = Roolialennus discount.edit = Muokkaa
discount.save = Tallenna discount.maxNum = Alennusten enimm\u00E4islkm
discount.shortdesc = Kuvaus discount.perUser = Alennuksia per k\u00E4ytt\u00E4j\u00E4
discount.validFrom = Voimassa alkaen discount.percentage = Alennusprosentti
discount.validTo = Voimassa asti discount.products = Tuotteet
discount.role = Roolialennus
editplace.header = Muokkaa paikkaa discount.save = Tallenna
discount.shortdesc = Kuvaus
editplacegroup.header = Paikkaryhm\u00E4n tiedot discount.validFrom = Voimassa alkaen
discount.validTo = Voimassa asti
entry.edit = Muokkaa
editplace.header = Muokkaa paikkaa
error.contact = Jos t\u00E4m\u00E4 toistuu, ota seuraava koodi talteen ja ota yhteys Infoon:
error.error = Olet kohdannut virheen. editplacegroup.header = Paikkaryhm\u00E4n tiedot
event.defaultRole = K\u00E4ytt\u00E4jien oletusrooli entry.edit = Muokkaa
event.edit = Muokkaa
event.endTime = Lopetusp\u00E4iv\u00E4 error.contact = Jos t\u00E4m\u00E4 toistuu, ota seuraava koodi talteen ja ota yhteys Infoon:
event.name = Tapahtuman nimi error.error = Olet kohdannut virheen.
event.nextBillNumber = Seuraavan laskun numero
event.referenceNumberBase = Viitenumeron pohja event.defaultRole = K\u00E4ytt\u00E4jien oletusrooli
event.save = Tallenna event.edit = Muokkaa
event.startTime = Aloitusp\u00E4iv\u00E4 event.endTime = Lopetusp\u00E4iv\u00E4
event.name = Tapahtuman nimi
eventdomain.domainname = Domain event.nextBillNumber = Seuraavan laskun numero
eventdomain.remove = Poista event.referenceNumberBase = Viitenumeron pohja
event.save = Tallenna
eventmap.active = Aktiivinen\u0009 event.startTime = Aloitusp\u00E4iv\u00E4
eventmap.buyable.like = Paikat
eventmap.buyable.lock = Lukitse paikat eventdomain.domainname = Domain
eventmap.buyable.release = Vapauta paikat eventdomain.remove = Poista
eventmap.name = Kartan nimi
eventmap.notes = Lis\u00E4tiedot eventmap.active = Aktiivinen\u0009
eventmap.save = Tallenna eventmap.buyable.like = Paikat
eventmap.buyable.lock = Lukitse paikat
eventorg.bankName1 = Pankin nimi 1 eventmap.buyable.release = Vapauta paikat
eventorg.bankName2 = Pankin nimi 2 eventmap.name = Kartan nimi
eventorg.bankNumber1 = Tilinumero 1 eventmap.notes = Lis\u00E4tiedot
eventorg.bankNumber2 = Tilinumero 2 eventmap.save = Tallenna
eventorg.billAddress1 = Laskutusosoite 1
eventorg.billAddress2 = Laskutusosoite 2 eventorg.bankName1 = Pankin nimi 1
eventorg.billAddress3 = Laskutusosoite 3 eventorg.bankName2 = Pankin nimi 2
eventorg.billAddress4 = Laskutusosoite 4 eventorg.bankNumber1 = Tilinumero 1
eventorg.bundleCountry = Kieli-bundle eventorg.bankNumber2 = Tilinumero 2
eventorg.create = Luo eventorg.billAddress1 = Laskutusosoite 1
eventorg.createEvent = Luo tapahtuma eventorg.billAddress2 = Laskutusosoite 2
eventorg.createevent = Luo uusi tapahtuma eventorg.billAddress3 = Laskutusosoite 3
eventorg.edit = Muokkaa eventorg.billAddress4 = Laskutusosoite 4
eventorg.events = Organisaation tapahtumat eventorg.bundleCountry = Kieli-bundle
eventorg.organisation = Organisaation nimi eventorg.create = Luo
eventorg.save = Tallenna eventorg.createEvent = Luo tapahtuma
eventorg.createevent = Luo uusi tapahtuma
eventorgView.eventname = Tapahtuman nimi eventorg.edit = Muokkaa
eventorg.events = Organisaation tapahtumat
eventorganiser.name = Tapahtumaj\u00E4rjest\u00E4j\u00E4 eventorg.organisation = Organisaation nimi
eventorg.save = Tallenna
feedback.canFeedback = Vituttaako?
feedback.submit = L\u00E4het\u00E4 eventorgView.eventname = Tapahtuman nimi
feedback.thanks = Kiiiiitooooos! :)
eventorganiser.name = Tapahtumaj\u00E4rjest\u00E4j\u00E4
food = Ruoka feedback.canFeedback = Vituttaako?
feedback.submit = L\u00E4het\u00E4
foodWave.accountevents = Maksetut tilaukset feedback.thanks = Kiiiiitooooos! :)
foodWave.activeFoodWaves = Aktiiviset Ruokatilaukset
foodWave.billLines = Maksamattomat Verkkomaksut
foodWave.deliveredFoodWaves = Toimitetut Ruokatilaukset food = Ruoka
foodWave.description = Kuvaus foodWave.accountevents = Maksetut tilaukset
foodWave.list = Ruokatilaukset foodWave.activeFoodWaves = Aktiiviset Ruokatilaukset
foodWave.name = Ruokatilaus foodWave.billLines = Maksamattomat Verkkomaksut
foodWave.orders = Tilausten M\u00E4\u00E4r\u00E4 foodWave.deliveredFoodWaves = Toimitetut Ruokatilaukset
foodWave.paid = Maksettuja
foodWave.show = N\u00E4yt\u00E4 foodWave.list = Ruokatilaukset
foodWave.template.name = Tilauspohja foodWave.name = Ruokatilaus
foodWave.template.waves = Ruokatilaus foodWave.orders = Tilausten M\u00E4\u00E4r\u00E4
foodWave.templatename = Valitse tuotteet foodWave.paid = Maksettuja
foodWave.time = Aika foodWave.show = N\u00E4yt\u00E4
foodWave.totalReserved = Yhteens\u00E4 foodWave.template.name = Tilauspohja
foodWave.unconfirmedOrders = Vahvistamattomia foodWave.template.waves = Ruokatilaus
foodWave.templatename = Valitse tuotteet
foodadmin.editTemplate = Muokkaa foodWave.totalReserved = Yhteens\u00E4
foodWave.unconfirmedOrders = Vahvistamattomia
foodshop.buyAndPay = Varaa ja maksa foodWave.template.name = Nimi
foodshop.buyFromCounter = Maksa infossa foodadmin.editTemplate = Muokkaa
foodshop.buyFromInternet = Maksa Internetiss\u00E4
foodshop.total = Yhteens\u00E4 foodshop.buyAndPay = Varaa ja maksa
foodWave.time = Aika
foodwave.buyInPrice = Sis\u00E4\u00E4nostohinta
foodwave.foodwaveBuyInPrice = Sis\u00E4\u00E4nostohinta foodshop.total = Yhteens\u00E4
foodwave.markPaid = Merkitty maksetuksi foodshop.buyFromCounter = Maksa infossa
foodwave.orders = Maksetut Tilaukset foodwave.buyInPrice = Sis\u00E4\u00E4nostohinta
foodwave.price = Tilausten kokonaishinta foodwave.foodwaveBuyInPrice = Sis\u00E4\u00E4nostohinta
foodwave.summaryView = Ruokatilauksen Yhteenveto foodwave.markPaid = Merkitty maksetuksi
foodwave.template.basicinfo = Template Infot foodwave.orders = Maksetut Tilaukset
foodwave.template.description = Kuvaus foodwave.price = Tilausten kokonaishinta
foodwave.template.edit.title = Foodwave Template Editori foodwave.summaryView = Ruokatilauksen Yhteenveto
foodwave.template.list.title = Ruokatilaus Templatet foodwave.template.basicinfo = Template Infot
foodwave.template.name = Nimi foodwave.template.description = Kuvaus
foodwave.template.selectproducts = Tuotteet foodwave.template.edit.title = Foodwave Template Editori
foodwave.totalCount = M\u00E4\u00E4r\u00E4 foodwave.template.list.title = Ruokatilaus Templatet
foodwave.totalPrice = Asiakkaan Hinta foodwave.template.name = Nimi
foodwave.template.selectproducts = Tuotteet
foodwaveTemplate.name = Nimi foodwave.totalCount = M\u00E4\u00E4r\u00E4
foodwave.totalPrice = Asiakkaan Hinta
foodwavetemplate.actions = Toimet
foodwavetemplate.addproduct = Lis\u00E4\u00E4 foodwaveTemplate.name = Nimi
foodwavetemplate.basicinfo = Tilauspohja
foodwavetemplate.createFoodwave = Luo ruokatilaus foodwavetemplate.actions = Toimet
foodwavetemplate.createwave = Luo tilauspohja foodwavetemplate.addproduct = Lis\u00E4\u00E4
foodwavetemplate.description = Kuvaus foodwavetemplate.basicinfo = Tilauspohja
foodwavetemplate.edit = Muokkaa tilauspohjaa foodwavetemplate.createFoodwave = Luo ruokatilaus
foodwavetemplate.editRow = Muokkaa foodwavetemplate.createwave = Luo tilauspohja
foodwavetemplate.maxfoods = Tilausten enimm\u00E4ism\u00E4\u00E4r\u00E4 foodwavetemplate.description = Kuvaus
foodwavetemplate.name = Nimi foodwavetemplate.edit = Muokkaa tilauspohjaa
foodwavetemplate.price = Hinta foodwavetemplate.editRow = Muokkaa
foodwavetemplate.productdescription = Kuvaus foodwavetemplate.maxfoods = Tilausten enimm\u00E4ism\u00E4\u00E4r\u00E4
foodwavetemplate.productname = Nimi\n foodwavetemplate.name = Nimi
foodwavetemplate.removeFromList = Poista foodwavetemplate.price = Hinta
foodwavetemplate.save = Ok foodwavetemplate.productdescription = Kuvaus
foodwavetemplate.savetemplate = Tallenna foodwavetemplate.productname = Nimi\n
foodwavetemplate.selectproducts = Tuotteet foodwavetemplate.removeFromList = Poista
foodwavetemplate.startTime = Tilausaika foodwavetemplate.save = Ok
foodwavetemplate.waveName = Tilauksen nimi foodwavetemplate.savetemplate = Tallenna
foodwavetemplate.selectproducts = Tuotteet
game.gamepoints = Insomnia Game pisteet: foodwavetemplate.startTime = Tilausaika
foodwavetemplate.waveName = Tilauksen nimi
gamepoints = Pelipisteit\u00E4
foodshop.buyFromInternet = Maksa Internetiss\u00E4
global.cancel = Peruuta
global.copyright = Codecrew Ry game.gamepoints = Insomnia Game pisteet:
global.eventname = Tapahtumanimi
global.notAuthorizedExecute = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia suorittaa t\u00E4t\u00E4 toimenpidett\u00E4! gamepoints = Pelipisteit\u00E4
global.notauthorized = Sinulla ei ole riitt\u00E4vi\u00E4 oikeuksia t\u00E4lle sivulle.
global.save = Tallenna global.cancel = Peruuta
global.copyright = Codecrew Ry
httpsession.creationTime = Luotu global.eventname = Tapahtumanimi
httpsession.id = ID global.notAuthorizedExecute = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia suorittaa t\u00E4t\u00E4 toimenpidett\u00E4!
httpsession.invalidate = Mit\u00E4t\u00F6i global.notauthorized = Sinulla ei ole riitt\u00E4vi\u00E4 oikeuksia t\u00E4lle sivulle.
httpsession.invalidateSuccessfull = Sessio onnistuneesti mit\uFFFDt\uFFFDity global.save = Tallenna
httpsession.isSessionNew = Uusi sessio
httpsession.lastAccessedTime = Viimeksi n\uFFFDhty httpsession.creationTime = Luotu
httpsession.maxInactiveInterval = Aikakatkaisu (s) httpsession.id = ID
httpsession.sessionHasExisted = Ollut elossa (s) httpsession.invalidate = Mit\u00E4t\u00F6i
httpsession.user = Tunnus httpsession.invalidateSuccessfull = Sessio onnistuneesti mit\uFFFDt\uFFFDity
httpsession.isSessionNew = Uusi sessio
imagefile.description = Kuvaus httpsession.lastAccessedTime = Viimeksi n\uFFFDhty
imagefile.file = Kuvatiedosto httpsession.maxInactiveInterval = Aikakatkaisu (s)
httpsession.sessionHasExisted = Ollut elossa (s)
importuser.file = Tiedosto httpsession.user = Tunnus
importuser.template = Malli
imagefile.description = Kuvaus
index.title = Etusivu imagefile.file = Kuvatiedosto
invite.emailexists = J\u00E4rjestelm\u00E4ss\u00E4 on jo k\u00E4ytt\u00E4j\u00E4tunnus samalla s\u00E4hk\u00F6postiosoitteella. importuser.file = Tiedosto
invite.notFound = Kutsu virheellinen tai jo k\u00E4ytetty. importuser.template = Malli
invite.successfull = Kutsu l\u00E4hetetty
invite.userCreateSuccessfull = K\u00E4ytt\u00E4j\u00E4tunnus luotu onnistuneesti. Voit nyt kirjautua sis\u00E4\u00E4n j\u00E4rjeselm\u00E4\u00E4n. index.title = Etusivu
javax.validation.constraints.AssertFalse.message = must be false infoview.back = Takaisin
javax.validation.constraints.AssertTrue.message = must be true infoview.computerplace = Tietokonepaikat
javax.validation.constraints.DecimalMax.message = must be less than or equal to {value} infoview.shop = Kauppa
javax.validation.constraints.DecimalMin.message = must be greater than or equal to {value}
javax.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected) invite.emailexists = J\u00E4rjestelm\u00E4ss\u00E4 on jo k\u00E4ytt\u00E4j\u00E4tunnus samalla s\u00E4hk\u00F6postiosoitteella.
javax.validation.constraints.Future.message = must be in the future invite.notFound = Kutsu virheellinen tai jo k\u00E4ytetty.
javax.validation.constraints.Max.message = must be less than or equal to {value} invite.successfull = Kutsu l\u00E4hetetty
javax.validation.constraints.Min.message = must be greater than or equal to {value} invite.userCreateSuccessfull = K\u00E4ytt\u00E4j\u00E4tunnus luotu onnistuneesti. Voit nyt kirjautua sis\u00E4\u00E4n j\u00E4rjeselm\u00E4\u00E4n.
javax.validation.constraints.NotNull.message = may not be null
javax.validation.constraints.Null.message = must be null javax.validation.constraints.AssertFalse.message = must be false
javax.validation.constraints.Past.message = must be in the past javax.validation.constraints.AssertTrue.message = must be true
javax.validation.constraints.Pattern.message = must match "{regexp}" javax.validation.constraints.DecimalMax.message = must be less than or equal to {value}
javax.validation.constraints.Size.message = size must be between {min} and {max} javax.validation.constraints.DecimalMin.message = must be greater than or equal to {value}
javax.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)
layout.editBottom = Muokkaa alasis\u00E4lt\u00F6\u00E4 javax.validation.constraints.Future.message = must be in the future
layout.editContent = Muokkaa sis\u00E4lt\u00F6\u00E4 javax.validation.constraints.Max.message = must be less than or equal to {value}
layout.editTop = Muokkaa yl\u00E4sis\u00E4lt\u00F6\u00E4 javax.validation.constraints.Min.message = must be greater than or equal to {value}
javax.validation.constraints.NotNull.message = may not be null
login.login = Kirjaudu sis\u00E4\u00E4n javax.validation.constraints.Null.message = must be null
login.logout = Kirjaudu ulos javax.validation.constraints.Past.message = must be in the past
login.logoutmessage = Olet kirjautunut ulos j\u00E4rjestelm\u00E4st\u00E4. javax.validation.constraints.Pattern.message = must match "{regexp}"
login.password = Salasana javax.validation.constraints.Size.message = size must be between {min} and {max}
login.submit = Kirjaudu sis\u00E4\u00E4n
login.username = K\u00E4ytt\u00E4j\u00E4tunnus layout.editBottom = Muokkaa alasis\u00E4lt\u00F6\u00E4
layout.editContent = Muokkaa sis\u00E4lt\u00F6\u00E4
loginerror.header = Kirjautuminen ep\u00E4onnistui layout.editTop = Muokkaa yl\u00E4sis\u00E4lt\u00F6\u00E4
loginerror.message = K\u00E4ytt\u00E4j\u00E4tunnus tai salasana ei ollut oikein.
loginerror.resetpassword = Salasana unohtunut? login.login = Kirjaudu sis\u00E4\u00E4n
login.logout = Kirjaudu ulos
map.edit = Muokkaa login.logoutmessage = Olet kirjautunut ulos j\u00E4rjestelm\u00E4st\u00E4.
map.generate = Generoi paikat login.password = Salasana
map.height = Paikan korkeus (px) login.submit = Kirjaudu sis\u00E4\u00E4n
map.id = # login.username = K\u00E4ytt\u00E4j\u00E4tunnus
map.name = Nimi
map.namebase = Puolipisteell\u00E4 erotetut p\u00F6yt\u00E4-etuliitteet loginerror.header = Kirjautuminen ep\u00E4onnistui
map.oneRowTable = Yhden rivin p\u00F6yd\u00E4t loginerror.message = K\u00E4ytt\u00E4j\u00E4tunnus tai salasana ei ollut oikein.
map.placesInRow = Paikkoja riviss\u00E4 loginerror.resetpassword = Salasana unohtunut?
map.product = Paikkatuote
map.startX = P\u00F6yd\u00E4n X-aloituskoord. map.edit = Muokkaa
map.startY = P\u00F6yd\u00E4n Y-aloituskoord. map.generate = Generoi paikat
map.submitMap = L\u00E4het\u00E4 karttapohja map.height = Paikan korkeus (px)
map.tableCount = P\u00F6ytien lukum\u00E4\u00E4r\u00E4 map.id = #
map.tableXdiff = P\u00F6ytien v\u00E4li ( X ) map.name = Nimi
map.tableYdiff = P\u00F6ytien v\u00E4li ( Y ) map.namebase = Puolipisteell\u00E4 erotetut p\u00F6yt\u00E4-etuliitteet
map.tablesHorizontal = P\u00F6yd\u00E4t vaakatasossa map.oneRowTable = Yhden rivin p\u00F6yd\u00E4t
map.width = Leveys (px) map.placesInRow = Paikkoja riviss\u00E4
map.product = Paikkatuote
mapEdit.removePlaces = Poista kaikki paikat map.startX = P\u00F6yd\u00E4n X-aloituskoord.
map.startY = P\u00F6yd\u00E4n Y-aloituskoord.
mapManage.lockedPlaces = Lukittu kartasta {0} paikkaa. map.submitMap = L\u00E4het\u00E4 karttapohja
mapManage.releasedPlaces = Vapautettu kartasta {0} paikkaa map.tableCount = P\u00F6ytien lukum\u00E4\u00E4r\u00E4
map.tableXdiff = P\u00F6ytien v\u00E4li ( X )
mapView.buyPlaces = Lukitse valitut paikat map.tableYdiff = P\u00F6ytien v\u00E4li ( Y )
mapView.errorWhenReleasingPlace = Paikkaa vapauttassa tapahtui virhe. map.tablesHorizontal = P\u00F6yd\u00E4t vaakatasossa
mapView.errorWhenReservingPlace = Paikkaa varatessa tapahtui virhe. map.width = Leveys (px)
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. mapEdit.removePlaces = Poista kaikki paikat
menu.index = Etusivu mapManage.lockedPlaces = Lukittu kartasta {0} paikkaa.
menu.name = Nimi mapManage.releasedPlaces = Vapautettu kartasta {0} paikkaa
menu.place.placemap = Paikkakartta
menu.poll.index = Kyselyt mapView.buyPlaces = Lukitse valitut paikat
menu.select = Valitse mapView.errorWhenReleasingPlace = Paikkaa vapauttassa tapahtui virhe.
menu.shop.createBill = Kauppa mapView.errorWhenReservingPlace = Paikkaa varatessa tapahtui virhe.
menu.sort = J\u00E4rjest\u00E4 mapView.errorWhileBuyingPlaces = Virhe paikkojen ostossa. Ole hyv\u00E4 ja yrit\u00E4 uudelleen. Jos virhe toistuu ota yhteytt\u00E4 j\u00E4rjest\u00E4jiin.
menu.user.edit = Omat tiedot mapView.notEnoughCreditsToReserve = Sinulla ei ole riitt\u00E4v\u00E4sti suoritettuja konepaikkamaksuja t\u00E4m\u00E4n paikan varaamiseen.
menu.name = Nimi
news.abstract = Lyhennelm\u00E4
news.expire = Lopeta julkaisu menu.index = Etusivu
news.publish = Julkaise menu.select = Valitse
news.save = Tallenna menu.place.placemap = Paikkakartta
news.title = Otsikko menu.sort = J\u00E4rjest\u00E4
menu.poll.index = Kyselyt
newsgroup.edit = Muokkaa menu.shop.createBill = Kauppa
newsgroup.name = Uutisryhm\u00E4n nimi menu.user.edit = Omat tiedot
newsgroup.priority = J\u00E4rjestysnumero
newsgroup.readerRole = Lukijoiden roolit news.abstract = Lyhennelm\u00E4
newsgroup.writerRole = Kirjoittajaryhm\u00E4 news.expire = Lopeta julkaisu
news.publish = Julkaise
newslist.header = Uutisryhm\u00E4t news.save = Tallenna
news.title = Otsikko
org.hibernate.validator.constraints.Email.message = not a well-formed email address
org.hibernate.validator.constraints.Length.message = length must be between {min} and {max} newsgroup.edit = Muokkaa
org.hibernate.validator.constraints.NotEmpty.message = may not be empty newsgroup.name = Uutisryhm\u00E4n nimi
org.hibernate.validator.constraints.Range.message = must be between {min} and {max} newsgroup.priority = J\u00E4rjestysnumero
newsgroup.readerRole = Lukijoiden roolit
orgrole.create = Luo newsgroup.writerRole = Kirjoittajaryhm\u00E4
orgrole.name = Nimi
orgrole.parents = Periytyy newslist.header = Uutisryhm\u00E4t
page.account.list.header = Tilitapahtumat org.hibernate.validator.constraints.Email.message = not a well-formed email address
page.auth.loginerror.header = kirjautuminen ep\u00E4onnistui org.hibernate.validator.constraints.Length.message = length must be between {min} and {max}
page.auth.logout.header = Uloskirjautuminen org.hibernate.validator.constraints.NotEmpty.message = may not be empty
page.auth.logoutsuccess.header = Logout org.hibernate.validator.constraints.Range.message = must be between {min} and {max}
page.auth.resetPassword.header = Nollaa salasana
page.bill.billSummary.header = Laskujen yhteenveto orgrole.create = Luo
page.bill.list.header = Laskut orgrole.name = Nimi
page.bill.show.header = Laskun tiedot orgrole.parents = Periytyy
page.checkout.cancel.header = Maksu peruutettu.
page.checkout.delayed.header = Viiv\u00E4stetty maksu page.account.list.header = Tilitapahtumat
page.checkout.reject.header = Maksu hyl\u00E4tty! page.auth.loginerror.header = kirjautuminen ep\u00E4onnistui
page.checkout.return.header = Maksu vahvistettu page.auth.logout.header = Uloskirjautuminen
page.place.insertToken.header = Sy\u00F6t\u00E4 paikkakoodi page.auth.logoutsuccess.header = Logout
page.place.mygroups.header = Paikkaryhm\u00E4t page.auth.resetPassword.header = Nollaa salasana
page.place.placemap.header = Paikkakartta page.bill.billSummary.header = Laskujen yhteenveto
page.product.createBill.header = Osta tuotteita page.bill.list.header = Laskut
page.product.validateBillProducts.header = Lasku luotu page.bill.show.header = Laskun tiedot
page.svm.failure.header = Verkkomaksuvirhe page.checkout.cancel.header = Maksu peruutettu.
page.svm.pending.header = Maksukuittausta odotetaan page.checkout.delayed.header = Viiv\u00E4stetty maksu
page.svm.success.header = Verkkomaksu onnistui page.checkout.reject.header = Maksu hyl\u00E4tty!
page.user.create.header = Luo uusi k\u00E4ytt\u00E4j\u00E4 page.checkout.return.header = Maksu vahvistettu
page.place.insertToken.header = Sy\u00F6t\u00E4 paikkakoodi
pagination.firstpage = Ensimm\u00E4inen page.place.mygroups.header = Paikkaryhm\u00E4t
pagination.lastpage = Viimeinen page.place.placemap.header = Paikkakartta
pagination.nextpage = Seuraava page.product.createBill.header = Osta tuotteita
pagination.pages = Sivuja page.product.validateBillProducts.header = Lasku luotu
pagination.previouspage = Edellinen page.svm.failure.header = Verkkomaksuvirhe
pagination.results = Tuloksia page.svm.pending.header = Maksukuittausta odotetaan
page.svm.success.header = Verkkomaksu onnistui
passwordChanged.body = Voit nyt kirjautua k\u00E4ytt\u00E4j\u00E4tunnuksella ja uudella salasanalla sis\u00E4\u00E4n j\u00E4rjestelm\u00E4\u00E4n. page.user.create.header = Luo uusi k\u00E4ytt\u00E4j\u00E4
passwordChanged.header = Salasana vaihdettu onnistuneesti
pagination.firstpage = Ensimm\u00E4inen
passwordReset.errorChanging = Odotamaton virhe. Ota yhteytt\u00E4 yll\u00E4pitoon. pagination.lastpage = Viimeinen
passwordReset.hashNotFound = Salasanan vaihto on vanhentunut. Jos haluat vaihtaa salasanan l\u00E4het\u00E4 vaihtopyynt\u00F6 uudelleen. pagination.nextpage = Seuraava
pagination.pages = Sivuja
passwordreset.mailBody = Voit vaihtaa salasanasi osoitteessa {0}\n\nJos et ole pyyt\u00E4nyt unohtuneen salasanan vaihtamista, ei t\u00E4h\u00E4n viestiin tarvitse reagoida.\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi pagination.previouspage = Edellinen
passwordreset.mailSubject = [INSOMNIA] Salasanan vaihtaminen pagination.results = Tuloksia
passwordreset.usernotfound = Annettua k\u00E4ytt\u00E4j\u00E4tunnusta ei l\u00F6ydy. Huomioi ett\u00E4 isot ja pienet kirjaimet ovat merkitsevi\u00E4.
passwordChanged.body = Voit nyt kirjautua k\u00E4ytt\u00E4j\u00E4tunnuksella ja uudella salasanalla sis\u00E4\u00E4n j\u00E4rjestelm\u00E4\u00E4n.
permissiondenied.alreadyLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia! passwordChanged.header = Salasana vaihdettu onnistuneesti
permissiondenied.header = P\u00E4\u00E4sy kielletty
permissiondenied.notLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia t\u00E4lle sivulle. passwordReset.errorChanging = Odotamaton virhe. Ota yhteytt\u00E4 yll\u00E4pitoon.
passwordReset.hashNotFound = Salasanan vaihto on vanhentunut. Jos haluat vaihtaa salasanan l\u00E4het\u00E4 vaihtopyynt\u00F6 uudelleen.
place.buyable = Ostettavissa
place.code = Paikkakoodi passwordreset.mailBody = Voit vaihtaa salasanasi osoitteessa {0}\n\nJos et ole pyyt\u00E4nyt unohtuneen salasanan vaihtamista, ei t\u00E4h\u00E4n viestiin tarvitse reagoida.\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
place.commit = Tallenna passwordreset.mailSubject = [INSOMNIA] Salasanan vaihtaminen
place.description = Kuvaus passwordreset.usernotfound = Annettua k\u00E4ytt\u00E4j\u00E4tunnusta ei l\u00F6ydy. Huomioi ett\u00E4 isot ja pienet kirjaimet ovat merkitsevi\u00E4.
place.details = Tiedot
place.edit = Muokkaa permissiondenied.alreadyLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia!
place.groupremove = Poista paikka paikkaryhm\u00E4st\u00E4 permissiondenied.header = P\u00E4\u00E4sy kielletty
place.height = Korkeus permissiondenied.notLoggedIn = Sinulla ei ole riitt\u00E4v\u00E4sti oikeuksia t\u00E4lle sivulle.
place.id = ID
place.mapX = X place.buyable = Ostettavissa
place.mapY = Y place.code = Paikkakoodi
place.membership = Yhdistetty k\u00E4ytt\u00E4j\u00E4 place.commit = Tallenna
place.name = Nimi place.description = Kuvaus
place.noReserver = Ei liitetty k\u00E4ytt\u00E4j\u00E4\u00E4n place.details = Tiedot
place.product = Tuote place.edit = Muokkaa
place.releasetime = Vapautusaika place.groupremove = Poista paikka paikkaryhm\u00E4st\u00E4
place.width = Leveys place.height = Korkeus
place.id = ID
placeSelect.legend.blue = Oma valittu paikka place.mapX = X
placeSelect.legend.green = Oma ostettu paikka place.mapY = Y
placeSelect.legend.grey = Vapautetaan tarvittaessa place.membership = Yhdistetty k\u00E4ytt\u00E4j\u00E4
placeSelect.legend.red = Varattu paikka place.name = Nimi
placeSelect.legend.white = Vapaa paikka place.noReserver = Ei liitetty k\u00E4ytt\u00E4j\u00E4\u00E4n
placeSelect.placeName = Paikka place.product = Tuote
placeSelect.placePrice = Paikan hinta place.releasetime = Vapautusaika
placeSelect.placeProductName = Paikan tyyppi place.width = Leveys
placeSelect.placesleft = Paikkoja j\u00E4ljell\u00E4
placeSelect.reservationPrice = Tilauksen hinta placeSelect.legend.blue = Oma valittu paikka
placeSelect.reservedPlaces = Valitut paikat placeSelect.legend.green = Oma ostettu paikka
placeSelect.totalPlaces = Paikkoja yhteens\u00E4 placeSelect.legend.grey = Vapautetaan tarvittaessa
placeSelect.legend.red = Varattu paikka
placegroup.created = Luotu placeSelect.legend.white = Vapaa paikka
placegroup.creator = Varaaja placeSelect.placeName = Paikka
placegroup.details = Tiedot placeSelect.placePrice = Paikan hinta
placegroup.edit = N\u00E4yt\u00E4 placeSelect.placeProductName = Paikan tyyppi
placegroup.edited = Muokattu placeSelect.placesleft = Paikkoja j\u00E4ljell\u00E4
placegroup.name = Nimi placeSelect.reservationPrice = Tilauksen hinta
placegroup.placename = Paikka placeSelect.reservedPlaces = Valitut paikat
placegroup.places = Paikat placeSelect.totalPlaces = Paikkoja yhteens\u00E4
placegroup.printPdf = Tulosta paikkakoodit
placegroup.created = Luotu
placegroupview.groupCreator = Varaaja placegroup.creator = Varaaja
placegroupview.header = Omat paikat placegroup.details = Tiedot
placegroupview.noMemberships = Ei omia paikkoja placegroup.edit = N\u00E4yt\u00E4
placegroupview.placeReleaseFailed = Paikan vapauttaminen ep\u00E4onnistui! placegroup.edited = Muokattu
placegroupview.placeReleased = Paikka {0} vapautettu placegroup.name = Nimi
placegroupview.releasePlace = Vapauta placegroup.placename = Paikka
placegroupview.reservationName = Paikka placegroup.places = Paikat
placegroupview.reservationProduct = Tuote placegroup.printPdf = Tulosta paikkakoodit
placegroupview.token = Paikkakoodi / k\u00E4ytt\u00E4j\u00E4
placegroupview.groupCreator = Varaaja
placetoken.commit = Liit\u00E4 placegroupview.header = Omat paikat
placetoken.pageHeader = Lis\u00E4\u00E4 konepaikkakoodi placegroupview.noMemberships = Ei omia paikkoja
placetoken.placelist = Omat paikat placegroupview.placeReleaseFailed = Paikan vapauttaminen ep\u00E4onnistui!
placetoken.token = Paikkakoodi placegroupview.placeReleased = Paikka {0} vapautettu
placetoken.tokenNotFound = Paikkakoodia ei l\u00F6ytynyt! Tarkista koodi. placegroupview.releasePlace = Vapauta
placetoken.topText = Voit yhdist\u00E4\u00E4 paikan omaan k\u00E4ytt\u00E4j\u00E4tunnukseesi sy\u00F6tt\u00E4m\u00E4ll\u00E4 paikkakoodin allaolevaan kentt\u00E4\u00E4n. placegroupview.reservationName = Paikka
placegroupview.reservationProduct = Tuote
poll.answer = Vastaa kyselyyn placegroupview.token = Paikkakoodi / k\u00E4ytt\u00E4j\u00E4
poll.begin = Avaa kysely
poll.create = Luo placetoken.commit = Liit\u00E4
poll.description = Kuvaus placetoken.pageHeader = Lis\u00E4\u00E4 konepaikkakoodi
poll.edit = Muokkaa placetoken.placelist = Omat paikat
poll.end = Sulje kysely placetoken.token = Paikkakoodi
poll.name = Kyselyn nimi placetoken.tokenNotFound = Paikkakoodia ei l\u00F6ytynyt! Tarkista koodi.
poll.save = L\u00E4het\u00E4 vastauksesi placetoken.topText = Voit yhdist\u00E4\u00E4 paikan omaan k\u00E4ytt\u00E4j\u00E4tunnukseesi sy\u00F6tt\u00E4m\u00E4ll\u00E4 paikkakoodin allaolevaan kentt\u00E4\u00E4n.
product.barcode = Viivakoodi poll.answer = Vastaa kyselyyn
product.billed = Laskutettu poll.begin = Avaa kysely
product.boughtTotal = Tuotteita laskutettu poll.create = Luo
product.cart.count = Ostoskoriin poll.description = Kuvaus
product.cashed = Ostettu k\u00E4teisell\u00E4 poll.edit = Muokkaa
product.color = V\u00E4ri k\u00E4ytt\u00F6liittym\u00E4ss\u00E4 poll.end = Sulje kysely
product.create = Luo tuote poll.name = Kyselyn nimi
product.createDiscount = Lis\u00E4\u00E4 m\u00E4\u00E4r\u00E4alennus poll.save = L\u00E4het\u00E4 vastauksesi
product.edit = Muokkaa
product.name = Tuotteen nimi product.barcode = Viivakoodi
product.paid = Maksettu product.billed = Laskutettu
product.prepaid = Prepaid product.boughtTotal = Tuotteita laskutettu
product.prepaidInstant = Luodaan kun prepaid maksetaan product.cart.count = Ostoskoriin
product.price = Tuotteen hinta product.cashed = Ostettu k\u00E4teisell\u00E4
product.providedRole = Tuote m\u00E4\u00E4ritt\u00E4\u00E4 roolin product.color = V\u00E4ri k\u00E4ytt\u00F6liittym\u00E4ss\u00E4
product.save = Tallenna product.create = Luo tuote
product.shopInstant = Luo k\u00E4teismaksu tuotteille product.createDiscount = Lis\u00E4\u00E4 m\u00E4\u00E4r\u00E4alennus
product.sort = J\u00E4rjestys luku product.edit = Muokkaa
product.totalPrice = Summa product.name = Tuotteen nimi
product.unitName = Tuoteyksikk\u00F6 product.paid = Maksettu
product.vat = ALV product.prepaid = Prepaid
product.prepaidInstant = Luodaan kun prepaid maksetaan
productShopView.readBarcode = Lue viivakoodi product.price = Tuotteen hinta
product.save = Tallenna
products.save = Tallenna product.shopInstant = Luo k\u00E4teismaksu tuotteille
product.sort = J\u00E4rjestys luku
productshop.billCreated = Lasku luotu product.totalPrice = Summa
productshop.commit = Osta product.unitName = Tuoteyksikk\u00F6
productshop.limits = Vapaana product.vat = ALV
productshop.minusOne = -1
productshop.minusTen = -10 productShopView.readBarcode = Lue viivakoodi
productshop.noItemsInCart = Ostoskorissa ei ole tuotteita
productshop.plusOne = +1 products.save = Tallenna
productshop.plusTen = +10
productshop.total = Yhteens\u00E4 productsShopView.readBarcode = Lue
reader.assocToCard = Yhdist\u00E4 korttiin productshop.billCreated = Lasku luotu
reader.automaticProduct = Oletustuote productshop.commit = Osta
reader.automaticProductCount = M\u00E4\u00E4r\u00E4 productshop.limits = Vapaana
reader.createNewCard = Luo uusi kortti productshop.minusOne = -1
reader.description = Kuvaus productshop.minusTen = -10
reader.edit = Muokkaa productshop.noItemsInCart = Ostoskorissa ei ole tuotteita
reader.identification = Tunniste productshop.plusOne = +1
reader.name = Lukijan nimi productshop.plusTen = +10
reader.save = Tallenna productshop.total = Yhteens\u00E4
reader.select = Valitse lukija reader.automaticProduct = Oletustuote
reader.tag = Tag reader.automaticProductCount = M\u00E4\u00E4r\u00E4
reader.type = Tyyppi
reader.user = K\u00E4ytt\u00E4j\u00E4 reader.assocToCard = Yhdist\u00E4 korttiin
reader.createNewCard = Luo uusi kortti
readerView.searchforuser = Etsi k\u00E4ytt\u00E4j\u00E4\u00E4 reader.description = Kuvaus
reader.edit = Muokkaa
readerevent.associateToUser = Yhdist\u00E4 k\u00E4ytt\u00E4j\u00E4\u00E4n reader.save = Tallenna
readerevent.seenSince = N\u00E4hty viimeksi reader.identification = Tunniste
readerevent.shopToUser = Osta k\u00E4ytt\u00E4j\u00E4lle reader.name = Lukijan nimi
readerevent.tagname = Tagi reader.select = Valitse lukija
reader.tag = Tag
readerview.cards = Kortit ( tulostuslkm ) reader.type = Tyyppi
reader.user = K\u00E4ytt\u00E4j\u00E4
resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan.
resetMail.header = Salasana unohtunut? readerView.searchforuser = Etsi k\u00E4ytt\u00E4j\u00E4\u00E4
resetMail.send = L\u00E4het\u00E4 s\u00E4hk\u00F6posti
resetMail.username = K\u00E4ytt\u00E4j\u00E4tunnus readerevent.associateToUser = Yhdist\u00E4 k\u00E4ytt\u00E4j\u00E4\u00E4n
readerevent.seenSince = N\u00E4hty viimeksi
resetmailSent.body = Antamasi k\u00E4ytt\u00E4j\u00E4tunnuksen s\u00E4hk\u00F6postiosoitteeseen on l\u00E4hetetty osoite jossa voit vaihtaa tunnuksen salasanan. readerevent.shopToUser = Osta k\u00E4ytt\u00E4j\u00E4lle
resetmailSent.header = S\u00E4hk\u00F6posti l\u00E4hetetty readerevent.tagname = Tagi
rfidevent.empty = Tyhj\u00E4 readerview.cards = Kortit ( tulostuslkm )
rfidevent.reader = Lukija
rfidevent.searchuser = Hae k\u00E4ytt\u00E4j\u00E4\u00E4 resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi allaolevaan kentt\u00E4\u00E4n. Tunnukseen liitettyyn s\u00E4hk\u00F6postiosoitteeseen l\u00E4hetet\u00E4\u00E4n kertak\u00E4ytt\u00F6inen osoite jossa voit vaihtaa sy\u00F6tt\u00E4m\u00E4si k\u00E4ytt\u00E4j\u00E4tunnuksen salasanan.
rfidevent.tag = T\u00E4gi resetMail.header = Salasana unohtunut?
resetMail.send = L\u00E4het\u00E4 s\u00E4hk\u00F6posti
role.cardtemplate = Korttipohja resetMail.username = K\u00E4ytt\u00E4j\u00E4tunnus
role.create = Luo rooli
role.description = Kuvaus resetmailSent.body = Antamasi k\u00E4ytt\u00E4j\u00E4tunnuksen s\u00E4hk\u00F6postiosoitteeseen on l\u00E4hetetty osoite jossa voit vaihtaa tunnuksen salasanan.
role.edit = Muokkaa resetmailSent.header = S\u00E4hk\u00F6posti l\u00E4hetetty
role.edit.save = Tallenna
role.name = Nimi rfidevent.empty = Tyhj\u00E4
role.parents = Periytyy rfidevent.reader = Lukija
role.savePermissions = Tallenna oikeudet rfidevent.searchuser = Hae k\u00E4ytt\u00E4j\u00E4\u00E4
rfidevent.tag = T\u00E4gi
salespoint.edit = Muokkaa
salespoint.name = Nimi role.cardtemplate = Korttipohja
salespoint.noSalesPoints = M\u00E4\u00E4r\u00E4 role.create = Luo rooli
role.description = Kuvaus
sendPicture.header = L\u00E4het\u00E4 kuva role.edit = Muokkaa
role.edit.save = Tallenna
shop.accountBalance = Tilin saldo role.name = Nimi
shop.cash = K\u00E4teispano role.parents = Periytyy
shop.readBarcode = Lue viivakoodi role.savePermissions = Tallenna oikeudet
shop.totalPrice = Tuotteiden hinta
shop.user = Myyd\u00E4\u00E4n salespoint.edit = Muokkaa
salespoint.name = Nimi
sidebar.bill.list = Omat laskut salespoint.noSalesPoints = M\u00E4\u00E4r\u00E4
sidebar.bill.listAll = Kaikki laskut
sidebar.bill.summary = Laskujen yhteenveto sendPicture.header = L\u00E4het\u00E4 kuva
sidebar.bills = Laskut
sidebar.cardTemplate.create = Uusi korttipohja shop.accountBalance = Credits
sidebar.cardTemplate.list = N\u00E4yt\u00E4 korttipohjat shop.actions = Hallinta
sidebar.createuser = Rekister\u00F6idy uudeksi k\u00E4ytt\u00E4j\u00E4ksi shop.barcode = Viivakoodi
sidebar.eventorg.list = Omat organisaatiot shop.buyCash = K\u00E4teismaksu
sidebar.map.list = Kartat shop.buyCredit = Credit
sidebar.map.placemap = Paikkakartta shop.calcsubtotal = Laske v\u00E4lisumma
sidebar.maps = Kartat shop.cash = K\u00E4teinen
sidebar.other = Muuta shop.cashGiven = K\u00E4teist\u00E4 saatu
sidebar.product.create = Uusi tuote shop.cashback = Takaisin
sidebar.product.createBill = Luo lasku shop.confirmCreditBuy = Varmastikko ?
sidebar.product.list = Tuotteet shop.count = Lkm
sidebar.products = Tuotteet shop.price = Hinta
sidebar.role.create = Uusi rooli shop.product = Tuote
sidebar.role.list = Roolit shop.readBarcode = Lue
sidebar.roles = Roolit shop.toAccountValue = Tilille
sidebar.shop.readerEvents = Lukijan tapahtumat shop.totalPrice = Yhteens\u00E4
sidebar.shop.readerlist = N\u00E4yt\u00E4 lukijat shop.user = Myyd\u00E4\u00E4n
sidebar.user.create = Uusi k\u00E4ytt\u00E4j\u00E4
sidebar.user.list = K\u00E4ytt\u00E4j\u00E4t sidebar.bill.list = Omat laskut
sidebar.users = K\u00E4ytt\u00E4j\u00E4t sidebar.bill.listAll = Kaikki laskut
sidebar.utils.flushCache = Flush Cache sidebar.bill.summary = Laskujen yhteenveto
sidebar.utils.testdata = Testdata sidebar.bills = Laskut
sidebar.cardTemplate.create = Uusi korttipohja
sitepage.addContent = Lis\u00E4\u00E4 sis\u00E4lt\u00F6laatikko sidebar.cardTemplate.list = N\u00E4yt\u00E4 korttipohjat
sitepage.create = Luo uusi sidebar.createuser = Rekister\u00F6idy uudeksi k\u00E4ytt\u00E4j\u00E4ksi
sitepage.edit = Muokkaa sidebar.eventorg.list = Omat organisaatiot
sitepage.name = Sivun nimi sidebar.map.list = Kartat
sitepage.roles = N\u00E4ytet\u00E4\u00E4n rooleille sidebar.map.placemap = Paikkakartta
sitepage.save = Tallenna sidebar.maps = Kartat
sidebar.other = Muuta
sitepagelist.header = Sivuston sis\u00E4ll\u00F6t sidebar.product.create = Uusi tuote
sidebar.product.createBill = Luo lasku
submenu.auth.login = Kirjaudu sidebar.product.list = Tuotteet
submenu.auth.logoutResponse = Uloskirjautuminen onnistui sidebar.products = Tuotteet
submenu.auth.sendResetMail = Salasanan palautus sidebar.role.create = Uusi rooli
submenu.bill.billSummary = Laskujen yhteenveto sidebar.role.list = Roolit
submenu.bill.list = N\u00E4yt\u00E4 omat laskut sidebar.roles = Roolit
submenu.bill.listAll = Kaikki laskut sidebar.shop.readerEvents = Lukijan tapahtumat
submenu.foodadmin.createTemplate = Luo tilauspohja sidebar.shop.readerlist = N\u00E4yt\u00E4 lukijat
submenu.foodadmin.listTemplates = Muokkaa tilauspohjia sidebar.user.create = Uusi k\u00E4ytt\u00E4j\u00E4
submenu.foodmanager.listFoodwaves = Aktiiviset ruokatilaukset sidebar.user.list = K\u00E4ytt\u00E4j\u00E4t
submenu.foodwave.list = Avoimet tilaukset sidebar.users = K\u00E4ytt\u00E4j\u00E4t
submenu.index = Etusivu sidebar.utils.flushCache = Flush Cache
submenu.map.create = Uusi kartta sidebar.utils.testdata = Testdata
submenu.map.list = N\u00E4yt\u00E4 kartat
submenu.orgrole.create = Luo j\u00E4rjest\u00E4j\u00E4rooli sitepage.addContent = Lis\u00E4\u00E4 sis\u00E4lt\u00F6laatikko
submenu.orgrole.list = J\u00E4rjest\u00E4j\u00E4roolit sitepage.create = Luo uusi
submenu.pages.create = Luo sis\u00E4lt\u00F6\u00E4 sitepage.edit = Muokkaa
submenu.pages.list = N\u00E4yt\u00E4 sis\u00E4ll\u00F6t sitepage.name = Sivun nimi
submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi sitepage.roles = N\u00E4ytet\u00E4\u00E4n rooleille
submenu.place.myGroups = Omat paikkavaraukset sitepage.save = Tallenna
submenu.place.placemap = Paikkakartta
submenu.poll.index = Kyselyt sitepagelist.header = Sivuston sis\u00E4ll\u00F6t
submenu.product.create = Uusi tuote
submenu.product.list = Listaa tuotteet submenu.auth.login = Kirjaudu
submenu.role.create = Luo rooli submenu.auth.logoutResponse = Uloskirjautuminen onnistui
submenu.role.list = Roolit submenu.auth.sendResetMail = Salasanan palautus
submenu.shop.createBill = Luo lasku submenu.bill.billSummary = Laskujen yhteenveto
submenu.shop.listReaders = N\u00E4yt\u00E4 lukijat submenu.foodadmin.createTemplate = Luo tilauspohja
submenu.shop.showReaderEvents = Lukijan tapahtumat submenu.foodadmin.listTemplates = Muokkaa tilauspohjia
submenu.user.accountEvents = Tilitapahtumat submenu.foodmanager.listFoodwaves = Aktiiviset ruokatilaukset
submenu.user.changePassword = Vaihda salasana submenu.foodwave.list = Avoimet tilaukset
submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4 submenu.bill.list = N\u00E4yt\u00E4 omat laskut
submenu.user.createCardTemplate = Luo korttiryhm\u00E4 submenu.bill.listAll = Kaikki laskut
submenu.user.edit = K\u00E4ytt\u00E4j\u00E4n tiedot submenu.index = Etusivu
submenu.user.foodwave = Ruoka submenu.map.create = Uusi kartta
submenu.user.invite = Kutsu yst\u00E4vi\u00E4 submenu.map.list = N\u00E4yt\u00E4 kartat
submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t submenu.orgrole.create = Luo j\u00E4rjest\u00E4j\u00E4rooli
submenu.user.listCardTemplates = Korttiryhm\u00E4t submenu.orgrole.list = J\u00E4rjest\u00E4j\u00E4roolit
submenu.user.manageuserlinks = Hallitse k\u00E4ytt\u00E4ji\u00E4 submenu.pages.create = Luo sis\u00E4lt\u00F6\u00E4
submenu.user.other = Muuta submenu.pages.list = N\u00E4yt\u00E4 sis\u00E4ll\u00F6t
submenu.user.rolelinks = Hallitse rooleja submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi
submenu.user.sendPicture = L\u00E4het\u00E4 kuva submenu.place.myGroups = Omat paikkavaraukset
submenu.user.shop = Kauppaan submenu.place.placemap = Paikkakartta
submenu.user.userlinks = Muokkaa tietoja submenu.poll.index = Kyselyt
submenu.useradmin.create = Luo uusi k\u00E4ytt\u00E4j\u00E4 submenu.product.create = Uusi tuote
submenu.useradmin.createCardTemplate = Luo uusi korttipohja submenu.product.list = Listaa tuotteet
submenu.useradmin.list = Listaa k\u00E4ytt\u00E4j\u00E4t submenu.role.create = Luo rooli
submenu.useradmin.listCardTemplates = Listaa korttipohjat submenu.role.list = Roolit
submenu.useradmin.showTakePicture = N\u00E4yt\u00E4 webcam submenu.shop.createBill = Luo lasku
submenu.useradmin.validateUser = Validoi k\u00E4ytt\u00E4j\u00E4 submenu.shop.listReaders = N\u00E4yt\u00E4 lukijat
submenu.voting.compolist = Kilpailut submenu.shop.showReaderEvents = Lukijan tapahtumat
submenu.voting.create = Uusi kilpailu submenu.user.accountEvents = Tilitapahtumat
submenu.voting.myEntries = Omat entryt submenu.user.changePassword = Vaihda salasana
submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4
supernavi.admin = Yll\u00E4piton\u00E4kym\u00E4 submenu.user.foodwave = Ruoka
supernavi.user = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4 submenu.user.createCardTemplate = Luo korttiryhm\u00E4
submenu.user.edit = K\u00E4ytt\u00E4j\u00E4n tiedot
svm.failure.errorMessage = Verkkomaksuvirhe. submenu.user.invite = Kutsu yst\u00E4vi\u00E4
svm.failure.successMessage = Maksuvirhe onnistunut. ( Maksu mahdollisesti merkitty jo maksetuksi ) submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t
svm.pending.errorMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse. submenu.user.listCardTemplates = Korttiryhm\u00E4t
svm.pending.successMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse. submenu.user.manageuserlinks = Hallitse k\u00E4ytt\u00E4ji\u00E4
svm.success.errorMessage = Verkkomaksua ei voitu verifioida! Virheest\u00E4 on raportoitu eteenp\u00E4in. submenu.user.other = Muuta
svm.success.successMessage = Verkkomaksu onnistui. submenu.user.rolelinks = Hallitse rooleja
submenu.user.sendPicture = L\u00E4het\u00E4 kuva
template.loggedInAs = Kirjautunut tunnuksella: submenu.user.shop = Kauppaan
submenu.user.userlinks = Muokkaa tietoja
topnavi.adminshop = Kauppa submenu.useradmin.create = Luo uusi k\u00E4ytt\u00E4j\u00E4
topnavi.billing = Laskutus submenu.useradmin.createCardTemplate = Luo uusi korttipohja
topnavi.compos = Kilpailut submenu.useradmin.list = Listaa k\u00E4ytt\u00E4j\u00E4t
topnavi.contents = Sivuston sis\u00E4lt\u00F6 submenu.useradmin.listCardTemplates = Listaa korttipohjat
topnavi.foodwave = Ruokatilaus submenu.useradmin.showTakePicture = N\u00E4yt\u00E4 webcam
topnavi.frontpage = Etusivu submenu.useradmin.validateUser = Validoi k\u00E4ytt\u00E4j\u00E4
topnavi.log = Logi submenu.voting.compolist = Kilpailut
topnavi.maps = Kartat submenu.voting.create = Uusi kilpailu
topnavi.placemap = Paikkakartta submenu.voting.myEntries = Omat entryt
topnavi.poll = Kyselyt
topnavi.products = Tuotteet supernavi.admin = Yll\u00E4piton\u00E4kym\u00E4
topnavi.shop = Kauppa supernavi.user = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4
topnavi.user = Omat tiedot
topnavi.userinit = K\u00E4ytt\u00E4j\u00E4n tunnistus svm.failure.errorMessage = Verkkomaksuvirhe.
topnavi.usermgmt = K\u00E4ytt\u00E4j\u00E4t svm.failure.successMessage = Maksuvirhe onnistunut. ( Maksu mahdollisesti merkitty jo maksetuksi )
svm.pending.errorMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse.
user.accountBalance = Tilin saldo svm.pending.successMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse.
user.accountEventHeader = Tilitapahtumat svm.success.errorMessage = Verkkomaksua ei voitu verifioida! Virheest\u00E4 on raportoitu eteenp\u00E4in.
user.accountevents = Tilitapahtumat svm.success.successMessage = Verkkomaksu onnistui.
user.address = Osoite
user.bank = Pankki template.loggedInAs = Kirjautunut tunnuksella
user.bankaccount = Pankkitili
user.birthday = Syntym\u00E4p\u00E4iv\u00E4 topnavi.adminshop = Kauppa
user.cardPower = K\u00E4ytt\u00E4j\u00E4tyyppi topnavi.billing = Laskutus
user.changePassword = Vaihda salasana topnavi.compos = Kilpailut
user.changepassword.forUser = K\u00E4ytt\u00E4j\u00E4lle topnavi.contents = Sivuston sis\u00E4lt\u00F6
user.changepassword.title = Vaihda salasana topnavi.foodwave = Ruokatilaus
user.create = Luo k\u00E4ytt\u00E4j\u00E4 topnavi.frontpage = Etusivu
user.createdmessage = K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistuneesti. Voit nyt kirjautua sis\u00E4\u00E4n. topnavi.log = Logi
user.defaultImage = Oletukuva topnavi.maps = Kartat
user.edit = Muokkaa topnavi.placemap = Paikkakartta
user.edit.title = Omat tiedot topnavi.poll = Kyselyt
user.email = S\u00E4hk\u00F6posti topnavi.products = Tuotteet
user.firstNames = Etunimi topnavi.shop = Kauppa
user.food.title = Valitse Menu topnavi.user = Omat tiedot
user.foodwave.products.title = Valitse tuotteet topnavi.userinit = K\u00E4ytt\u00E4j\u00E4n tunnistus
user.foodwavelist.title = Valitse Ruokatilaus topnavi.usermgmt = K\u00E4ytt\u00E4j\u00E4t
user.hasImage = Kuva
user.imageUploaded = Kuva l\u00E4hetetty. user.accountBalance = Tilin saldo
user.imagelist = Tallennetut kuvat user.accountEventHeader = Tilitapahtumat
user.imagesubmit = L\u00E4het\u00E4 kuva user.accountevents = Tilitapahtumat
user.insert = Sy\u00F6t\u00E4 arvo user.address = Osoite
user.invalidLoginCredentials = K\u00E4ytt\u00E4j\u00E4tunnus tai salasana v\u00E4\u00E4rin. user.bank = Pankki
user.invite = Kutsu user.bankaccount = Pankkitili
user.invite.header = Luo k\u00E4ytt\u00E4j\u00E4 kutsusta user.birthday = Syntym\u00E4p\u00E4iv\u00E4
user.invitemail = S\u00E4hk\u00F6postiosoite user.cardPower = K\u00E4ytt\u00E4j\u00E4tyyppi
user.lastName = Sukunimi user.changePassword = Vaihda salasana
user.login = K\u00E4ytt\u00E4j\u00E4tunnus user.changepassword.forUser = K\u00E4ytt\u00E4j\u00E4lle
user.nick = Nick user.changepassword.title = Vaihda salasana
user.noAccountevents = Ei tilitapahtumia user.create = Luo k\u00E4ytt\u00E4j\u00E4
user.noCurrentImage = Ei kuvaa user.createdmessage = K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistuneesti. Voit nyt kirjautua sis\u00E4\u00E4n.
user.noImage = EI kuvaa user.defaultImage = Oletukuva
user.oldPassword = Nykyinen salasana user.edit = Muokkaa
user.page.invite = Kutsu yst\u00E4vi\u00E4 user.edit.title = Omat tiedot
user.password = Salasana user.food.title = Valitse Menu
user.passwordcheck = Salasana ( uudelleen ) user.foodwave.products.title = Valitse tuotteet
user.passwordlengthMessage = Salasana liian lyhyt user.foodwavelist.title = Valitse Ruokatilaus
user.phone = Puhelin user.email = S\u00E4hk\u00F6posti
user.placegroups = Omat paikkaryhm\u00E4t user.firstNames = Etunimi
user.realname = Nimi user.hasImage = Kuva
user.roles = Roolit user.imageUploaded = Kuva l\u00E4hetetty.
user.rolesave = Tallenna roolit user.imagelist = Tallennetut kuvat
user.save = Tallenna user.imagesubmit = L\u00E4het\u00E4 kuva
user.sendPicture = Kuvan l\u00E4hetys user.insert = Sy\u00F6t\u00E4 arvo
user.sex = Sukupuoli user.invalidLoginCredentials = K\u00E4ytt\u00E4j\u00E4tunnus tai salasana v\u00E4\u00E4rin.
user.sex.FEMALE = Nainen user.invite = Kutsu
user.sex.MALE = Mies user.invite.header = Luo k\u00E4ytt\u00E4j\u00E4 kutsusta
user.sex.UNDEFINED = M\u00E4\u00E4rittelem\u00E4tt\u00E4 user.invitemail = S\u00E4hk\u00F6postiosoite
user.shop = Osta user.lastName = Sukunimi
user.shop.title = Osta k\u00E4ytt\u00E4j\u00E4lle user.login = K\u00E4ytt\u00E4j\u00E4tunnus
user.successfullySaved = Tiedot tallennettu onnistuneesti user.nick = Nick
user.superadmin = Superadmin user.noAccountevents = Ei tilitapahtumia
user.thisIsCurrentImage = Nykyinen kuva user.noCurrentImage = Ei kuvaa
user.town = Kaupunki user.noImage = EI kuvaa
user.uploadimage = L\u00E4het\u00E4 kuva user.oldPassword = Nykyinen salasana
user.username = K\u00E4ytt\u00E4j\u00E4tunnus user.page.invite = Kutsu yst\u00E4vi\u00E4
user.validate.notUniqueUsername = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus user.password = Salasana
user.validateUser.commit = L\u00E4het\u00E4 user.passwordcheck = Salasana ( uudelleen )
user.validateUser.header = Ole hyv\u00E4 ja sy\u00F6t\u00E4 kirjautumistiedot user.passwordlengthMessage = Salasana liian lyhyt
user.wholeName = Nimi user.phone = Puhelin
user.zipCode = Postinumero user.placegroups = Omat paikkaryhm\u00E4t
user.realname = Nimi
userImport.commit = Hyv\u00E4ksy user.roles = Roolit
user.rolesave = Tallenna roolit
userView.image = Kuva user.save = Tallenna
user.sendPicture = Kuvan l\u00E4hetys
usercart.addSearchedUsers = Lis\u00E4\u00E4 haetut k\u00E4ytt\u00E4j\u00E4t user.sex = Sukupuoli
usercart.cartsize = Koko user.sex.FEMALE = Nainen
usercart.clear = Tyhjenn\u00E4 k\u00E4ytt\u00E4j\u00E4kori user.sex.MALE = Mies
usercart.showCart = K\u00E4ytt\u00E4j\u00E4kori user.sex.UNDEFINED = M\u00E4\u00E4rittelem\u00E4tt\u00E4
usercart.traverse = K\u00E4y l\u00E4pi user.shop = Osta
user.shop.title = Osta k\u00E4ytt\u00E4j\u00E4lle
userimage.webcam = Ota kuva webkameralla user.successfullySaved = Tiedot tallennettu onnistuneesti
user.superadmin = Superadmin
userlist.header = Etsi k\u00E4ytt\u00E4ji\u00E4 user.thisIsCurrentImage = Nykyinen kuva
userlist.onlythisevent = Vain t\u00E4m\u00E4n tapahtuman k\u00E4ytt\u00E4j\u00E4t user.town = Kaupunki
userlist.placeassoc = Liitetty paikkaan user.uploadimage = L\u00E4het\u00E4 kuva
userlist.rolefilter = Annetut roolit user.username = K\u00E4ytt\u00E4j\u00E4tunnus
userlist.saldofilter = Tilin saldo user.validate.notUniqueUsername = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus
userlist.search = Etsi user.validateUser.commit = L\u00E4het\u00E4
userlist.showAdvancedSearch = Tarkennettu haku user.validateUser.header = Ole hyv\u00E4 ja sy\u00F6t\u00E4 kirjautumistiedot
user.wholeName = Nimi
usertitle.managingUser = Kauppa user.zipCode = Postinumero
userview.invalidEmail = Virheeliinen s\u00E4hk\u00F6postiosoite userImport.commit = Hyv\u00E4ksy
userview.loginstringFaulty = K\u00E4ytt\u00E4j\u00E4tunnus virheellinen. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n kaksi merkki\u00E4 pitk\u00E4.
userview.oldPasswordError = V\u00E4\u00E4r\u00E4 salasana! userView.image = Kuva
userview.passwordTooShort = Salasana liian lyhyt. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n {0} merkki\u00E4 pitk\u00E4.
userview.passwordsChanged = Salasana vaihdettu usercart.clear = Tyhjenn\u00E4 k\u00E4ytt\u00E4j\u00E4kori
userview.passwordsDontMatch = Salasanat eiv\u00E4t ole samat! Ole hyv\u00E4 ja sy\u00F6t\u00E4 salasanat uudelleen. usercart.addSearchedUsers = Lis\u00E4\u00E4 haetut k\u00E4ytt\u00E4j\u00E4t
userview.userExists = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus. usercart.cartsize = Koko
usercart.showCart = K\u00E4ytt\u00E4j\u00E4kori
viewexpired.body = Ole hyv\u00E4 ja kirjaudu sis\u00E4\u00E4n uudelleen. usercart.traverse = K\u00E4y l\u00E4pi
viewexpired.title = N\u00E4kym\u00E4 on vanhentunut
userimage.webcam = Ota kuva webkameralla
voting.allcompos.curEntries = Entryja
voting.allcompos.descri = Kuvaus userlist.header = Etsi k\u00E4ytt\u00E4ji\u00E4
voting.allcompos.description = Compojen informaatiot. userlist.onlythisevent = Vain t\u00E4m\u00E4n tapahtuman k\u00E4ytt\u00E4j\u00E4t
voting.allcompos.endTime = Lopetusaika userlist.placeassoc = Liitetty paikkaan
voting.allcompos.header = Kaikki compot userlist.rolefilter = Annetut roolit
voting.allcompos.maxParts = Max osallistujam\u00E4\u00E4r\u00E4 userlist.saldofilter = Tilin saldo
voting.allcompos.name = Nimi userlist.search = Etsi
voting.allcompos.startTime = Aloitusaika userlist.showAdvancedSearch = Tarkennettu haku
voting.allcompos.submitEnd = Lis\u00E4ys kiinni
voting.allcompos.submitEntry = L\u00E4het\u00E4 entry usertitle.managingUser = Kauppa
voting.allcompos.submitStart = Lis\u00E4ys auki
voting.allcompos.voteEnd = \u00C4\u00E4nestys kiinni userview.invalidEmail = Virheeliinen s\u00E4hk\u00F6postiosoite
voting.allcompos.voteStart = \u00C4\u00E4nestys auki userview.loginstringFaulty = K\u00E4ytt\u00E4j\u00E4tunnus virheellinen. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n kaksi merkki\u00E4 pitk\u00E4.
voting.compo.submit = L\u00E4het\u00E4 kappale userview.oldPasswordError = V\u00E4\u00E4r\u00E4 salasana!
voting.compo.vote = \u00C4\u00E4nest\u00E4 userview.passwordTooShort = Salasana liian lyhyt. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n {0} merkki\u00E4 pitk\u00E4.
voting.compoentryadd.button = L\u00E4het\u00E4 userview.passwordsChanged = Salasana vaihdettu
voting.compoentryadd.description = Lis\u00E4\u00E4 uusi entry compoon userview.passwordsDontMatch = Salasanat eiv\u00E4t ole samat! Ole hyv\u00E4 ja sy\u00F6t\u00E4 salasanat uudelleen.
voting.compoentryadd.entryname = Nimi userview.userExists = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Ole hyv\u00E4 ja valitse toinen tunnus.
voting.compoentryadd.file = Tiedosto
voting.compoentryadd.notes = Huomatuksia viewexpired.body = Ole hyv\u00E4 ja kirjaudu sis\u00E4\u00E4n uudelleen.
voting.compoentryadd.screenmessage = Screenmessage viewexpired.title = N\u00E4kym\u00E4 on vanhentunut
voting.compoentryadd.title = Lis\u00E4\u00E4 entry
voting.compoentryadd.uploadedFile = asdsda voting.allcompos.curEntries = Entryja
voting.compoentrysave.button = Tallenna voting.allcompos.descri = Kuvaus
voting.create.compoEnd = Lopetusaika voting.allcompos.description = Compojen informaatiot.
voting.create.compoStart = Aloitusaika voting.allcompos.endTime = Lopetusaika
voting.create.createButton = Luo voting.allcompos.header = Kaikki compot
voting.create.dateValidatorEndDate = Loppumisaika ennen alkua. voting.allcompos.maxParts = Max osallistujam\u00E4\u00E4r\u00E4
voting.create.description = Kuvaus voting.allcompos.name = Nimi
voting.create.header = Compon luonti voting.allcompos.startTime = Aloitusaika
voting.create.maxParticipants = Max osallistujat voting.allcompos.submitEnd = Lis\u00E4ys kiinni
voting.create.name = Nimi voting.allcompos.submitEntry = L\u00E4het\u00E4 entry
voting.create.submitEnd = Submit kiinni voting.allcompos.submitStart = Lis\u00E4ys auki
voting.create.submitStart = Submit auki voting.allcompos.voteEnd = \u00C4\u00E4nestys kiinni
voting.create.voteEnd = \u00C4\u00E4nestys kiinni voting.allcompos.voteStart = \u00C4\u00E4nestys auki
voting.create.voteStart = \u00C4\u00E4nestys auki voting.compo.submit = L\u00E4het\u00E4 kappale
voting.compo.vote = \u00C4\u00E4nest\u00E4
voting.compoentryadd.button = L\u00E4het\u00E4
voting.compoentryadd.description = Lis\u00E4\u00E4 uusi entry compoon
voting.compoentryadd.entryname = Nimi
voting.compoentryadd.file = Tiedosto
voting.compoentryadd.notes = Huomatuksia
voting.compoentryadd.screenmessage = Screenmessage
voting.compoentryadd.title = Lis\u00E4\u00E4 entry
voting.compoentryadd.uploadedFile = asdsda
voting.compoentrysave.button = Tallenna
voting.create.compoEnd = Lopetusaika
voting.create.compoStart = Aloitusaika
voting.create.createButton = Luo
voting.create.dateValidatorEndDate = Loppumisaika ennen alkua.
voting.create.description = Kuvaus
voting.create.header = Compon luonti
voting.create.maxParticipants = Max osallistujat
voting.create.name = Nimi
voting.create.submitEnd = Submit kiinni
voting.create.submitStart = Submit auki
voting.create.voteEnd = \u00C4\u00E4nestys kiinni
voting.create.voteStart = \u00C4\u00E4nestys auki
...@@ -84,13 +84,13 @@ public abstract class GenericCDIView implements Serializable { ...@@ -84,13 +84,13 @@ 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;
} }
protected void addFaceMessage(String string, Object... params) { protected void addFaceMessage(String string, Object... params) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(I18n.get(string, params))); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(I18n.get(string, params)));
} }
......
...@@ -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;
...@@ -43,7 +46,7 @@ public class ReaderView extends GenericCDIView { ...@@ -43,7 +46,7 @@ public class ReaderView extends GenericCDIView {
@Inject @Inject
private ReaderNameContainer namecontainer; private ReaderNameContainer namecontainer;
@EJB @EJB
private transient ReaderBeanLocal readerbean; private transient ReaderBeanLocal readerbean;
...@@ -78,7 +81,10 @@ public class ReaderView extends GenericCDIView { ...@@ -78,7 +81,10 @@ 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) {
event = readerbean.getEvent(eventid); event = readerbean.getEvent(eventid);
...@@ -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;
...@@ -115,10 +123,10 @@ public class ReaderView extends GenericCDIView { ...@@ -115,10 +123,10 @@ public class ReaderView extends GenericCDIView {
public void initReaderList() { public void initReaderList() {
if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS)) { if (super.requirePermissions(ShopPermission.SHOP_TO_OTHERS)) {
} }
} }
public List<Product> getAutoProducts() { public List<Product> getAutoProducts() {
List<Product> ret = new ArrayList<Product>(); List<Product> ret = new ArrayList<Product>();
...@@ -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;
} }
......
...@@ -73,10 +73,10 @@ public class UserValidator implements Serializable { ...@@ -73,10 +73,10 @@ public class UserValidator implements Serializable {
return; return;
} }
logger.info("Checking length"); logger.info("Checking length");
if (!firstpwd.equals(object)) { if (!firstpwd.equals(object)) {
message(context, ui, "userview.passwordsDontMatch"); message(context, ui, "userview.passwordsDontMatch");
} }
} }
logger.info("Done pwd"); logger.info("Done pwd");
} }
......
...@@ -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!