Commit fb8b8c2e by Tuukka Kivilahti

Merge remote-tracking branch 'origin/master'

2 parents e7532fc7 09fd35b4
......@@ -106,7 +106,7 @@ public class JaasBean implements MoyaRealmBeanRemote {
logger.info("logging in as anonymous!!!");
} else if (!user.checkPassword(password)) {
secubean.sendMessage(MoyaEventType.LOGIN_FAILED, eventUser, "Login failed: wrong password for username ", username);
secubean.sendMessage(MoyaEventType.LOGIN_FAILED, eventUser, "Login failed: wrong password for username: ", username);
eventUser = null;
user = null;
}
......@@ -125,6 +125,7 @@ public class JaasBean implements MoyaRealmBeanRemote {
eventUserFacade.flush();
eventUser.setCreator(eventUser);
}
secubean.sendMessage(MoyaEventType.LOGIN_SUCCESSFULL, eventUser, "User logged in with username: '", username, "' eventuser: ", eventUser);
} else {
secubean.sendMessage(MoyaEventType.LOGIN_FAILED, eventUserFacade.findByLogin(User.ANONYMOUS_LOGINNAME), "Login failed: Username not found: ", username);
}
......@@ -190,7 +191,7 @@ public class JaasBean implements MoyaRealmBeanRemote {
roleset.add(UserPermission.ANYUSER.getFullName());
if (usr == null) {
usr = permbean.getAnonEventUser();
roleset.add(SpecialPermission.ANONYMOUS.name());
}
......
......@@ -260,7 +260,7 @@ public class PlaceBean implements PlaceBeanLocal {
logger.warn("Reserving place {} with placeslot {}", place, slot);
slot.setPlace(place);
slot.setUsed(new Date());
} else {
} else if(!permbean.hasPermission(MapPermission.MANAGE_OTHERS)) { // we still can reserve places to other people
logger.warn("Not enough slots to reserve place {}", place);
// Not enough slots to reserve place
return false;
......
......@@ -215,10 +215,12 @@ public class ProductBean implements ProductBeanLocal {
if (!prod.getProductFlags().contains(ProductFlag.PREPAID_CREDIT))
{
if (prod.getPlaces() != null && !prod.getPlaces().isEmpty()) {
int totalcount = prod.getPlaces().size();
Long boughtSlots = slotfacade.totalSlotcount(prod);
int freeCount = totalcount - boughtSlots.intValue();
logger.info("Prodlimit totcnt {}, bought {}, free {}, prod {}", totalcount, boughtSlots, freeCount, prod);
Long selectableCount = placeFacade.countSelectable(prod);
Long unusedSlots = slotfacade.findUnusedSlotsCount(prod);
int freeCount = selectableCount.intValue() - unusedSlots.intValue();
logger.info("Prodlimit selectable {}, unused {}, free {}, prod {}", selectableCount, unusedSlots, freeCount, prod);
ret.put(prod.getId(), BigDecimal.valueOf(freeCount));
}
}
......
......@@ -158,6 +158,22 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
return getEm().createQuery(cq).getResultList();
}
public Long countSelectable(Product product) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<Place> root = cq.from(Place.class);
cq.select(cb.count(root));
cq.where(
cb.equal(root.get(Place_.product), product),
cb.isNull(root.get(Place_.releaseTime)),
cb.isNull(root.get(Place_.group)),
cb.isFalse(root.get(Place_.disabled))
);
return super.getSingleNullableResult(getEm().createQuery(cq));
}
public Long findCountForProduct(Product product) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
......@@ -167,10 +183,14 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
cq.where(
cb.equal(root.get(Place_.product), product),
cb.isFalse(root.get(Place_.disabled))
);
);
return super.getSingleNullableResult(getEm().createQuery(cq));
}
public Long countAvailable(EventMap map) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
......
......@@ -92,6 +92,27 @@ public class PlaceSlotFacade extends IntegerPkGenericFacade<PlaceSlot> {
return slot;
}
public Long findUnusedSlotsCount(Product prod) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> q = cb.createQuery(Long.class);
Root<PlaceSlot> root = q.from(PlaceSlot.class);
q.select(cb.count(root));
Path<Bill> bill = root.get(PlaceSlot_.bill);
Path<Calendar> billexp = bill.get(Bill_.expires);
q.where(cb.equal(root.get(PlaceSlot_.product), prod),
cb.or(cb.isNull(billexp),
cb.greaterThan(billexp, Calendar.getInstance())
),
cb.isNull(root.get(PlaceSlot_.place))
);
Long count = super.getSingleNullableResult(getEm().createQuery(q));
return count;
}
public Long totalSlotcount(Product prod) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> q = cb.createQuery(Long.class);
......
......@@ -11,7 +11,8 @@ public enum MoyaEventType {
BANKING_MESSAGE(MoyaEventSource.SHOP),
PLACE_ERROR(MoyaEventSource.PLACEMAP),
ACCOUNTEVENT_INFO(MoyaEventSource.USER),
USER_PERMISSION_VIOLATION(MoyaEventSource.USER),
USER_PERMISSION_VIOLATION(MoyaEventSource.USER),
LOGIN_SUCCESSFULL(MoyaEventSource.USER),
;
......
<!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:tools="http://java.sun.com/jsf/composite/tools" xmlns:bill="http://java.sun.com/jsf/composite/cditools/bills" xmlns:p="http://primefaces.org/ui" 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:tools="http://java.sun.com/jsf/composite/tools"
xmlns:bill="http://java.sun.com/jsf/composite/cditools/bills"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:body>
......@@ -14,39 +20,51 @@
<h1>#{i18n['page.bill.show.header']}</h1>
</ui:define>
<ui:define name="content">
<p:outputPanel id="billPanel">
<ui:fragment rendered="#{billEditView.bill.paid}">
<h:outputText value="#{i18n['bill.billIsPaid']}" />
<br />
<h:outputText value="#{i18n['bill.billPaidDate']}" />:
<p:outputPanel id="billPanel">
<ui:fragment rendered="#{billEditView.bill.paid}">
<h:outputText value="#{i18n['bill.billIsPaid']}" />
<br />
<h:outputText value="#{i18n['bill.billPaidDate']}" />:
<h:outputText value="#{billEditView.bill.paidDate}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</ui:fragment>
<br />
<bill:showBill bill="#{billEditView.bill}" />
<bill:verkkomaksubuttons rendered="#{!billEditView.bill.paid and !billEditView.bill.expired}"/>
<p:outputPanel rendered="#{billEditView.bill.foodwaveBill}">
<span class="notify"><h:outputText value="#{i18n['foodshop.canBuyToCounter']}" /></span>
</p:outputPanel>
<br />
<p:outputPanel rendered="#{!billEditView.bill.paid and !billEditView.bill.expired}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}"
timeZone="#{sessionHandler.timezone}" />
</h:outputText>
</ui:fragment>
<br />
<bill:showBill bill="#{billEditView.bill}" />
<bill:verkkomaksubuttons
rendered="#{!billEditView.bill.paid and !billEditView.bill.expired}" />
<p:outputPanel rendered="#{billEditView.bill.foodwaveBill}">
<span class="notify"><h:outputText
value="#{i18n['foodshop.canBuyToCounter']}" /></span>
</p:outputPanel>
<br />
<p:outputPanel
rendered="#{!billEditView.bill.paid and !billEditView.bill.expired}">
<h:form>
<p:commandButton id="cancelbtn" actionListener="#{billEditView.expireBill()}" onerror="location.reload(true);" value="#{i18n['bill.cancel']}" update=":billPanel">
<p:confirm header="Confirmation" message="Are you sure?" icon="ui-icon-alert" />
<p:commandButton id="cancelbtn"
actionListener="#{billEditView.expireBill()}"
onerror="location.reload(true);" value="#{i18n['bill.cancel']}"
update=":billPanel">
<p:confirm header="Confirmation" message="Are you sure?"
icon="ui-icon-alert" />
</p:commandButton>
</h:form>
</p:outputPanel>
<p:outputPanel rendered="#{billEditView.bill.user.accountBalance ge billEditView.bill.totalPrice}">
<p:outputPanel
rendered="#{billEditView.bill.user.accountBalance ge billEditView.bill.totalPrice}">
<h:form>
<p:commandButton id="buyCreditsButton" actionListener="#{billEditView.buyWithCredits()}" onerror="location.reload(true);" value="#{i18n['bill.markPaid.credits']}" update=":billPanel">
<p:confirm header="Confirmation" message="Are you sure?" icon="ui-icon-alert" />
<p:commandButton id="buyCreditsButton"
actionListener="#{billEditView.buyWithCredits()}"
onerror="location.reload(true);"
value="#{i18n['bill.markPaid.credits']}" update=":billPanel">
<p:confirm header="Confirmation" message="Are you sure?"
icon="ui-icon-alert" />
</p:commandButton>
</h:form>
</p:outputPanel>
......
......@@ -22,13 +22,12 @@
<!-- When called via ajax this needs to be already loaded!
-->
<script type="text/javascript" src="//payment.paytrail.com/js/payment-widget-v1.0.min.js"></script>
<script type="text/javascript">
function initPaymentButtons() {
SV.widget.initWithToken('svmpayment',
'#{billEditView.verkkomaksuFiToken.token}', {
width : '800'
});
}
</script>
</ui:fragment>
<ui:fragment rendered="#{billEditView.checkoutFiAvailable}">
......
<?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">
<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:attribute name="items" required="true" />
<composite:attribute name="commitValue" required="true" />
<composite:attribute name="commitaction" method-signature="java.lang.String action()" required="true" />
<composite:attribute name="commitaction"
method-signature="java.lang.String action()" required="true" />
</composite:interface>
<composite:implementation>
<!-- <h:outputScript target="head" library="script" name="jquery.min.js" /> -->
<!-- <h:outputScript target="head" library="script" name="shopscript.js" /> -->
<h:outputScript library="primefaces" name="jquery/jquery.js" />
<p:dataTable columnClasses="nowrap,numalign,numalign,numalign,nowrap" id="billcart" value="#{cc.attrs.items}" var="cart">
<p:dataTable columnClasses="nowrap,numalign,numalign,numalign,nowrap"
id="billcart" value="#{cc.attrs.items}" var="cart">
<p:column>
<f:facet name="header">
<h:outputText id="name" value="${i18n['product.name']}" />
......@@ -37,14 +45,18 @@
<h:outputText id="count" value="${i18n['product.cart.count']}" />
</f:facet>
<h:commandButton action="#{productShopView.addMinusOne}" value="#{i18n['productshop.minusOne']}">
<h:commandButton action="#{productShopView.addMinusOne}"
value="#{i18n['productshop.minusOne']}">
<f:ajax render="@form" />
</h:commandButton>
<p:inputText size="2" id="cartcount" escape="false" value="#{cart.count}">
<f:ajax render="@form" listener="#{productShopView.countChangeListener}" />
<p:inputText size="2" id="cartcount" escape="false"
value="#{cart.count}">
<f:ajax render="@form"
listener="#{productShopView.countChangeListener}" />
<f:convertNumber maxFractionDigits="2" minFractionDigits="0" />
</p:inputText>
<h:commandButton action="#{productShopView.addOne}" value="#{i18n['productshop.plusOne']}">
<h:commandButton action="#{productShopView.addOne}"
value="#{i18n['productshop.plusOne']}">
<f:ajax render="@form" />
</h:commandButton>
</p:column>
......@@ -56,8 +68,9 @@
<f:convertNumber maxFractionDigits="2" minFractionDigits="0" />
</h:outputText>
</p:column>
<p:column>
<h:dataTable styleClass="noborderTable" border="0" var="disc" value="#{cart.discounts}">
<p:column headerText="#{i18n['productshop.discounts']}">
<h:dataTable styleClass="noborderTable" border="0" var="disc"
value="#{cart.discounts}">
<p:column>
<h:outputText value="#{disc.shortdesc}" />
</p:column>
......@@ -79,7 +92,9 @@
</p:column>
<p:columnGroup type="footer">
<p:row>
<p:column style="text-align: right;" colspan="4" footerText="#{i18n['productshop.total']}" />
<p:column style="text-align: right;"
colspan="#{productShopView.hasLimits?5:4}"
footerText="#{i18n['productshop.total']}" />
<p:column>
<f:facet name="footer">
<h:outputText value="#{productShopView.cartPrice}">
......@@ -95,23 +110,30 @@
<br />
<h:panelGrid columns="3" rendered="#{productShopView.checkAllowStats}">
<h:outputText for="allowStats" value="#{i18n['bill.allowStatistics']}" />
<h:selectBooleanCheckbox id="allowStats" value="#{productShopView.allowStatistics}" />
<h:selectBooleanCheckbox id="allowStats"
value="#{productShopView.allowStatistics}" />
<h:message for="allowStats" />
</h:panelGrid>
<br />
<h:panelGroup rendered="#{productShopView.gatherBillInfo}">
<h2><p:outputLabel value="#{i18n['bill.notes.title']}" /> </h2>
<p:inputTextarea cols="50" value="#{productShopView.otherInfo}" label="#{i18n['otherInfo']}" />
<h2>
<p:outputLabel value="#{i18n['bill.notes.title']}" />
</h2>
<p:inputTextarea cols="50" value="#{productShopView.otherInfo}"
label="#{i18n['otherInfo']}" />
</h:panelGroup>
<br />
<!-- Paytrail needs to initialize after the ajax call is complete -->
<!-- This function is to be override by the paytrail init function -->
<script type="text/javascript">
function initPaymentButtons(){};
</script>
<p:commandButton oncomplete="initPaymentButtons()" onerror="location.reload(true);" action="#{cc.attrs.commitaction}" id="commitbutton-botton" value="#{cc.attrs.commitValue}" />
<!-- Paytrail needs to initialize after the ajax call is complete -->
<!-- This function is to be override by the paytrail init function -->
<script type="text/javascript">
function initPaymentButtons() {
};
</script>
<p:commandButton ajax="false" onerror="location.reload(true);"
action="#{cc.attrs.commitaction}" id="commitbutton-botton"
value="#{cc.attrs.commitValue}" />
......
......@@ -231,3 +231,8 @@ a.shopItem:active {
display: none !important;
visibility: hidden;
}
.noborderTable tr,.noborderTable tr td {
border: none;
padding: 0 0 1px 0;
}
......@@ -14,12 +14,7 @@
<ui:define name="title">
<h1>#{i18n['page.product.createBill.header']}</h1>
</ui:define>
<ui:define name="headerdata">
<ui:fragment rendered="#{billEditView.verkkomaksuFiAvailable}">
<script type="text/javascript" src="//payment.paytrail.com/js/payment-widget-v1.0.min.js"></script>
</ui:fragment>
</ui:define>
<ui:define name="content">
<ui:define name="content">
<h:form id="billshopform">
<products:shop commitaction="#{productShopView.commitBillCart()}" items="#{productShopView.shoppingcart}" commitValue="#{i18n['productshop.commit']}" />
......
......@@ -15,12 +15,7 @@
<ui:define name="title">
<h1>#{i18n['page.product.validateBillProducts.header']}</h1>
</ui:define>
<ui:define name="headerdata">
<ui:fragment rendered="#{billEditView.verkkomaksuFiAvailable}">
<script type="text/javascript" src="//payment.paytrail.com/js/payment-widget-v1.0.min.js"></script>
</ui:fragment>
</ui:define>
<ui:define name="content">
<bill:showBill bill="#{billEditView.bill}" />
......
......@@ -178,6 +178,8 @@ public class PlaceView extends GenericCDIView {
place = p;
}
}
} else {
super.addFaceMessage("Cannot reserve place for user");
}
} catch (BortalCatchableException e) {
......
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Sat Mar 30 17:56:44 EET 2013
shop.unitdiscount = Alennus
shop.customPrice = Uusi hinta
accountEvent.commit = Tallenna
actionlog.create.header = Create new actionmessage
......@@ -337,6 +335,9 @@ product.description = Kuvaus
product.providedRole = Product defines role
product.returnProductEdit = Return to product:
product.saved = Product saved
product.vat = ALV-%
productFlag.CREATE_NEW_PLACE_WHEN_BOUGHT = Luo uusi paikka ostettaessa
productshop.minusOne = -1
productshop.minusTen = -10
......@@ -349,6 +350,8 @@ refresh = P\u00E4ivit\u00E4
registerleaflet.title = Rekisteriseloste
required = Arvo vaaditaan
resetMail.header = Reset lost password
resetMail.username = Username
......@@ -364,6 +367,9 @@ roleView.showPermissioneditor = N\u00E4yt\u00E4 oikeusasetukset
save = Tallenna
shop.customPrice = Uusi hinta
shop.unitdiscount = Alennus
submenu.NotImplementedYet = Not implemented
submenu.admin.adduser = K\u00E4ytt\u00E4j\u00E4nlis\u00E4ys
submenu.admin.adduser.index = K\u00E4ytt\u00E4j\u00E4nlis\u00E4ys
......@@ -375,6 +381,7 @@ submenu.info.shop = Kauppa
submenu.lectureadmin.lectureParticipants = Tarkastele osallistujia
submenu.lectureadmin.manageLectureGroups = Hallinnoi
submenu.lectures.viewLectures = Ilmoittaudu
submenu.neomap.view = Paikkakartta
submenu.reports.basicStatistics = Tilastoja
subnavi.cards = \u0009\u0009
......@@ -388,25 +395,31 @@ topnavi.adminlectures = Kurssit ja luennot
topnavi.license = Lisenssikoodit
topnavi.userlectures = Kurssit ja luennot
user.cropImage = Crop
user.cancelInvite = Peruuta kutsu
user.createdmessage = K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistuneesti.
user.cropImage = Crop
user.email = S\u00E4hk\u00F6postiosoite
user.emailAgain = S\u00E4hk\u00F6posti (uudelleen)
user.emailAndUsername = Email (toimii k\u00E4ytt\u00E4j\u00E4tunnuksena)
user.imageUpload.imageNotFound = Select image to upload
user.info = K\u00E4ytt\u00E4j\u00E4
user.info = K\u00E4ytt\u00E4j\u00E4
user.invite.placeInvite.header = Liit\u00E4 paikka itsellesi
user.meta.box.title = Metadata
user.saveUserSelectableRoles = Tallenna
user.shirt.L = Unisex L
user.shirt.LadyL = Ladyfit L
user.shirt.LadyM = Ladyfit M
user.shirt.LadyS = Ladyfit S
user.shirt.L = Unisex L
user.shirt.LadyL = Ladyfit L
user.shirt.LadyM = Ladyfit M
user.shirt.LadyS = Ladyfit S
user.shirt.LadyXL = Ladyfit XL
user.shirt.LadyXS = Ladyfit XS
user.shirt.LadyXXL = Ladyfit XXL
user.shirt.M = Unisex M
user.shirt.S = Unisex S
user.shirt.XL = Unisex XL
user.shirt.XXL = Unisex XXL
user.shirt.XXXL = Unisex XXXL
user.shirt.M = Unisex M
user.shirt.S = Unisex S
user.shirt.XL = Unisex XL
user.shirt.XXL = Unisex XXL
user.shirt.XXXL = Unisex XXXL
user.shirt.select = Valitse yksi
user.shirtSize = Paidan koko
user.shirtSize = Paidan koko
user.unauthenticated = Kirjautumaton
user.userSelectableRoles = Valitse yksi
......@@ -416,16 +429,3 @@ usercart.showoverview = Vie tarkastusn\u00E4kym\u00E4\u00E4n
viewlectures.title = Kurssit ja luennot
yes = Kyll\u00E4
user.emailAndUsername=Email (toimii k\u00E4ytt\u00E4j\u00E4tunnuksena)
user.emailtooshortmessage=
user.emailsunmatch=
user.emailAgain=S\u00E4hk\u00F6posti (uudelleen)
user.email=S\u00E4hk\u00F6postiosoite
required=Arvo vaaditaan
user.createdmessage=K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistuneesti.
product.vat=ALV-%
productFlag.CREATE_NEW_PLACE_WHEN_BOUGHT=Luo uusi paikka ostettaessa
submenu.neomap.view=Paikkakartta
user.cancelInvite=Peruuta kutsu
user.invite.placeInvite.header=Liit\u00E4 paikka itsellesi
userview.userExistsByEmail=
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Sat Mar 30 17:56:44 EET 2013
......@@ -994,6 +995,7 @@ productsShopView.readBarcode = Read
productshop.billCreated = Bill created
productshop.commit = Buy
productshop.discounts = Discounts
productshop.limits = Available
productshop.minusOne = -1
productshop.minusTen = -10
......@@ -1042,6 +1044,8 @@ rejectcard.subject = Subject
rejectcard.toAddr = Email address
rejectcard.toName = Name
required = Required
resetMail.body = You can change a forgotten password by inserting your username or email address to the field below. A link where you can change the password will be sent to the email address associated to that.
resetMail.email = Email address
resetMail.header = Reset lost password
......@@ -1103,6 +1107,7 @@ shop.cashback = Cashback
shop.confirmCreditBuy = Are You sure ?
shop.count = Q
shop.currentBalance = Current balance
shop.customPrice = new price
shop.price = price
shop.product = Product
shop.readBarcode = Read
......@@ -1111,6 +1116,7 @@ shop.shoppingcartCommitted = Products bought
shop.toAccountValue = To account
shop.totalPrice = Total
shop.transactionTotal = Transaction total
shop.unitdiscount = Discount
shop.user = Selling to
sidebar.bill.list = My bills
......@@ -1197,6 +1203,7 @@ submenu.license.manageCodes = Manage codes
submenu.license.viewCodes = View codes
submenu.map.create = Create map
submenu.map.list = List maps
submenu.neomap.view = Map
submenu.networkassociation.index = Associations
submenu.orgrole.create = Create organisationrole
submenu.orgrole.list = Organisation roles
......@@ -1430,6 +1437,7 @@ user.age = Age
user.bank = Bank
user.bankaccount = Bank number
user.birthday = Birthday
user.cancelInvite = Cancel invite
user.cardPower = Usertype
user.changePassword = Change password
user.changepassword.forUser = For user
......@@ -1444,6 +1452,10 @@ user.edit = Edit
user.edit.gameids = Edit GameIDs
user.edit.title = My information
user.email = Email
user.emailAgain = Email (again)
user.emailAndUsername = Email (works also as username)
user.emailsunmatch = Email addresses does not match.
user.emailtooshortmessage = Email must be atleast {0} characters long.
user.firstNames = Firstname
user.food.title = Choose Menu
user.foodwave.products.title = Choose Products
......@@ -1467,6 +1479,7 @@ user.insertToken = Insert token
user.invalidLoginCredentials = Invalid user credentials
user.invite = Invite
user.invite.header = Accept invitation
user.invite.placeInvite.header = Receive sendet place
user.invitemail = Email address
user.lastName = Lastname
user.login = Login
......@@ -1559,12 +1572,13 @@ usertitle.managingUser = Shop
userview.header = Users
userview.invalidEmail = Invalid email address
userview.loginstringFaulty = Username has to be atleast 2 characters long\!
userview.loginstringFaulty = Username has to be atleast 2 characters long!
userview.oldPasswordError = Invalid password!
userview.passwordTooShort = Password has to be atleast {0} characters long\!
userview.passwordTooShort = Password has to be atleast {0} characters long!
userview.passwordsChanged = Password changed
userview.passwordsDontMatch = Passwords do not match! Please try again!
userview.userExists = Username already exists\! You may already have an account.
userview.userExists = Username already exists! You may already have an account.
userview.userExistsByEmail = Email already exists! You may already have an account.
viewexpired.body = Please login again.
viewexpired.title = Login expired. Please login again.
......@@ -1614,15 +1628,3 @@ voting.create.voteEnd = Voting close
voting.create.voteStart = Voting start
yes = Yes
shop.unitdiscount=Discount
shop.customPrice=new price
user.emailAndUsername=Email (works also as username)
user.emailtooshortmessage=Email must be atleast {0} characters long.
user.emailsunmatch=Email addresses does not match.
user.emailAgain=Email (again)
required=Required
usercart.showoverview=
submenu.neomap.view=Map
user.cancelInvite=Cancel invite
user.invite.placeInvite.header=Receive sendet place
userview.userExistsByEmail=Email already exists\! You may already have an account.
#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#Sat Mar 30 17:56:44 EET 2013
......@@ -979,6 +980,7 @@ productsShopView.readBarcode = Lue
productshop.billCreated = Lasku luotu
productshop.commit = Osta
productshop.discounts = Alennukset
productshop.limits = Vapaana
productshop.minusOne = -1
productshop.minusTen = -10
......@@ -1027,6 +1029,8 @@ rejectcard.subject = Viestin otsikko
rejectcard.toAddr = S\u00E4hk\u00F6postiosoite
rejectcard.toName = Nimi
required = Vaaditaan
resetMail.body = Voit vaihtaa unohtuneen salasanan sy\u00F6tt\u00E4m\u00E4ll\u00E4 k\u00E4ytt\u00E4j\u00E4tunnuksesi tai tunnukseen liitetyn s\u00E4hk\u00F6postiosoitteen 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.email = S\u00E4hk\u00F6postiosoite
resetMail.header = Salasana unohtunut?
......@@ -1085,6 +1089,7 @@ shop.cashback = Takaisin
shop.confirmCreditBuy = Varmastikko ?
shop.count = Lkm
shop.currentBalance = T\u00E4m\u00E4nhetkinen saldo
shop.customPrice = Uusi hinta
shop.price = Hinta
shop.product = Tuote
shop.readBarcode = Lue
......@@ -1092,6 +1097,7 @@ shop.shoppingcartCommitted = Tuotteet ostettu
shop.toAccountValue = Tilille
shop.totalPrice = Yhteens\u00E4
shop.transactionTotal = Tapahtuma yhteens\u00E4
shop.unitdiscount = Alennus
shop.user = Myyd\u00E4\u00E4n
sidebar.bill.list = Omat laskut
......@@ -1177,6 +1183,7 @@ submenu.license.manageCodes = Hallinnoi lisenssej\u00E4
submenu.license.viewCodes = N\u00E4yt\u00E4 koodit
submenu.map.create = Uusi kartta
submenu.map.list = N\u00E4yt\u00E4 kartat
submenu.neomap.view = Paikkakartta
submenu.networkassociation.index = Assosiaatiot
submenu.orgrole.create = Luo j\u00E4rjest\u00E4j\u00E4rooli
submenu.orgrole.list = J\u00E4rjest\u00E4j\u00E4roolit
......@@ -1413,6 +1420,7 @@ user.age = Ik\u00E4
user.bank = Pankki
user.bankaccount = Pankkitili
user.birthday = Syntym\u00E4aika
user.cancelInvite = Peruuta kutsu
user.cardPower = K\u00E4ytt\u00E4j\u00E4tyyppi
user.changePassword = Vaihda salasana
user.changepassword.forUser = K\u00E4ytt\u00E4j\u00E4lle
......@@ -1427,6 +1435,10 @@ user.edit = Muokkaa
user.edit.gameids = Muokkaa peli-id merkint\u00F6j\u00E4
user.edit.title = Omat tiedot
user.email = S\u00E4hk\u00F6posti
user.emailAgain = S\u00E4hk\u00F6posti (uudelleen)
user.emailAndUsername = S\u00E4hk\u00F6posti (toimii my\u00F6s k\u00E4ytt\u00E4j\u00E4tunnuksena)
user.emailsunmatch = S\u00E4hk\u00F6postiosoitteet eiv\u00E4t t\u00E4sm\u00E4\u00E4.
user.emailtooshortmessage = S\u00E4hk\u00F6postin tarvitsee olla v\u00E4hint\u00E4\u00E4n {0} merkki\u00E4 pitk\u00E4.
user.firstNames = Etunimi
user.food.title = Valitse Menu
user.foodwave.products.title = Valitse tuotteet
......@@ -1451,6 +1463,7 @@ user.insert = Sy\u00F6t\u00E4 arvo
user.invalidLoginCredentials = K\u00E4ytt\u00E4j\u00E4tunnus tai salasana v\u00E4\u00E4rin.
user.invite = Kutsu
user.invite.header = Luo k\u00E4ytt\u00E4j\u00E4 kutsusta
user.invite.placeInvite.header = Vastaanota l\u00E4hetetty paikka
user.invitemail = S\u00E4hk\u00F6postiosoite
user.lastName = Sukunimi
user.login = K\u00E4ytt\u00E4j\u00E4tunnus
......@@ -1540,13 +1553,14 @@ userlist.usersWithUnusedCodes = Lista t\u00E4m\u00E4n tapahtuman k\u00E4ytt\u00E
usertitle.managingUser = Kauppa
userview.invalidEmail = Virheeliinen s\u00E4hk\u00F6postiosoite
userview.invalidEmail = Virheellinen s\u00E4hk\u00F6postiosoite
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.passwordTooShort = Salasana liian lyhyt. Pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n {0} merkki\u00E4 pitk\u00E4.
userview.passwordsChanged = Salasana vaihdettu
userview.passwordsDontMatch = Salasanat eiv\u00E4t ole samat! Ole hyv\u00E4 ja sy\u00F6t\u00E4 salasanat uudelleen.
userview.userExists = K\u00E4ytt\u00E4j\u00E4tunnus on jo olemassa. Sinulla saattaa jo olla tunnus j\u00E4rjestelm\u00E4ss\u00E4.
userview.userExistsByEmail = S\u00E4hk\u00F6posti on jo olemassa. Sinulla saattaa jo olla tunnus j\u00E4rjestelm\u00E4ss\u00E4.
viewexpired.body = Ole hyv\u00E4 ja kirjaudu sis\u00E4\u00E4n uudelleen.
viewexpired.title = N\u00E4kym\u00E4 on vanhentunut
......@@ -1596,14 +1610,3 @@ voting.create.voteEnd = \u00C4\u00E4nestys kiinni
voting.create.voteStart = \u00C4\u00E4nestys auki
yes = Kyll\u00E4
shop.unitdiscount=Alennus
shop.customPrice=Uusi hinta
user.emailAndUsername=S\u00E4hk\u00F6posti (toimii my\u00F6s k\u00E4ytt\u00E4j\u00E4tunnuksena)
user.emailtooshortmessage=S\u00E4hk\u00F6postin tarvitsee olla v\u00E4hint\u00E4\u00E4n {0} merkki\u00E4 pitk\u00E4.
user.emailsunmatch=S\u00E4hk\u00F6postiosoitteet eiv\u00E4t t\u00E4sm\u00E4\u00E4.
user.emailAgain=S\u00E4hk\u00F6posti (uudelleen)
required=Vaaditaan
submenu.neomap.view=Paikkakartta
user.cancelInvite=Peruuta kutsu
user.invite.placeInvite.header=Vastaanota l\u00E4hetetty paikka
userview.userExistsByEmail=S\u00E4hk\u00F6posti on jo olemassa. Sinulla saattaa jo olla tunnus j\u00E4rjestelm\u00E4ss\u00E4.
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!