Commit c6b6359c by Tuomas Riihimäki

Initial stream version...

There I fixed it....
1 parent 3bdc3b87
Showing with 2249 additions and 845 deletions
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
...@@ -10,12 +11,14 @@ import java.util.Map.Entry; ...@@ -10,12 +11,14 @@ import java.util.Map.Entry;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed; import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.ShopPermission; import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.facade.AccountEventFacade; import fi.insomnia.bortal.facade.AccountEventFacade;
import fi.insomnia.bortal.model.AccountEvent; import fi.insomnia.bortal.model.AccountEvent;
...@@ -28,7 +31,7 @@ import fi.insomnia.bortal.model.User; ...@@ -28,7 +31,7 @@ import fi.insomnia.bortal.model.User;
* Session Bean implementation class AccountEventBean * Session Bean implementation class AccountEventBean
*/ */
@Stateless @Stateless
@DeclareRoles({ UserPermission.S_VIEW_ACCOUNTEVENTS }) @DeclareRoles({ UserPermission.S_VIEW_ACCOUNTEVENTS, SpecialPermission.S_USER })
public class AccountEventBean implements AccountEventBeanLocal { public class AccountEventBean implements AccountEventBeanLocal {
@EJB @EJB
...@@ -132,4 +135,40 @@ public class AccountEventBean implements AccountEventBeanLocal { ...@@ -132,4 +135,40 @@ public class AccountEventBean implements AccountEventBeanLocal {
return ret; return ret;
} }
@Override
@RolesAllowed(SpecialPermission.S_USER)
public BigDecimal getAccountBalance(User user) {
if (user == null) {
user = permbean.getCurrentUser();
}
if (!permbean.isCurrentUser(user) && !permbean.hasPermission(UserPermission.VIEW_ACCOUNTEVENTS)) {
throw new EJBAccessException("No enough rights to view accountevents");
}
List<AccountEvent> acs = accountfacade.getAccountEvents(user);
BigDecimal ret = BigDecimal.ZERO;
if (acs != null)
{
for (AccountEvent ac : acs) {
ret = ret.add(ac.getTotal()).setScale(2, RoundingMode.HALF_UP);
}
}
return ret;
}
@Override
@RolesAllowed(SpecialPermission.S_USER)
public List<AccountEvent> getAccountEvents(User user) {
if (user == null) {
user = permbean.getCurrentUser();
}
if (!permbean.isCurrentUser(user) && !permbean.hasPermission(UserPermission.VIEW_ACCOUNTEVENTS)) {
throw new EJBAccessException("No enough rights to view accountevents");
}
return accountfacade.getAccountEvents(user);
}
} }
...@@ -12,8 +12,6 @@ import javax.ejb.EJB; ...@@ -12,8 +12,6 @@ import javax.ejb.EJB;
import javax.ejb.EJBAccessException; import javax.ejb.EJBAccessException;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -56,8 +54,6 @@ public class BillBean implements BillBeanLocal { ...@@ -56,8 +54,6 @@ public class BillBean implements BillBeanLocal {
private EventBeanLocal eventbean; private EventBeanLocal eventbean;
@EJB @EJB
private BillLineFacade billLineFacade; private BillLineFacade billLineFacade;
@PersistenceContext
private EntityManager em;
@EJB @EJB
private PermissionBeanLocal permbean; private PermissionBeanLocal permbean;
...@@ -87,7 +83,6 @@ public class BillBean implements BillBeanLocal { ...@@ -87,7 +83,6 @@ public class BillBean implements BillBeanLocal {
@Override @Override
@RolesAllowed(BillPermission.S_VIEW_OWN) @RolesAllowed(BillPermission.S_VIEW_OWN)
public Bill findById(int id) { public Bill findById(int id) {
LanEvent event = eventbean.getCurrentEvent();
if (id <= 0) { if (id <= 0) {
return null; return null;
} }
...@@ -218,7 +213,7 @@ public class BillBean implements BillBeanLocal { ...@@ -218,7 +213,7 @@ public class BillBean implements BillBeanLocal {
ac.setSeller(permbean.getCurrentUser()); ac.setSeller(permbean.getCurrentUser());
bill.setAccountEvent(ac); bill.setAccountEvent(ac);
bill.setPaidDate(when); bill.setPaidDate(when.getTime());
bill = billFacade.merge(bill); bill = billFacade.merge(bill);
...@@ -246,7 +241,7 @@ public class BillBean implements BillBeanLocal { ...@@ -246,7 +241,7 @@ public class BillBean implements BillBeanLocal {
@Override @Override
@RolesAllowed({ BillPermission.S_CREATE_BILL, BillPermission.S_WRITE_ALL }) @RolesAllowed({ BillPermission.S_CREATE_BILL, BillPermission.S_WRITE_ALL })
public void createBill(Bill bill) { public void createBill(Bill bill) {
if (!permbean.hasPermission(BillPermission.WRITE_ALL) || !permbean.isCurrentUser(bill.getUser())) { if (!permbean.isCurrentUser(bill.getUser()) && !permbean.hasPermission(BillPermission.WRITE_ALL)) {
loggingBean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enought rights to create bill for user "); loggingBean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enought rights to create bill for user ");
throw new EJBAccessException("Could not create bill for another user"); throw new EJBAccessException("Could not create bill for another user");
} }
...@@ -255,6 +250,11 @@ public class BillBean implements BillBeanLocal { ...@@ -255,6 +250,11 @@ public class BillBean implements BillBeanLocal {
user.setBills(new ArrayList<Bill>()); user.setBills(new ArrayList<Bill>());
} }
user.getBills().add(bill); user.getBills().add(bill);
generateBillNumber(bill);
}
@RolesAllowed({ BillPermission.S_WRITE_ALL })
public Bill save(Bill bill) {
return billFacade.merge(bill);
} }
} }
...@@ -103,6 +103,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -103,6 +103,7 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
logger.info("Checking printed card"); logger.info("Checking printed card");
user = userfacade.find(user.getId()); user = userfacade.find(user.getId());
LanEvent currEvent = eventBean.getCurrentEvent(); LanEvent currEvent = eventBean.getCurrentEvent();
List<PrintedCard> myCards = printedcardfacade.findForUser(currEvent, user); List<PrintedCard> myCards = printedcardfacade.findForUser(currEvent, user);
...@@ -137,7 +138,8 @@ public class CardTemplateBean implements CardTemplateBeanLocal { ...@@ -137,7 +138,8 @@ public class CardTemplateBean implements CardTemplateBeanLocal {
biggestCard.setEnabled(false); biggestCard.setEnabled(false);
// biggestCard = printedcardfacade.merge(biggestCard); // biggestCard = printedcardfacade.merge(biggestCard);
} }
PrintedCard pc = new PrintedCard(currEvent); PrintedCard pc = new PrintedCard();
pc.setEvent(currEvent);
pc.setTemplate(roleCard); pc.setTemplate(roleCard);
pc.setUser(user); pc.setUser(user);
......
...@@ -15,9 +15,12 @@ import fi.insomnia.bortal.enums.apps.SpecialPermission; ...@@ -15,9 +15,12 @@ import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.facade.EventFacade; import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventOrganiserFacade; import fi.insomnia.bortal.facade.EventOrganiserFacade;
import fi.insomnia.bortal.facade.LanEventDomainFacade; import fi.insomnia.bortal.facade.LanEventDomainFacade;
import fi.insomnia.bortal.facade.LanEventPropertyFacade;
import fi.insomnia.bortal.model.EventOrganiser; import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LanEventDomain; import fi.insomnia.bortal.model.LanEventDomain;
import fi.insomnia.bortal.model.LanEventProperty;
import fi.insomnia.bortal.model.LanEventPropertyKey;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
/** /**
...@@ -45,6 +48,8 @@ public class EventBean implements EventBeanLocal { ...@@ -45,6 +48,8 @@ public class EventBean implements EventBeanLocal {
private PermissionBeanLocal permbean; private PermissionBeanLocal permbean;
@EJB @EJB
private LanEventDomainFacade domainfacade; private LanEventDomainFacade domainfacade;
@EJB
private LanEventPropertyFacade eventPropertyFacade;
@Override @Override
public LanEvent getEventByHostname(String hostname) { public LanEvent getEventByHostname(String hostname) {
...@@ -93,7 +98,6 @@ public class EventBean implements EventBeanLocal { ...@@ -93,7 +98,6 @@ public class EventBean implements EventBeanLocal {
LanEvent ret = null; LanEvent ret = null;
if (BortalLocalContextHolder.getHostnameId() != null) { if (BortalLocalContextHolder.getHostnameId() != null) {
ret = eventFacade.find(BortalLocalContextHolder.getHostnameId()); ret = eventFacade.find(BortalLocalContextHolder.getHostnameId());
if (ret != null) { if (ret != null) {
return ret; return ret;
...@@ -105,8 +109,7 @@ public class EventBean implements EventBeanLocal { ...@@ -105,8 +109,7 @@ public class EventBean implements EventBeanLocal {
} }
LanEventDomain domain = domainfacade.findByDomain(hostname); LanEventDomain domain = domainfacade.findByDomain(hostname);
if (domain != null) if (domain != null) {
{
ret = domain.getEvent(); ret = domain.getEvent();
} }
...@@ -115,6 +118,7 @@ public class EventBean implements EventBeanLocal { ...@@ -115,6 +118,7 @@ public class EventBean implements EventBeanLocal {
} }
BortalLocalContextHolder.setHostnameId(ret.getId()); BortalLocalContextHolder.setHostnameId(ret.getId());
logger.debug("Got event {} from hostname {}", ret.getName(), hostname);
return ret; return ret;
} }
...@@ -139,4 +143,22 @@ public class EventBean implements EventBeanLocal { ...@@ -139,4 +143,22 @@ public class EventBean implements EventBeanLocal {
return eventFacade.flushCache(); return eventFacade.flushCache();
} }
@Override
public LanEventProperty getProperty(LanEventPropertyKey property) {
return eventPropertyFacade.find(getCurrentEvent(), property);
}
@Override
public String getPropertyString(LanEventPropertyKey property)
{
LanEventProperty retProp = eventPropertyFacade.find(getCurrentEvent(), property);
String ret = null;
if (retProp == null) {
ret = property.getDefaultvalue();
} else {
ret = retProp.getTextvalue();
}
return ret;
}
} }
...@@ -64,16 +64,14 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote { ...@@ -64,16 +64,14 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
@Override @Override
public boolean authenticate(String username, String password) { public boolean authenticate(String username, String password) {
logger.warn("Trying to login as {}", username);
boolean ret = (tryLogin(username, password) != null); boolean ret = (tryLogin(username, password) != null);
return ret; return ret;
} }
@Override @Override
public Enumeration<String> getGroupNames(String user) { public Enumeration<String> getGroupNames(String user) {
logger.info("Fetching groupNames for user {}", user); logger.info("Fetching groupNames for user {} event {}", user, eventbean.getCurrentEvent().getName());
User usr = userbean.getUser(user); User usr = userfacade.findByLogin(user);
HashSet<String> roleset = new HashSet<String>(); HashSet<String> roleset = new HashSet<String>();
roleset.add(UserPermission.ANYUSER.getFullName()); roleset.add(UserPermission.ANYUSER.getFullName());
......
...@@ -52,14 +52,14 @@ public class MailMessageBean implements MessageListener { ...@@ -52,14 +52,14 @@ public class MailMessageBean implements MessageListener {
logger.debug("Got message {}", mailmsg.getToName()); logger.debug("Got message {}", mailmsg.getToName());
if (BortalLocalContextHolder.isInDevelopmentMode()) { if (BortalLocalContextHolder.isInDevelopmentMode()) {
String dmessage = " To: " String dmessage = " To: "
+ mailmsg.getTo() + "\n Subject: " + mailmsg.getTo() + "\n Subject: "
+ mailmsg.getSubject() + "\n Text: " + mailmsg.getSubject() + "\n Text: "
+ mailmsg.getMessage() + "\n"; + mailmsg.getMessage() + "\n";
logger.debug("Not sendet mail (debug -mode): {}", dmessage); logger.debug("Not sendet mail (debug -mode): {}", dmessage);
} else { } else {
MimeMessage msg = new MimeMessage(mailSession); MimeMessage msg = new MimeMessage(mailSession);
msg.setSubject(mailmsg.getSubject()); msg.setSubject(mailmsg.getSubject());
msg.setFrom(mailmsg.getFrom()); msg.setFrom(mailmsg.getFrom());
...@@ -70,15 +70,11 @@ public class MailMessageBean implements MessageListener { ...@@ -70,15 +70,11 @@ public class MailMessageBean implements MessageListener {
} }
} catch (JMSException e) { } catch (JMSException e) {
logger.debug("Error receiving jms for {}", mailmsg, e); logger.warn("Error receiving jms for {}", mailmsg, e);
} catch (MessagingException e) { } catch (MessagingException e) {
logger.debug( logger.warn("Messaging Exception exception while sending mail to " + mailmsg, e);
"Unsupported encoding exception while sending mail to {}",
mailmsg, e);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
logger.debug( logger.warn("Unsupported encoding exception while sending mail to {}" + mailmsg, e);
"Unsupported encoding exception while sending mail to {}",
mailmsg, e);
} }
} }
......
...@@ -12,6 +12,7 @@ import org.slf4j.Logger; ...@@ -12,6 +12,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.BillPermission; import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission; import fi.insomnia.bortal.enums.apps.PollPermission;
import fi.insomnia.bortal.enums.apps.ShopPermission; import fi.insomnia.bortal.enums.apps.ShopPermission;
...@@ -68,6 +69,12 @@ public class Menubean implements MenubeanLocal { ...@@ -68,6 +69,12 @@ public class Menubean implements MenubeanLocal {
frontTopnavi.addPage(menuitemfacade.findOrCreate("/index"), UserPermission.ANYUSER); frontTopnavi.addPage(menuitemfacade.findOrCreate("/index"), UserPermission.ANYUSER);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/create"), UserPermission.CREATE_NEW); frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/create"), UserPermission.CREATE_NEW);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/sendResetMail"), UserPermission.LOGIN); frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/sendResetMail"), UserPermission.LOGIN);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/invite"), UserPermission.INVITE_USERS);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/permissionDenied"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/login"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/loginError"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/logout"), null).setVisible(false);
frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/logoutResponse"), null).setVisible(false);
MenuNavigation userTopnavi = usernavi.addPage(null, null); MenuNavigation userTopnavi = usernavi.addPage(null, null);
userTopnavi.setKey("topnavi.user"); userTopnavi.setKey("topnavi.user");
...@@ -93,7 +100,7 @@ public class Menubean implements MenubeanLocal { ...@@ -93,7 +100,7 @@ public class Menubean implements MenubeanLocal {
MenuNavigation adminnavi = new MenuNavigation(ev, "supernavi.admin"); MenuNavigation adminnavi = new MenuNavigation(ev, "supernavi.admin");
navifacade.create(adminnavi); navifacade.create(adminnavi);
MenuNavigation adminuser = adminnavi.addPage(null, null); MenuNavigation adminuser = adminnavi.addPage(null, null);
adminuser.setKey("topnavi.usermgmt");
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL).setHeader("submenu.user.manageuserlinks"); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL).setHeader("submenu.user.manageuserlinks");
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL); adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL);
adminuser.addPage(menuitemfacade.findOrCreate("/role/list"), UserPermission.READ_ROLES).setHeader("submenu.user.rolelinks"); adminuser.addPage(menuitemfacade.findOrCreate("/role/list"), UserPermission.READ_ROLES).setHeader("submenu.user.rolelinks");
...@@ -124,6 +131,12 @@ public class Menubean implements MenubeanLocal { ...@@ -124,6 +131,12 @@ public class Menubean implements MenubeanLocal {
prodnavi.addPage(menuitemfacade.findOrCreate("/product/list"), ShopPermission.LIST_ALL_PRODUCTS); prodnavi.addPage(menuitemfacade.findOrCreate("/product/list"), ShopPermission.LIST_ALL_PRODUCTS);
prodnavi.addPage(menuitemfacade.findOrCreate("/product/create"), ShopPermission.MANAGE_PRODUCTS); prodnavi.addPage(menuitemfacade.findOrCreate("/product/create"), ShopPermission.MANAGE_PRODUCTS);
prodnavi.addPage(menuitemfacade.findOrCreate("/product/createDiscount"), null).setVisible(false); prodnavi.addPage(menuitemfacade.findOrCreate("/product/createDiscount"), null).setVisible(false);
MenuNavigation contentnavi = adminnavi.addPage(null, null);
contentnavi.setKey("topnavi.contents");
contentnavi.addPage(menuitemfacade.findOrCreate("/pages/list"), ContentPermission.MANAGE_PAGES);
contentnavi.addPage(menuitemfacade.findOrCreate("/pages/create"), ContentPermission.MANAGE_PAGES);
} }
@Override @Override
......
...@@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory; ...@@ -15,6 +15,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.BillPermission; import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.enums.apps.ContentPermission; import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.enums.apps.IAppPermission; import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.enums.apps.LayoutPermission;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission; import fi.insomnia.bortal.enums.apps.PollPermission;
import fi.insomnia.bortal.enums.apps.ShopPermission; import fi.insomnia.bortal.enums.apps.ShopPermission;
...@@ -38,6 +39,7 @@ import fi.insomnia.bortal.model.User; ...@@ -38,6 +39,7 @@ import fi.insomnia.bortal.model.User;
UserPermission.S_READ_ROLES, UserPermission.S_READ_ROLES,
UserPermission.S_ANYUSER, UserPermission.S_ANYUSER,
UserPermission.S_MANAGE_HTTP_SESSION, UserPermission.S_MANAGE_HTTP_SESSION,
UserPermission.S_INVITE_USERS,
MapPermission.S_VIEW, MapPermission.S_VIEW,
MapPermission.S_MANAGE_MAPS, MapPermission.S_MANAGE_MAPS,
...@@ -70,7 +72,10 @@ import fi.insomnia.bortal.model.User; ...@@ -70,7 +72,10 @@ import fi.insomnia.bortal.model.User;
TerminalPermission.S_TERMINAL, TerminalPermission.S_TERMINAL,
TerminalPermission.S_CASHIER_TERMINAL, TerminalPermission.S_CASHIER_TERMINAL,
TerminalPermission.S_CUSTOMER_TERMINAL, TerminalPermission.S_CUSTOMER_TERMINAL,
TerminalPermission.S_SELFHELP_TERMINAL TerminalPermission.S_SELFHELP_TERMINAL,
LayoutPermission.S_MANAGE_MENU,
}) })
public class PermissionBean implements PermissionBeanLocal { public class PermissionBean implements PermissionBeanLocal {
......
...@@ -78,6 +78,8 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -78,6 +78,8 @@ public class PlaceBean implements PlaceBeanLocal {
private UserFacade userfacade; private UserFacade userfacade;
@EJB @EJB
private LoggingBeanLocal loggerbean; private LoggingBeanLocal loggerbean;
@EJB
private AccountEventBeanLocal acbean;
@Override @Override
@RolesAllowed(MapPermission.S_MANAGE_MAPS) @RolesAllowed(MapPermission.S_MANAGE_MAPS)
...@@ -236,9 +238,10 @@ public class PlaceBean implements PlaceBeanLocal { ...@@ -236,9 +238,10 @@ public class PlaceBean implements PlaceBeanLocal {
// PlaceGroup pg = pgbean.createPlaceGroup(user); // PlaceGroup pg = pgbean.createPlaceGroup(user);
BigDecimal totalprice = addAndCalcPrice(user, null); BigDecimal totalprice = addAndCalcPrice(user, null);
BigDecimal balance = user.getAccountBalance(); BigDecimal balance = acbean.getAccountBalance(user);
if (balance.compareTo(totalprice) < 0) { if (balance.compareTo(totalprice) < 0) {
logger.info("User {} Could not buy things because account balance {} is too low for purchase {}", new Object[] { user, balance, totalprice }); logger.info("User {} Could not buy things because account balance {} is too low for purchase {}", new Object[] { user, balance, totalprice });
} }
for (Entry<Product, Integer> line : getPlaceProductcount(places).entrySet()) { for (Entry<Product, Integer> line : getPlaceProductcount(places).entrySet()) {
......
...@@ -66,7 +66,7 @@ public class ProductBean implements ProductBeanLocal { ...@@ -66,7 +66,7 @@ public class ProductBean implements ProductBeanLocal {
@Override @Override
@RolesAllowed(ShopPermission.S_LIST_USERPRODUCTS) @RolesAllowed(ShopPermission.S_LIST_USERPRODUCTS)
public List<Product> listUserShoppableProducts() { public List<Product> listUserShoppableProducts() {
return productFacade.findPrepaidProducts(eventBean.getCurrentEvent()); return productFacade.findPrepaidProducts();
} }
@Override @Override
......
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.facade.SitePageFacade; import fi.insomnia.bortal.facade.SitePageFacade;
import fi.insomnia.bortal.model.PageContent; import fi.insomnia.bortal.model.PageContent;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.SitePage; import fi.insomnia.bortal.model.SitePage;
/** /**
...@@ -16,6 +25,12 @@ import fi.insomnia.bortal.model.SitePage; ...@@ -16,6 +25,12 @@ import fi.insomnia.bortal.model.SitePage;
*/ */
@Stateless @Stateless
@LocalBean @LocalBean
@DeclareRoles({
ContentPermission.S_MANAGE_PAGES,
ContentPermission.S_MANAGE_NEWS,
ContentPermission.S_MANAGE_ACTIONLOG,
})
public class SitePageBean implements SitePageBeanLocal { public class SitePageBean implements SitePageBeanLocal {
/** /**
...@@ -33,24 +48,26 @@ public class SitePageBean implements SitePageBeanLocal { ...@@ -33,24 +48,26 @@ public class SitePageBean implements SitePageBeanLocal {
@EJB @EJB
private PermissionBeanLocal permbean; private PermissionBeanLocal permbean;
@EJB
private UserBean userbean;
@Override private Logger logger = LoggerFactory.getLogger(SitePageBean.class);
public SitePage find(String siteName) {
return sitepagefacade.find(siteName);
}
@Override @Override
@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
public void create(SitePage sitepage) { public void create(SitePage sitepage) {
sitepage.setEvent(eventbean.getCurrentEvent()); sitepage.setEvent(eventbean.getCurrentEvent());
sitepagefacade.create(sitepage); sitepagefacade.create(sitepage);
} }
@Override @Override
@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
public SitePage save(SitePage sitepage) { public SitePage save(SitePage sitepage) {
return sitepagefacade.merge(sitepage); return sitepagefacade.merge(sitepage);
} }
@Override @Override
@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
public PageContent createContent(SitePage sitepage) { public PageContent createContent(SitePage sitepage) {
sitepage = sitepagefacade.find(sitepage.getId()); sitepage = sitepagefacade.find(sitepage.getId());
PageContent ret = new PageContent(sitepage); PageContent ret = new PageContent(sitepage);
...@@ -75,8 +92,45 @@ public class SitePageBean implements SitePageBeanLocal { ...@@ -75,8 +92,45 @@ public class SitePageBean implements SitePageBeanLocal {
} }
@Override @Override
@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
public List<SitePage> findAll() { public List<SitePage> findAll() {
return sitepagefacade.findAll(); return sitepagefacade.findAll();
} }
@Override
@RolesAllowed(ContentPermission.S_MANAGE_PAGES)
public SitePage find(Integer id) {
return sitepagefacade.find(id);
}
@Override
@PermitAll
public List<PageContent> findContentsForUser(Integer id) {
return getContentsForPage(sitepagefacade.find(id));
}
private List<PageContent> getContentsForPage(SitePage page)
{
List<Role> roles = userbean.localFindUsersRoles(permbean.getCurrentUser());
logger.info("Got userroles {}", roles);
List<PageContent> ret = null;
if (page != null && page.getAllowedRoles() != null)
{
for (Role r : page.getAllowedRoles()) {
if (roles.contains(r)) {
ret = sitepagefacade.findContents(page, new Date());
break;
}
}
}
return ret;
}
@Override
public List<PageContent> findContentsForUser(String name) {
SitePage page = sitepagefacade.find(name);
logger.info("Trying to fetch contents for page {}, {}", name, page);
return getContentsForPage(page);
}
} }
...@@ -4,6 +4,7 @@ import java.awt.image.BufferedImage; ...@@ -4,6 +4,7 @@ import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collection; import java.util.Collection;
...@@ -12,6 +13,7 @@ import java.util.List; ...@@ -12,6 +13,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed; import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.EJBAccessException; import javax.ejb.EJBAccessException;
...@@ -27,10 +29,12 @@ import org.slf4j.LoggerFactory; ...@@ -27,10 +29,12 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.SpecialPermission; import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.facade.GroupMembershipFacade; import fi.insomnia.bortal.facade.GroupMembershipFacade;
import fi.insomnia.bortal.facade.RoleFacade;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.facade.UserImageFacade; import fi.insomnia.bortal.facade.UserImageFacade;
import fi.insomnia.bortal.model.GroupMembership; import fi.insomnia.bortal.model.GroupMembership;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LanEventPropertyKey;
import fi.insomnia.bortal.model.PlaceGroup; import fi.insomnia.bortal.model.PlaceGroup;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -45,7 +49,13 @@ import fi.insomnia.bortal.utilities.SearchResult; ...@@ -45,7 +49,13 @@ import fi.insomnia.bortal.utilities.SearchResult;
*/ */
@LocalBean @LocalBean
@Stateless @Stateless
@DeclareRoles({ UserPermission.S_VIEW_ALL, SpecialPermission.S_USER }) @DeclareRoles({
UserPermission.S_VIEW_ALL,
UserPermission.S_CREATE_NEW,
UserPermission.S_INVITE_USERS,
UserPermission.S_MODIFY,
SpecialPermission.S_USER,
})
public class UserBean implements UserBeanLocal { public class UserBean implements UserBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(UserBean.class); private static final Logger logger = LoggerFactory.getLogger(UserBean.class);
...@@ -87,6 +97,9 @@ public class UserBean implements UserBeanLocal { ...@@ -87,6 +97,9 @@ public class UserBean implements UserBeanLocal {
@EJB @EJB
private LoggingBeanLocal loggerbean; private LoggingBeanLocal loggerbean;
@EJB
private RoleFacade rolefacade;
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL) @RolesAllowed(UserPermission.S_VIEW_ALL)
public List<User> getUsers() { public List<User> getUsers() {
...@@ -104,17 +117,12 @@ public class UserBean implements UserBeanLocal { ...@@ -104,17 +117,12 @@ public class UserBean implements UserBeanLocal {
} }
User ret = userFacade.merge(user); User ret = userFacade.merge(user);
ctbean.checkPrintedCard(user); ctbean.checkPrintedCard(ret);
return ret; return ret;
} }
@Override @Override
public User getUser(String nick) {
return userFacade.findByLogin(nick);
}
@Override
public List<Role> findUsersRoles(User u) { public List<Role> findUsersRoles(User u) {
User currusr = permbean.getCurrentUser(); User currusr = permbean.getCurrentUser();
if (!currusr.equals(u) && !permbean.hasPermission(UserPermission.MODIFY)) { if (!currusr.equals(u) && !permbean.hasPermission(UserPermission.MODIFY)) {
...@@ -130,7 +138,7 @@ public class UserBean implements UserBeanLocal { ...@@ -130,7 +138,7 @@ public class UserBean implements UserBeanLocal {
Set<Role> checkedRoles = new HashSet<Role>(); Set<Role> checkedRoles = new HashSet<Role>();
if (u != null) if (u != null)
{ {
addRecursive(checkedRoles, u.getRoles()); addRecursive(checkedRoles, rolefacade.findForUser(u));
if (permbean.isLoggedIn()) { if (permbean.isLoggedIn()) {
...@@ -150,13 +158,13 @@ public class UserBean implements UserBeanLocal { ...@@ -150,13 +158,13 @@ public class UserBean implements UserBeanLocal {
return new ArrayList<Role>(checkedRoles); return new ArrayList<Role>(checkedRoles);
} }
private void addRecursive(Set<Role> checkedRoles, Collection<Role> roles) { private static void addRecursive(Set<Role> checkedRoles, Collection<Role> roles) {
for (Role r : roles) { for (Role r : roles) {
addRecursive(checkedRoles, r); addRecursive(checkedRoles, r);
} }
} }
private void addRecursive(Set<Role> checkedRoles, Role role) { private static void addRecursive(Set<Role> checkedRoles, Role role) {
if (role == null || checkedRoles.contains(role)) { if (role == null || checkedRoles.contains(role)) {
return; return;
} }
...@@ -223,6 +231,7 @@ public class UserBean implements UserBeanLocal { ...@@ -223,6 +231,7 @@ public class UserBean implements UserBeanLocal {
// } // }
@Override @Override
@RolesAllowed(UserPermission.S_CREATE_NEW)
public User createNewUser(User user, String password) { public User createNewUser(User user, String password) {
user.resetPassword(password); user.resetPassword(password);
...@@ -258,32 +267,36 @@ public class UserBean implements UserBeanLocal { ...@@ -258,32 +267,36 @@ public class UserBean implements UserBeanLocal {
} }
@Override @Override
public User initPasswordReset(User user, String hash, String mailpath) { public boolean initPasswordReset(String username, String url) {
User user = userFacade.findByLogin(username);
String hash = PasswordFunctions.generateRandomString(25);
logger.info("Initializing password sending: {}, hash: {}", user, hash);
String path = MessageFormat.format(url, new Object[] { user.getId(), hash });
if (hash == null || hash.length() < 20 || user == null || user.getEmail() == null || user.getEmail().length() <= 5) { if (hash == null || hash.length() < 20 || user == null || user.getEmail() == null || user.getEmail().length() <= 5) {
logger.info("Not sending email with params {} {}", new Object[] { user, hash }); logger.info("Not sending email with params {} {}", new Object[] { user, hash });
return null; return false;
} }
logger.info("sending mail! user {} hash {} path {}", new Object[] { user, hash, mailpath });
MailMessage msg = new MailMessage(); MailMessage msg = new MailMessage();
msg.setTo(user); msg.setTo(user);
msg.setSubject(I18n.get("passwordreset.mailSubject")); msg.setSubject(I18n.get("passwordreset.mailSubject"));
msg.setMessage(I18n.get("passwordreset.mailBody", mailpath)); msg.setMessage(I18n.get("passwordreset.mailBody", path));
logger.info("sending mail! user {} hash {} path {}", new Object[] { user, hash, mailpath }); logger.info("sending mail! user {} hash {} path {}", new Object[] { user, hash, path });
utilbean.sendMail(msg); utilbean.sendMail(msg);
user = userFacade.find(user.getId());
user.setConfirmHash(hash); user.setConfirmHash(hash);
return user; return true;
} }
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL)
public User findById(Integer id) { public User findById(Integer id) {
return userFacade.find(id); return userFacade.find(id);
} }
@Override @Override
@RolesAllowed(UserPermission.S_VIEW_ALL)
public SearchResult<User> getUsers(int page, int pagesize, String sort, String search) { public SearchResult<User> getUsers(int page, int pagesize, String sort, String search) {
return userFacade.searchUser(page, pagesize, sort, search); return userFacade.searchUser(page, pagesize, sort, search);
} }
...@@ -294,8 +307,8 @@ public class UserBean implements UserBeanLocal { ...@@ -294,8 +307,8 @@ public class UserBean implements UserBeanLocal {
// } // }
@Override @Override
@RolesAllowed("USER/EXECUTE") @RolesAllowed(UserPermission.S_INVITE_USERS)
public boolean invite(String invitemail) { public boolean invite(String invitemail, String url) {
List<User> usercheck = userFacade.findByEmail(invitemail.trim()); List<User> usercheck = userFacade.findByEmail(invitemail.trim());
if (usercheck.size() > 0) { if (usercheck.size() > 0) {
...@@ -310,21 +323,34 @@ public class UserBean implements UserBeanLocal { ...@@ -310,21 +323,34 @@ public class UserBean implements UserBeanLocal {
pg.getMembers().add(new GroupMembership(pg, null, token)); pg.getMembers().add(new GroupMembership(pg, null, token));
creator.getPlaceGroups().add(pg); creator.getPlaceGroups().add(pg);
MailMessage msg = new MailMessage();
msg.setSubject(eventBean.getPropertyString(LanEventPropertyKey.INVITEMAIL_SUBJECT));
msg.setMessage(MessageFormat.format(eventBean.getPropertyString(LanEventPropertyKey.INVITEMAIL_CONTENT), MessageFormat.format(url, token), creator.getWholeName()));
msg.setToAddress(invitemail);
utilbean.sendMail(msg);
return true; return true;
} }
@Override @Override
@PermitAll
public GroupMembership findToken(String token) { public GroupMembership findToken(String token) {
return gmfacade.findByToken(token); return gmfacade.findByToken(token);
} }
@Override @Override
public void createFromToken(User user, GroupMembership gm) { @PermitAll
gm = gmfacade.merge(gm); public void createFromToken(User user, String token) {
GroupMembership gm = findToken(token);
gm.setUser(user); gm.setUser(user);
gm.setInviteAccepted(Calendar.getInstance()); gm.setInviteAccepted(Calendar.getInstance());
if (user.getGroupMemberships() == null) {
user.setGroupMemberships(new ArrayList<GroupMembership>());
}
if (!user.getGroupMemberships().contains(gm)) {
user.getGroupMemberships().add(gm);
}
userFacade.create(user); userFacade.create(user);
} }
...@@ -363,4 +389,16 @@ public class UserBean implements UserBeanLocal { ...@@ -363,4 +389,16 @@ public class UserBean implements UserBeanLocal {
} }
@Override
@RolesAllowed(UserPermission.S_CREATE_NEW)
public void createNewUser(User usr) {
userFacade.create(usr);
}
@Override
public boolean userExists(String login) {
User usr = userFacade.findByLogin(login);
return usr != null;
}
} }
...@@ -27,6 +27,7 @@ import org.slf4j.Logger; ...@@ -27,6 +27,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.SpecialPermission; import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.model.LanEventPropertyKey;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserImage; import fi.insomnia.bortal.model.UserImage;
import fi.insomnia.bortal.util.MailMessage; import fi.insomnia.bortal.util.MailMessage;
...@@ -45,12 +46,10 @@ public class UtilBean implements UtilBeanLocal { ...@@ -45,12 +46,10 @@ public class UtilBean implements UtilBeanLocal {
@EJB @EJB
private UserBean userbean; private UserBean userbean;
@EJB
private EventBeanLocal eventbean;
/**
* Default constructor.
*/
public UtilBean() { public UtilBean() {
// TODO Auto-generated constructor stub
} }
@Resource(name = "jmsQueue", mappedName = "jms/mailque") @Resource(name = "jmsQueue", mappedName = "jms/mailque")
...@@ -61,6 +60,13 @@ public class UtilBean implements UtilBeanLocal { ...@@ -61,6 +60,13 @@ public class UtilBean implements UtilBeanLocal {
@Override @Override
public boolean sendMail(MailMessage message) { public boolean sendMail(MailMessage message) {
logger.info("Sending mail message {} ", message); logger.info("Sending mail message {} ", message);
if (message.getFromAddress() == null || message.getFromAddress().isEmpty()) {
message.setFromAddress(eventbean.getPropertyString(LanEventPropertyKey.PORTAL_EMAIL_ADDRESS));
}
if (message.getFromName() == null || message.getFromName().isEmpty()) {
message.setFromName(eventbean.getPropertyString(LanEventPropertyKey.PORTAL_EMAIL_NAME));
}
Date d = new Date(); Date d = new Date();
try { try {
QueueConnection conn = mailQuefactory.createQueueConnection(); QueueConnection conn = mailQuefactory.createQueueConnection();
......
...@@ -2,12 +2,14 @@ package fi.insomnia.bortal.facade; ...@@ -2,12 +2,14 @@ package fi.insomnia.bortal.facade;
import java.util.List; import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.AccountEvent; import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.AccountEvent_; import fi.insomnia.bortal.model.AccountEvent_;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
...@@ -24,6 +26,9 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> { ...@@ -24,6 +26,9 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> {
super(AccountEvent.class); super(AccountEvent.class);
} }
@EJB
private EventBeanLocal eventbean;
public List<Role> findProvidedRoles(LanEvent event, User u) { public List<Role> findProvidedRoles(LanEvent event, User u) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
...@@ -42,4 +47,16 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> { ...@@ -42,4 +47,16 @@ public class AccountEventFacade extends IntegerPkGenericFacade<AccountEvent> {
// q.setParameter("user", u); // q.setParameter("user", u);
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
public List<AccountEvent> getAccountEvents(User user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<AccountEvent> cq = cb.createQuery(AccountEvent.class);
Root<AccountEvent> root = cq.from(AccountEvent.class);
cq.where(cb.equal(root.get(AccountEvent_.user), user),
cb.equal(root.get(AccountEvent_.product).get(Product_.event), eventbean.getCurrentEvent())
);
return getEm().createQuery(cq).getResultList();
}
} }
package fi.insomnia.bortal.facade; package fi.insomnia.bortal.facade;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
...@@ -21,7 +20,7 @@ import fi.insomnia.bortal.facade.callbacks.FacadeCallback; ...@@ -21,7 +20,7 @@ import fi.insomnia.bortal.facade.callbacks.FacadeCallback;
import fi.insomnia.bortal.utilities.SearchResult; import fi.insomnia.bortal.utilities.SearchResult;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public abstract class GenericFacade<I extends Serializable, C extends ModelInterface<I>> { public abstract class GenericFacade<C extends ModelInterface> {
private final Class<C> entClass; private final Class<C> entClass;
private static final Logger logger = LoggerFactory.getLogger(GenericFacade.class); private static final Logger logger = LoggerFactory.getLogger(GenericFacade.class);
...@@ -54,7 +53,7 @@ public abstract class GenericFacade<I extends Serializable, C extends ModelInter ...@@ -54,7 +53,7 @@ public abstract class GenericFacade<I extends Serializable, C extends ModelInter
getEm().refresh(usr); getEm().refresh(usr);
} }
public C find(I id) { public C find(Integer id) {
if (id == null) { if (id == null) {
return null; return null;
} }
...@@ -181,8 +180,6 @@ public abstract class GenericFacade<I extends Serializable, C extends ModelInter ...@@ -181,8 +180,6 @@ public abstract class GenericFacade<I extends Serializable, C extends ModelInter
ArrayList<Predicate> predicates = new ArrayList<Predicate>(); ArrayList<Predicate> predicates = new ArrayList<Predicate>();
for (FacadeCallback<C> fc : list) { for (FacadeCallback<C> fc : list) {
logger.debug("Executing {}, predsize: {}", fc, predicates.size());
fc.exec(cb, cq, root, predicates); fc.exec(cb, cq, root, predicates);
} }
if (!predicates.isEmpty()) { if (!predicates.isEmpty()) {
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.utilities.jpa.ModelInterface; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.utilities.jpa.ModelInterface;
/** /**
* Session Bean implementation class GenericFacade * Session Bean implementation class GenericFacade
*/ */
public abstract class IntegerPkGenericFacade<T extends ModelInterface<Integer>> extends GenericFacade<Integer, T> { public abstract class IntegerPkGenericFacade<T extends ModelInterface> extends GenericFacade<T> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
package fi.insomnia.bortal.facade;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LanEventProperty;
import fi.insomnia.bortal.model.LanEventPropertyKey;
import fi.insomnia.bortal.model.LanEventProperty_;
@Stateless
@LocalBean
public class LanEventPropertyFacade extends IntegerPkGenericFacade<LanEventProperty> {
public LanEventPropertyFacade() {
super(LanEventProperty.class);
}
@EJB
private EventBeanLocal eventbean;
public LanEventProperty find(LanEvent currentEvent, LanEventPropertyKey property) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<LanEventProperty> cq = cb.createQuery(LanEventProperty.class);
Root<LanEventProperty> root = cq.from(LanEventProperty.class);
CriteriaQuery<LanEventProperty> q = cq.where(cb.equal(root.get(LanEventProperty_.event), eventbean.getCurrentEvent()),
cb.equal(root.get(LanEventProperty_.key), property)
);
return getSingleNullableResult(getEm().createQuery(q));
}
}
...@@ -11,7 +11,6 @@ import javax.persistence.criteria.CriteriaQuery; ...@@ -11,7 +11,6 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.Product_; import fi.insomnia.bortal.model.Product_;
...@@ -52,7 +51,7 @@ public class ProductFacade extends IntegerPkGenericFacade<Product> { ...@@ -52,7 +51,7 @@ public class ProductFacade extends IntegerPkGenericFacade<Product> {
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
public List<Product> findPrepaidProducts(LanEvent e) { public List<Product> findPrepaidProducts() {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Product> cq = cb.createQuery(Product.class); CriteriaQuery<Product> cq = cb.createQuery(Product.class);
Root<Product> root = cq.from(Product.class); Root<Product> root = cq.from(Product.class);
......
...@@ -2,12 +2,14 @@ package fi.insomnia.bortal.facade; ...@@ -2,12 +2,14 @@ package fi.insomnia.bortal.facade;
import java.util.List; import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.Role_; import fi.insomnia.bortal.model.Role_;
...@@ -17,6 +19,9 @@ import fi.insomnia.bortal.model.User; ...@@ -17,6 +19,9 @@ import fi.insomnia.bortal.model.User;
@LocalBean @LocalBean
public class RoleFacade extends IntegerPkGenericFacade<Role> { public class RoleFacade extends IntegerPkGenericFacade<Role> {
@EJB
private EventBeanLocal eventbean;
public RoleFacade() { public RoleFacade() {
super(Role.class); super(Role.class);
...@@ -30,11 +35,11 @@ public class RoleFacade extends IntegerPkGenericFacade<Role> { ...@@ -30,11 +35,11 @@ public class RoleFacade extends IntegerPkGenericFacade<Role> {
// return getSingleNullableResult(q); // return getSingleNullableResult(q);
// } // }
public List<Role> findForUser(User user, LanEvent event) { public List<Role> findForUser(User user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Role> cq = cb.createQuery(Role.class); CriteriaQuery<Role> cq = cb.createQuery(Role.class);
Root<Role> root = cq.from(Role.class); Root<Role> root = cq.from(Role.class);
cq.where(cb.equal(root.get(Role_.event), event), cb.isMember(user, root.get(Role_.users))); cq.where(cb.equal(root.get(Role_.event), eventbean.getCurrentEvent()), cb.isMember(user, root.get(Role_.users)));
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
......
package fi.insomnia.bortal.facade; package fi.insomnia.bortal.facade;
import java.util.Date;
import java.util.List; import java.util.List;
import javax.ejb.EJB; import javax.ejb.EJB;
...@@ -12,6 +13,8 @@ import javax.persistence.criteria.Predicate; ...@@ -12,6 +13,8 @@ import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.PageContent;
import fi.insomnia.bortal.model.PageContent_;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.Role_; import fi.insomnia.bortal.model.Role_;
import fi.insomnia.bortal.model.SitePage; import fi.insomnia.bortal.model.SitePage;
...@@ -29,17 +32,17 @@ public class SitePageFacade extends IntegerPkGenericFacade<SitePage> { ...@@ -29,17 +32,17 @@ public class SitePageFacade extends IntegerPkGenericFacade<SitePage> {
super(SitePage.class); super(SitePage.class);
} }
public SitePage find(String siteName) { // public SitePage find(String siteName) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); // CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<SitePage> cq = cb.createQuery(SitePage.class); // CriteriaQuery<SitePage> cq = cb.createQuery(SitePage.class);
Root<SitePage> root = cq.from(SitePage.class); // Root<SitePage> root = cq.from(SitePage.class);
//
cq.where(cb.equal(root.get(SitePage_.name), siteName), // cq.where(cb.equal(root.get(SitePage_.name), siteName),
cb.equal(root.get(SitePage_.event), eventbean.getCurrentEvent()) // cb.equal(root.get(SitePage_.event), eventbean.getCurrentEvent())
//
); // );
return getSingleNullableResult(getEm().createQuery(cq)); // return getSingleNullableResult(getEm().createQuery(cq));
} // }
public List<SitePage> findForUser(User user, SitePage siteroot) { public List<SitePage> findForUser(User user, SitePage siteroot) {
CriteriaBuilder cb = getEm().getCriteriaBuilder(); CriteriaBuilder cb = getEm().getCriteriaBuilder();
...@@ -84,4 +87,46 @@ public class SitePageFacade extends IntegerPkGenericFacade<SitePage> { ...@@ -84,4 +87,46 @@ public class SitePageFacade extends IntegerPkGenericFacade<SitePage> {
return getEm().createQuery(cq).getResultList(); return getEm().createQuery(cq).getResultList();
} }
public SitePage find(Integer id, List<Role> require) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<SitePage> cq = cb.createQuery(SitePage.class);
Root<SitePage> root = cq.from(SitePage.class);
cq.where(
cb.equal(root.get(SitePage_.id), id),
root.get(SitePage_.allowedRoles).in(require)
);
return getSingleNullableResult(getEm().createQuery(cq));
}
public List<PageContent> findContents(SitePage page, Date now) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<PageContent> cq = cb.createQuery(PageContent.class);
Root<PageContent> root = cq.from(PageContent.class);
Path<SitePage> sitepath = root.get(PageContent_.sitepage);
Path<Date> expirepath = root.get(PageContent_.expire);
Path<Date> publishpath = root.get(PageContent_.publish);
cq.where(
cb.equal(sitepath, page),
cb.or(cb.isNull(publishpath), cb.greaterThan(publishpath, now)),
cb.or(cb.isNull(expirepath), cb.lessThan(expirepath, now))
);
return getEm().createQuery(cq).getResultList();
}
public SitePage find(String name) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<SitePage> cq = cb.createQuery(SitePage.class);
Root<SitePage> root = cq.from(SitePage.class);
cq.where(cb.equal(root.get(SitePage_.event), eventbean.getCurrentEvent()),
cb.equal(root.get(SitePage_.name), name)
);
return super.getSingleNullableResult(getEm().createQuery(cq));
}
} }
...@@ -104,12 +104,6 @@ public class UserFacade extends IntegerPkGenericFacade<User> { ...@@ -104,12 +104,6 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
} }
for (SingularAttribute<User, String> attr : getAttrlist())
{
logger.info("Looping attrs: {}", attr);
}
return super.searcher(page, pagesize, return super.searcher(page, pagesize,
new StringSearchPredicateCreator<User>(search, getAttrlist()), new StringSearchPredicateCreator<User>(search, getAttrlist()),
orderCall orderCall
......
...@@ -11,7 +11,7 @@ import javax.persistence.metamodel.SingularAttribute; ...@@ -11,7 +11,7 @@ import javax.persistence.metamodel.SingularAttribute;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public class AndPredicateCreator<A, T extends ModelInterface<?>> implements FacadeCallback<T> { public class AndPredicateCreator<A, T extends ModelInterface> implements FacadeCallback<T> {
private final A searchval; private final A searchval;
private final List<SingularAttribute<T, A>> attributes; private final List<SingularAttribute<T, A>> attributes;
......
...@@ -9,7 +9,7 @@ import javax.persistence.criteria.Root; ...@@ -9,7 +9,7 @@ import javax.persistence.criteria.Root;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public interface FacadeCallback<C extends ModelInterface<?>> { public interface FacadeCallback<C extends ModelInterface> {
void exec(CriteriaBuilder cb, CriteriaQuery<?> cq, Root<C> root, List<Predicate> predicates); void exec(CriteriaBuilder cb, CriteriaQuery<?> cq, Root<C> root, List<Predicate> predicates);
} }
...@@ -13,7 +13,7 @@ import org.slf4j.LoggerFactory; ...@@ -13,7 +13,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public class OrPredicateCreator<A, T extends ModelInterface<?>> implements FacadeCallback<T> { public class OrPredicateCreator<A, T extends ModelInterface> implements FacadeCallback<T> {
private final A searchstr; private final A searchstr;
private final List<SingularAttribute<T, A>> attributes; private final List<SingularAttribute<T, A>> attributes;
private static final Logger logger = LoggerFactory.getLogger(OrPredicateCreator.class); private static final Logger logger = LoggerFactory.getLogger(OrPredicateCreator.class);
......
...@@ -11,7 +11,7 @@ import javax.persistence.metamodel.SingularAttribute; ...@@ -11,7 +11,7 @@ import javax.persistence.metamodel.SingularAttribute;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public class OrderCallback<T extends ModelInterface<?>> implements FacadeCallback<T> { public class OrderCallback<T extends ModelInterface> implements FacadeCallback<T> {
private final SingularAttribute<? super T, ?> sort; private final SingularAttribute<? super T, ?> sort;
private final boolean asc; private final boolean asc;
......
...@@ -4,7 +4,7 @@ import javax.persistence.metamodel.SingularAttribute; ...@@ -4,7 +4,7 @@ import javax.persistence.metamodel.SingularAttribute;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public interface StringPredicateField<T extends ModelInterface<?>> { public interface StringPredicateField<T extends ModelInterface> {
SingularAttribute<T, String> getField(); SingularAttribute<T, String> getField();
......
...@@ -9,16 +9,12 @@ import javax.persistence.criteria.Predicate; ...@@ -9,16 +9,12 @@ import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.SingularAttribute;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public class StringSearchPredicateCreator<T extends ModelInterface<?>> implements FacadeCallback<T> { public class StringSearchPredicateCreator<T extends ModelInterface> implements FacadeCallback<T> {
private static final String WILDCARD = "%"; private static final String WILDCARD = "%";
private String searchstr = null; private String searchstr = null;
private List<SingularAttribute<T, String>> attributes = null; private List<SingularAttribute<T, String>> attributes = null;
private static final Logger logger = LoggerFactory.getLogger(StringSearchPredicateCreator.class);
public StringSearchPredicateCreator(String search, List<SingularAttribute<T, String>> attrs) { public StringSearchPredicateCreator(String search, List<SingularAttribute<T, String>> attrs) {
if (addSearch(search)) { if (addSearch(search)) {
...@@ -58,9 +54,7 @@ public class StringSearchPredicateCreator<T extends ModelInterface<?>> implement ...@@ -58,9 +54,7 @@ public class StringSearchPredicateCreator<T extends ModelInterface<?>> implement
int i = 0; int i = 0;
for (SingularAttribute<T, String> attr : attributes) { for (SingularAttribute<T, String> attr : attributes) {
logger.info("Equalling {} to {}", attr.getName(), splitSearch);
preds[i++] = cb.like(cb.lower(root.get(attr)), splitSearch); preds[i++] = cb.like(cb.lower(root.get(attr)), splitSearch);
} }
predicates.add(cb.or(preds)); predicates.add(cb.or(preds));
} }
......
...@@ -25,4 +25,8 @@ public interface AccountEventBeanLocal { ...@@ -25,4 +25,8 @@ public interface AccountEventBeanLocal {
List<AccountEvent> shopCash(User shoppingUser, Map<Product, BigDecimal> List<AccountEvent> shopCash(User shoppingUser, Map<Product, BigDecimal>
shopMap, boolean buyInstant); shopMap, boolean buyInstant);
BigDecimal getAccountBalance(User user);
List<AccountEvent> getAccountEvents(User user);
} }
...@@ -31,4 +31,6 @@ public interface BillBeanLocal { ...@@ -31,4 +31,6 @@ public interface BillBeanLocal {
void createBill(Bill bill); void createBill(Bill bill);
Bill save(Bill bill);
} }
...@@ -3,10 +3,12 @@ package fi.insomnia.bortal.beans; ...@@ -3,10 +3,12 @@ package fi.insomnia.bortal.beans;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LanEventProperty;
import fi.insomnia.bortal.model.LanEventPropertyKey;
@Local @Local
public interface EventBeanLocal { public interface EventBeanLocal {
static final String HTTP_URL_HOSTNAME = "HTTP_URL_HOSTNAME"; // static final String HTTP_URL_HOSTNAME = "HTTP_URL_HOSTNAME";
LanEvent getEventByHostname(String hostname); LanEvent getEventByHostname(String hostname);
...@@ -17,4 +19,8 @@ public interface EventBeanLocal { ...@@ -17,4 +19,8 @@ public interface EventBeanLocal {
void create(LanEvent event); void create(LanEvent event);
String flushCache(); String flushCache();
LanEventProperty getProperty(LanEventPropertyKey property);
String getPropertyString(LanEventPropertyKey property);
} }
...@@ -10,8 +10,6 @@ import fi.insomnia.bortal.model.SitePage; ...@@ -10,8 +10,6 @@ import fi.insomnia.bortal.model.SitePage;
@Local @Local
public interface SitePageBeanLocal { public interface SitePageBeanLocal {
SitePage find(String siteName);
void create(SitePage sitepage); void create(SitePage sitepage);
SitePage save(SitePage sitepage); SitePage save(SitePage sitepage);
...@@ -24,4 +22,10 @@ public interface SitePageBeanLocal { ...@@ -24,4 +22,10 @@ public interface SitePageBeanLocal {
List<SitePage> findAll(); List<SitePage> findAll();
SitePage find(Integer id);
List<PageContent> findContentsForUser(Integer id);
List<PageContent> findContentsForUser(String name);
} }
...@@ -18,44 +18,36 @@ public interface UserBeanLocal { ...@@ -18,44 +18,36 @@ public interface UserBeanLocal {
SearchResult<User> getUsers(int page, int pagesize, String sort, String search); SearchResult<User> getUsers(int page, int pagesize, String sort, String search);
User getUser(String login);
User mergeChanges(User currentUser); User mergeChanges(User currentUser);
// boolean hasCurrentUserPermission(Permission userManagement,
// RolePermission execute);
// void fatalPermission(Permission target, RolePermission permission,
// Object... failmessage);
// void fatalNotLoggedIn();
UserImage uploadImage(User user, String contentType, byte[] image, String filename, String description); UserImage uploadImage(User user, String contentType, byte[] image, String filename, String description);
UserImage findUserImage(int id); UserImage findUserImage(int id);
// List<User> searchName(String name);
User createNewUser(User user, String password); User createNewUser(User user, String password);
User findPasswordResetUser(Integer id, String hash); User findPasswordResetUser(Integer id, String hash);
boolean resetPassword(User user, String password, String hash); boolean resetPassword(User user, String password, String hash);
User initPasswordReset(User user, String hash, String mailpath); boolean initPasswordReset(String user, String mailpath);
List<Role> findUsersRoles(User u); List<Role> findUsersRoles(User u);
User findById(Integer integer); User findById(Integer integer);
boolean invite(String invitemail);
GroupMembership findToken(String token); GroupMembership findToken(String token);
void createFromToken(User user, GroupMembership gm); void createFromToken(User user, String token);
UserImage findUserimageFORCE(Integer id); UserImage findUserimageFORCE(Integer id);
UserImage saveCroppedImage(UserImage currentImage, int left, int top, int width, int height) throws IOException; UserImage saveCroppedImage(UserImage currentImage, int left, int top, int width, int height) throws IOException;
void createNewUser(User usr);
boolean userExists(String login);
boolean invite(String invitemail, String url);
} }
...@@ -13,11 +13,11 @@ public class MailMessage implements Serializable { ...@@ -13,11 +13,11 @@ public class MailMessage implements Serializable {
*/ */
private static final long serialVersionUID = -4769468394850407107L; private static final long serialVersionUID = -4769468394850407107L;
private static final String DEFAULT_MAIL_CHARSET = "iso-8859-1"; private static final String DEFAULT_MAIL_CHARSET = "ISO-8859-1";
private String subject; private String subject;
private String fromName = "Insomnia lippukauppa"; private String fromName;
private String fromAddress = "info@insomnia.fi"; private String fromAddress;
private String toName; private String toName;
private String toAddress; private String toAddress;
private String message; private String message;
......
...@@ -9,5 +9,6 @@ ...@@ -9,5 +9,6 @@
<property name="eclipselink.cache.size.default" value="16384"/> <property name="eclipselink.cache.size.default" value="16384"/>
<property name="eclipselink.ddl-generation.output-mode" value="database"/> <property name="eclipselink.ddl-generation.output-mode" value="database"/>
</properties> </properties>
</persistence-unit> </persistence-unit>
</persistence> </persistence>
...@@ -9,6 +9,7 @@ import static javax.persistence.TemporalType.DATE; ...@@ -9,6 +9,7 @@ import static javax.persistence.TemporalType.DATE;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date;
import java.util.List; import java.util.List;
import javax.persistence.CascadeType; import javax.persistence.CascadeType;
...@@ -63,7 +64,7 @@ public class Bill extends GenericEntity { ...@@ -63,7 +64,7 @@ public class Bill extends GenericEntity {
*/ */
@Column(name = "paid_date") @Column(name = "paid_date")
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
private Calendar paidDate; private Date paidDate;
/** /**
* The bill number from which the reference number will be generated * The bill number from which the reference number will be generated
...@@ -85,7 +86,7 @@ public class Bill extends GenericEntity { ...@@ -85,7 +86,7 @@ public class Bill extends GenericEntity {
@Column(nullable = false, name = "sent_time") @Column(nullable = false, name = "sent_time")
@Temporal(DATE) @Temporal(DATE)
private Calendar sentDate = Calendar.getInstance(); private Date sentDate = new Date();
@Column(name = "payment_time", nullable = false) @Column(name = "payment_time", nullable = false)
private Integer paymentTime = 0; private Integer paymentTime = 0;
...@@ -202,14 +203,6 @@ public class Bill extends GenericEntity { ...@@ -202,14 +203,6 @@ public class Bill extends GenericEntity {
return dueDate; return dueDate;
} }
public Calendar getPaidDate() {
return paidDate;
}
public void setPaidDate(Calendar paidDate) {
this.paidDate = paidDate;
}
public String getNotes() { public String getNotes() {
return notes; return notes;
} }
...@@ -286,14 +279,6 @@ public class Bill extends GenericEntity { ...@@ -286,14 +279,6 @@ public class Bill extends GenericEntity {
this.addr5 = addr5; this.addr5 = addr5;
} }
public Calendar getSentDate() {
return sentDate;
}
public void setSentDate(Calendar sentDate) {
this.sentDate = sentDate;
}
public String getNoticetime() { public String getNoticetime() {
return noticetime; return noticetime;
} }
...@@ -373,4 +358,21 @@ public class Bill extends GenericEntity { ...@@ -373,4 +358,21 @@ public class Bill extends GenericEntity {
public void setEvent(LanEvent event) { public void setEvent(LanEvent event) {
this.event = event; this.event = event;
} }
public Date getPaidDate() {
return paidDate;
}
public void setPaidDate(Date paidDate) {
this.paidDate = paidDate;
}
public Date getSentDate() {
return sentDate;
}
public void setSentDate(Date sentDate) {
this.sentDate = sentDate;
}
} }
...@@ -5,14 +5,11 @@ import javax.persistence.GeneratedValue; ...@@ -5,14 +5,11 @@ import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.MappedSuperclass; import javax.persistence.MappedSuperclass;
import javax.persistence.Version;
import org.eclipse.persistence.annotations.ReturnInsert;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
@MappedSuperclass @MappedSuperclass
public class GenericEntity extends EntityEquals implements ModelInterface<Integer> { public class GenericEntity extends EntityEquals implements ModelInterface {
private static final long serialVersionUID = -9041737052951021560L; private static final long serialVersionUID = -9041737052951021560L;
public static final String ID_COLUMN = "id"; public static final String ID_COLUMN = "id";
......
...@@ -27,16 +27,6 @@ import org.eclipse.persistence.annotations.OptimisticLockingType; ...@@ -27,16 +27,6 @@ import org.eclipse.persistence.annotations.OptimisticLockingType;
@Entity @Entity
@Table(name = "group_memberships", uniqueConstraints = { @UniqueConstraint(columnNames = { @Table(name = "group_memberships", uniqueConstraints = { @UniqueConstraint(columnNames = {
"user_id", "group_id" }) }) "user_id", "group_id" }) })
// @NamedQueries({
// @NamedQuery(name = "GroupMembership.findAll", query =
// "SELECT g FROM GroupMembership g"),
//
// @NamedQuery(name = "GroupMembership.findByInviteAccepted", query =
// "SELECT g FROM GroupMembership g WHERE g.inviteAccepted = :inviteAccepted"),
// @NamedQuery(name = "GroupMembership.findByInviteEmail", query =
// "SELECT g FROM GroupMembership g WHERE g.inviteEmail = :inviteEmail"),
// @NamedQuery(name = "GroupMembership.findByInviteName", query =
// "SELECT g FROM GroupMembership g WHERE g.inviteName = :inviteName") })
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS) @OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class GroupMembership extends GenericEntity { public class GroupMembership extends GenericEntity {
...@@ -60,7 +50,7 @@ public class GroupMembership extends GenericEntity { ...@@ -60,7 +50,7 @@ public class GroupMembership extends GenericEntity {
private PlaceGroup placeGroup; private PlaceGroup placeGroup;
@OneToOne(optional = false) @OneToOne(optional = false)
@JoinColumn(name = "place_reservation_id", referencedColumnName = "id", nullable = false) @JoinColumn(name = "place_reservation_id", referencedColumnName = "id", nullable = true)
private Place placeReservation; private Place placeReservation;
@JoinColumn(name = "user_id", referencedColumnName = "id") @JoinColumn(name = "user_id", referencedColumnName = "id")
......
...@@ -45,9 +45,6 @@ public class LanEvent extends GenericEntity { ...@@ -45,9 +45,6 @@ public class LanEvent extends GenericEntity {
@Column(name = "name", nullable = false, unique = true) @Column(name = "name", nullable = false, unique = true)
private String name; private String name;
@Column(name = "referer", unique = true, nullable = true)
private String referer;
@Column(nullable = false, name = "event_enabled") @Column(nullable = false, name = "event_enabled")
private boolean eventEnabled = false; private boolean eventEnabled = false;
...@@ -102,6 +99,10 @@ public class LanEvent extends GenericEntity { ...@@ -102,6 +99,10 @@ public class LanEvent extends GenericEntity {
@PrivateOwned @PrivateOwned
private List<LanEventDomain> domains = new ArrayList<LanEventDomain>(); private List<LanEventDomain> domains = new ArrayList<LanEventDomain>();
@PrivateOwned
@OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
private List<LanEventProperty> properties = new ArrayList<LanEventProperty>();
public LanEvent() { public LanEvent() {
} }
...@@ -130,14 +131,6 @@ public class LanEvent extends GenericEntity { ...@@ -130,14 +131,6 @@ public class LanEvent extends GenericEntity {
this.name = name; this.name = name;
} }
public String getReferer() {
return referer;
}
public void setReferer(String referer) {
this.referer = referer;
}
public EventStatus getStatus() { public EventStatus getStatus() {
return status; return status;
} }
...@@ -280,4 +273,12 @@ public class LanEvent extends GenericEntity { ...@@ -280,4 +273,12 @@ public class LanEvent extends GenericEntity {
this.domains = domains; this.domains = domains;
} }
public List<LanEventProperty> getProperties() {
return properties;
}
public void setProperties(List<LanEventProperty> properties) {
this.properties = properties;
}
} }
package fi.insomnia.bortal.model;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;
@Entity
@Table(name = "event_properties", uniqueConstraints = {
@UniqueConstraint(columnNames = { LanEventProperty.EVENT_ID_COLUMN, LanEventProperty.KEY_COLUMN }),
@UniqueConstraint(columnNames = { LanEventProperty.EVENTORG_ID_COLUMN, LanEventProperty.KEY_COLUMN }),
})
public class LanEventProperty extends GenericEntity {
/**
*
*/
private static final long serialVersionUID = 1L;
protected static final String KEY_COLUMN = "key";
protected static final String EVENT_ID_COLUMN = "event_id";
protected static final String EVENTORG_ID_COLUMN = "organisation_id";
@ManyToOne()
@JoinColumn(name = EVENTORG_ID_COLUMN, nullable = true)
private EventOrganiser eventorg;
@ManyToOne()
@JoinColumn(name = EVENT_ID_COLUMN, nullable = true)
private LanEvent event;
@Column(name = KEY_COLUMN, nullable = false)
@Enumerated(EnumType.STRING)
private LanEventPropertyKey key;
@Lob
@Column(name = "description")
private String description;
@Column(name = "boolean_value")
private boolean booleanValue;
@Column(name = "text_value")
@Lob
private String textvalue;
@Column(precision = 30, scale = 8, name = "decimal_value")
private BigDecimal decimalValue;
@Column(name = "long_value")
private Long longValue;
@Column(name = "byte_mime")
private String byteMime;
@Column(name = "byte_value")
@Lob
private byte[] byteValue;
@Column(name = "date_value")
@Temporal(TemporalType.TIMESTAMP)
private Date dateValue;
public LanEvent getEvent() {
return event;
}
public void setEvent(LanEvent event) {
this.event = event;
}
public LanEventPropertyKey getKey() {
return key;
}
public void setKey(LanEventPropertyKey key) {
this.key = key;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public boolean isBooleanValue() {
return booleanValue;
}
public void setBooleanValue(boolean booleanValue) {
this.booleanValue = booleanValue;
}
public String getTextvalue() {
return textvalue;
}
public void setTextvalue(String textvalue) {
this.textvalue = textvalue;
}
public BigDecimal getDecimalValue() {
return decimalValue;
}
public void setDecimalValue(BigDecimal decimalValue) {
this.decimalValue = decimalValue;
}
public Long getLongValue() {
return longValue;
}
public void setLongValue(Long longValue) {
this.longValue = longValue;
}
public String getByteMime() {
return byteMime;
}
public void setByteMime(String byteMime) {
this.byteMime = byteMime;
}
public byte[] getByteValue() {
return byteValue;
}
public void setByteValue(byte[] byteValue) {
this.byteValue = byteValue;
}
public Date getDateValue() {
return dateValue;
}
public void setDateValue(Date dateValue) {
this.dateValue = dateValue;
}
public EventOrganiser getEventorg() {
return eventorg;
}
public void setEventorg(EventOrganiser eventorg) {
this.eventorg = eventorg;
}
}
package fi.insomnia.bortal.model;
public enum LanEventPropertyKey {
EVENT_LOGO(Type.DATA, null),
INVITEMAIL_SUBJECT(Type.TEXT, "Invite from Eventportal"),
INVITEMAIL_CONTENT(Type.TEXT, "You have been invited to a Event by {1}. You can register to event intranet at {0}"),
PORTAL_EMAIL_ADDRESS(Type.TEXT, "portal@tuhto.fi"),
PORTAL_EMAIL_NAME(Type.TEXT, "Event portal"), ;
private enum Type {
TEXT, DATE, DATA
};
private final String defaultvalue;
private final Type type;
private LanEventPropertyKey(Type t, String def)
{
this.type = t;
defaultvalue = def;
}
public String getDefaultvalue() {
return defaultvalue;
}
public Type getType() {
return type;
}
}
...@@ -217,4 +217,12 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi ...@@ -217,4 +217,12 @@ public class MenuNavigation extends GenericEntity implements Comparable<MenuNavi
this.event = event; this.event = event;
} }
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
} }
...@@ -36,9 +36,6 @@ import org.eclipse.persistence.annotations.OptimisticLockingType; ...@@ -36,9 +36,6 @@ import org.eclipse.persistence.annotations.OptimisticLockingType;
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS) @OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class PrintedCard extends GenericEntity { public class PrintedCard extends GenericEntity {
/**
*
*/
private static final long serialVersionUID = 8603481931116401027L; private static final long serialVersionUID = 8603481931116401027L;
public static final String EVENT_ID_COLUMN = "event_id"; public static final String EVENT_ID_COLUMN = "event_id";
...@@ -77,12 +74,20 @@ public class PrintedCard extends GenericEntity { ...@@ -77,12 +74,20 @@ public class PrintedCard extends GenericEntity {
@ManyToOne(optional = false) @ManyToOne(optional = false)
private CardTemplate template; private CardTemplate template;
public PrintedCard(LanEvent event, Calendar printTime, boolean cardEnabled) { public PrintedCard(User usr, CardTemplate templ, Calendar printTime, boolean cardEnabled) {
this(event); super();
this.event = templ.getEvent();
this.template = templ;
this.user = usr;
this.printTime = printTime; this.printTime = printTime;
this.enabled = cardEnabled; this.enabled = cardEnabled;
} }
public PrintedCard()
{
super();
}
public LanEvent getEvent() { public LanEvent getEvent() {
return event; return event;
} }
...@@ -91,15 +96,6 @@ public class PrintedCard extends GenericEntity { ...@@ -91,15 +96,6 @@ public class PrintedCard extends GenericEntity {
this.event = event; this.event = event;
} }
public PrintedCard() {
super();
}
public PrintedCard(LanEvent event) {
super();
this.event = event;
}
public Calendar getPrintTime() { public Calendar getPrintTime() {
return printTime; return printTime;
} }
......
...@@ -93,9 +93,4 @@ public class SitePage extends GenericEntity { ...@@ -93,9 +93,4 @@ public class SitePage extends GenericEntity {
this.allowedRoles = allowedRoles; this.allowedRoles = allowedRoles;
} }
public String getUrl()
{
return new StringBuilder("/page/?id=").append(getId()).toString();
}
} }
...@@ -2,8 +2,6 @@ package fi.insomnia.bortal.model; ...@@ -2,8 +2,6 @@ package fi.insomnia.bortal.model;
import static javax.persistence.CascadeType.ALL; import static javax.persistence.CascadeType.ALL;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
...@@ -111,6 +109,9 @@ public class User extends GenericEntity { ...@@ -111,6 +109,9 @@ public class User extends GenericEntity {
@OneToMany(mappedBy = "voter", cascade = CascadeType.ALL) @OneToMany(mappedBy = "voter", cascade = CascadeType.ALL)
private List<Vote> votes; private List<Vote> votes;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<UserNote> notes;
@ManyToMany() @ManyToMany()
@JoinTable(name = "role_memberships", inverseJoinColumns = { @JoinTable(name = "role_memberships", inverseJoinColumns = {
@JoinColumn(name = "role_id", referencedColumnName = Role.ID_COLUMN) }, @JoinColumn(name = "role_id", referencedColumnName = Role.ID_COLUMN) },
...@@ -169,14 +170,6 @@ public class User extends GenericEntity { ...@@ -169,14 +170,6 @@ public class User extends GenericEntity {
@Transient @Transient
private static final Logger logger = LoggerFactory.getLogger(User.class); private static final Logger logger = LoggerFactory.getLogger(User.class);
public BigDecimal getAccountBalance() {
BigDecimal ret = BigDecimal.ZERO;
for (AccountEvent ac : getAccountEvents()) {
ret = ret.add(ac.getTotal()).setScale(2, RoundingMode.HALF_UP);
}
return ret;
}
public List<Vote> getVotes() { public List<Vote> getVotes() {
return votes; return votes;
} }
...@@ -509,4 +502,12 @@ public class User extends GenericEntity { ...@@ -509,4 +502,12 @@ public class User extends GenericEntity {
} }
return isAnon; return isAnon;
} }
public List<UserNote> getNotes() {
return notes;
}
public void setNotes(List<UserNote> notes) {
this.notes = notes;
}
} }
package fi.insomnia.bortal.model;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "user_notes")
public class UserNote extends GenericEntity {
private static final long serialVersionUID = 6128095532481826770L;
@ManyToOne
@JoinColumn(nullable = false)
private User user;
@ManyToOne
@JoinColumn(nullable = false)
private LanEvent event;
@Lob
private String content;
@Lob
@JoinColumn(nullable = false)
@Enumerated(EnumType.STRING)
private UserNoteType notetype;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public LanEvent getEvent() {
return event;
}
public void setEvent(LanEvent event) {
this.event = event;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public UserNoteType getNotetype() {
return notetype;
}
public void setNotetype(UserNoteType notetype) {
this.notetype = notetype;
}
}
package fi.insomnia.bortal.model;
public enum UserNoteType {
ORGALERT, ORGNOTE, USERNOTE, BANKACCOUNT, BANK,
}
...@@ -3,34 +3,24 @@ package fi.insomnia.bortal.enums; ...@@ -3,34 +3,24 @@ package fi.insomnia.bortal.enums;
import fi.insomnia.bortal.enums.apps.BillPermission; import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.enums.apps.ContentPermission; import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.enums.apps.IAppPermission; import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.enums.apps.LayoutPermission;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission; import fi.insomnia.bortal.enums.apps.PollPermission;
import fi.insomnia.bortal.enums.apps.TerminalPermission;
import fi.insomnia.bortal.enums.apps.ShopPermission; import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.TerminalPermission;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
public enum BortalApplication { public enum BortalApplication {
// NOTE. add conversion Value to RoleRight
// PERMISSION("Description"),
// LOGIN("Login related permissions", LoginPermission.class),
USER("User management related", UserPermission.class), USER("User management related", UserPermission.class),
// s ROLE("Role management", RolePermission.class),
BILL("Creating, and managing bills", BillPermission.class), BILL("Creating, and managing bills", BillPermission.class),
POLL("Poll stuff", PollPermission.class), POLL("Poll stuff", PollPermission.class),
MAP("Map management ", MapPermission.class), MAP("Map management ", MapPermission.class),
SHOP("Product & shop management", ShopPermission.class), SHOP("Product & shop management", ShopPermission.class),
CONTENT("News, pages and other dynamic content", ContentPermission.class), CONTENT("News, pages and other dynamic content", ContentPermission.class),
TERMINAL("Sales and self help terminal roles", TerminalPermission.class); TERMINAL("Sales and self help terminal roles", TerminalPermission.class),
// BILL("View all bills(r), Mark paid & modify(w), and create own bills (x)", LAYOUT("Layoutstuff", LayoutPermission.class),
// BillPermission.class)
// USER_MANAGEMENT("View all users(r), modify users(w), execute actions for user(x) "), ;
// ACCOUNT_MANAGEMENT("Manage others account events. view(r), modify(w) and create (shop)(x)"),
// MAP("view maps(r), Modify(w), reserve places from maps(x)"),
// ROLE_MANAGEMENT("User has right to view(r), modify(w) and assign(x) roles"),
// PRODUCT("View(r), modify(w), and shop(x) products"),
// SHOP("View own shopped events(r), Modify own AccountEvents() and Shop(x)"),
// GAME("View(r) own, modify(w), view all(X)"),
// POLL("View answers(r), create polls (w), answer to polls(x)");
private final String description; private final String description;
private final Class<? extends IAppPermission> permissions; private final Class<? extends IAppPermission> permissions;
......
package fi.insomnia.bortal.enums.apps;
import fi.insomnia.bortal.enums.BortalApplication;
public enum LayoutPermission implements IAppPermission {
MANAGE_MENU("Manage menus")
;
public static final String S_MANAGE_MENU = "LAYOUT/MANAGE_MENU";
private final String description;
private final String fullName;
private LayoutPermission(String desc) {
description = desc;
fullName = new StringBuilder().append(getParent().toString()).append(DELIMITER).append(toString()).toString();
}
@Override
public BortalApplication getParent() {
return BortalApplication.LAYOUT;
}
@Override
public String getDescription() {
return this.description;
}
@Override
public String getFullName() {
return fullName;
}
}
...@@ -14,7 +14,8 @@ public enum UserPermission implements IAppPermission { ...@@ -14,7 +14,8 @@ public enum UserPermission implements IAppPermission {
VIEW_ACCOUNTEVENTS("Show other users account events"), VIEW_ACCOUNTEVENTS("Show other users account events"),
MODIFY_ACCOUNTEVENTS("Modify Account events"), MODIFY_ACCOUNTEVENTS("Modify Account events"),
ANYUSER("All users have this anyways"), ANYUSER("All users have this anyways"),
MANAGE_HTTP_SESSION("Manage http sessions"), ; MANAGE_HTTP_SESSION("Manage http sessions"),
INVITE_USERS("Invite users"), ;
public static final String S_VIEW_ALL = "USER/VIEW_ALL"; public static final String S_VIEW_ALL = "USER/VIEW_ALL";
public static final String S_MODIFY = "USER/MODIFY"; public static final String S_MODIFY = "USER/MODIFY";
...@@ -28,6 +29,7 @@ public enum UserPermission implements IAppPermission { ...@@ -28,6 +29,7 @@ public enum UserPermission implements IAppPermission {
public static final String S_MODIFY_ACCOUNTEVENTS = "USER/MODIFY_ACCOUNTEVENTS"; public static final String S_MODIFY_ACCOUNTEVENTS = "USER/MODIFY_ACCOUNTEVENTS";
public static final String S_ANYUSER = "USER/ANYUSER"; public static final String S_ANYUSER = "USER/ANYUSER";
public static final String S_MANAGE_HTTP_SESSION = "USER/MANAGE_HTTP_SESSION"; public static final String S_MANAGE_HTTP_SESSION = "USER/MANAGE_HTTP_SESSION";
public static final String S_INVITE_USERS = "USER/INVITE_USERS";
private String description; private String description;
private String fullName; private String fullName;
......
...@@ -5,7 +5,7 @@ import java.util.List; ...@@ -5,7 +5,7 @@ import java.util.List;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public class SearchResult<T extends ModelInterface<?>> implements Serializable { public class SearchResult<T extends ModelInterface> implements Serializable {
/** /**
* *
......
...@@ -2,9 +2,9 @@ package fi.insomnia.bortal.utilities.jpa; ...@@ -2,9 +2,9 @@ package fi.insomnia.bortal.utilities.jpa;
import java.io.Serializable; import java.io.Serializable;
public interface ModelInterface<T extends Serializable> extends Serializable { public interface ModelInterface extends Serializable {
T getId(); Integer getId();
void setId(T id); void setId(Integer id);
} }
...@@ -2,7 +2,7 @@ package fi.insomnia.bortal.utilities.jsf; ...@@ -2,7 +2,7 @@ package fi.insomnia.bortal.utilities.jsf;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public interface EntityFinderBean<E extends ModelInterface<Integer>> { public interface EntityFinderBean<E extends ModelInterface> {
public E find(Integer id); public E find(Integer id);
......
package fi.insomnia.bortal.utilities.jsf;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public abstract class GenericIntegerEntityConverter<T extends ModelInterface> implements Converter {
protected abstract T find(Integer id);
public GenericIntegerEntityConverter() {
super();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
T ret = null;
Integer id = null;
if (value != null) {
id = Integer.parseInt(value);
if (id != null && id > 0) {
ret = find(id);
}
}
return ret;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
String ret = "0";
if (value != null && value instanceof ModelInterface) {
ModelInterface entity = (ModelInterface) value;
if (entity.getId() != null) {
ret = entity.getId().toString();
}
}
return ret;
}
}
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
<default-locale>fi_FI</default-locale> <default-locale>fi_FI</default-locale>
<supported-locale>fi_fi_XII</supported-locale> <supported-locale>fi_fi_XII</supported-locale>
<supported-locale>en_ST_v7</supported-locale> <supported-locale>en_ST_v7</supported-locale>
<supported-locale>en_ST_nine</supported-locale>
</locale-config> </locale-config>
</application> </application>
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +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>Development</param-value> <!--<param-value>Development</param-value> -->
<!--param-value>Production</param-value--> <param-value>Production</param-value>
</context-param> </context-param>
<context-param> <context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name> <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
...@@ -72,6 +72,7 @@ ...@@ -72,6 +72,7 @@
</servlet> </servlet>
<servlet-mapping> <servlet-mapping>
<servlet-name>Faces Servlet</servlet-name> <servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
<url-pattern>*.wtf</url-pattern> <url-pattern>*.wtf</url-pattern>
<url-pattern>/faces/*</url-pattern> <url-pattern>/faces/*</url-pattern>
</servlet-mapping> </servlet-mapping>
...@@ -148,6 +149,6 @@ ...@@ -148,6 +149,6 @@
<url-pattern>/PlaceGroupPdf</url-pattern> <url-pattern>/PlaceGroupPdf</url-pattern>
</servlet-mapping> </servlet-mapping>
</web-app> </web-app>
\ No newline at end of file
...@@ -14,10 +14,9 @@ ...@@ -14,10 +14,9 @@
<ui:define name="content"> <ui:define name="content">
<h:form id="billform"> <h:form id="billform">
<h:inputHidden value="#{billEditView.bill.id}" />
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:outputLabel for="paidDate" value="#{i18n['bill.paidDate']}:" /> <h:outputLabel for="paidDate" value="#{i18n['bill.paidDate']}:" />
<h:inputText id="paidDate" value="#{billEditView.bill.paidDate.time}"> <h:inputText id="paidDate" value="#{billEditView.bill.paidDate}">
<f:convertDateTime /> <f:convertDateTime />
</h:inputText> </h:inputText>
<h:outputLabel value="#{i18n['bill.billNumber']}:" /> <h:outputLabel value="#{i18n['bill.billNumber']}:" />
...@@ -39,7 +38,7 @@ ...@@ -39,7 +38,7 @@
<h:inputText value="#{billEditView.bill.addr5}" /> <h:inputText value="#{billEditView.bill.addr5}" />
<h:outputLabel for="sentDate" value="#{i18n['bill.sentDate']}:" /> <h:outputLabel for="sentDate" value="#{i18n['bill.sentDate']}:" />
<h:inputText id="sentDate" value="#{billEditView.bill.sentDate.time}"> <h:inputText id="sentDate" value="#{billEditView.bill.sentDate}">
<f:convertDateTime /> <f:convertDateTime />
</h:inputText> </h:inputText>
...@@ -70,7 +69,6 @@ ...@@ -70,7 +69,6 @@
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n[billine.name]}" /> <h:outputText value="#{i18n[billine.name]}" />
</f:facet> </f:facet>
<h:inputHidden value="#{billine.id}" />
<h:inputText value="#{billine.name}" /> <h:inputText value="#{billine.name}" />
</h:column> </h:column>
<h:column> <h:column>
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
<h:outputLabel value="#{i18n['eventorg.bankName2']}:" /> <h:outputLabel value="#{i18n['eventorg.bankName2']}:" />
<h:inputText value="#{eventorgView.eventorg.bankName2}" /> <h:inputText value="#{eventorgView.eventorg.bankName2}" />
<h:commandButton id="commitbtn" action="#{eventorgView.save()}" value="#{i18n['eventorg.save']}" /> <h:commandButton id="commitbtn" action="#{eventorgView.saveEvent()}" value="#{i18n['eventorg.save']}" />
</h:panelGrid> </h:panelGrid>
</h:form> </h:form>
......
...@@ -15,9 +15,6 @@ ...@@ -15,9 +15,6 @@
<h:outputLabel value="#{i18n['event.name']}:" /> <h:outputLabel value="#{i18n['event.name']}:" />
<h:inputText value="#{eventorgView.event.name}" /> <h:inputText value="#{eventorgView.event.name}" />
<h:outputLabel value="#{i18n['event.referer']}:" />
<h:inputText value="#{eventorgView.event.referer}" />
<h:outputLabel value="#{i18n['event.referenceNumberBase']}:" /> <h:outputLabel value="#{i18n['event.referenceNumberBase']}:" />
<h:inputText value="#{eventorgView.event.referenceNumberBase}" /> <h:inputText value="#{eventorgView.event.referenceNumberBase}" />
...@@ -44,7 +41,7 @@ ...@@ -44,7 +41,7 @@
</h:form> </h:form>
<h:form> <h:form>
<h:inputText value="#{eventorgView.newdomain}" /> <h:inputText value="#{eventorgView.newdomain}" />
<h:commandButton action="#{eventorgView.addDomain()}" value="#{eventdomain.add}"/> <h:commandButton action="#{eventorgView.addDomain()}" value="#{i18n['eventdomain.add']}" />
<h:dataTable var="domain" value="#{eventorgView.eventdomains}"> <h:dataTable var="domain" value="#{eventorgView.eventdomains}">
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
...@@ -53,7 +50,7 @@ ...@@ -53,7 +50,7 @@
<h:outputText value="#{domain.domain}" /> <h:outputText value="#{domain.domain}" />
</h:column> </h:column>
<h:column> <h:column>
<h:commandButton action="#{eventorgView.removeDomain()}" value="#{i18n['eventdomain.remove']}"/> <h:commandButton action="#{eventorgView.removeDomain()}" value="#{i18n['eventdomain.remove']}" />
</h:column> </h:column>
</h:dataTable> </h:dataTable>
......
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
>
<h:head>
<title></title>
</h:head>
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:define name="content">
<h:outputLabel rendered="#{sessionHandler.isInDevelopmentMode()}">
Development-tilassa.
Vaihda web.xml-tiedostosta ohjelman tila (javax.faces.PROJECT_STAGE) Productioniksi ennen kuin julkaiset ohjelman tuotantoon.
</h:outputLabel>
<h1>Insomnia lippukauppa</h1>
<h3>Lippujen hinnat</h3>
<ul>
<li>1-4 konepaikkaa 30e/paikka</li>
<li>5-8 konepaikkaa 28e/paikka</li>
<li>9 tai useampi konepaikkaa 26e/paikka</li>
<li>Konepaikat ovelta 32e/paikka</li>
<li>PRO-paikka 45e/paikka</li>
<li>Vierailijalippu 10e/lippu</li>
</ul>
<h3>Rekisteröityminen ja lippujen tilaaminen</h3>
<p>Tilataksesi konepaikkoja sinun tulee rekisteröityä Insomnian lippukauppaan. Rekisteröitymisvaiheessa teet
käyttäjätunnuksen ja tilaat haluamasi määrän konepaikkoja.</p>
<h3>Maksaminen</h3>
<p>
Lippukauppaan ilmestyy lasku tilaamiesi konepaikkojen ja lippujen mukaisesti. Laskusta löydät kaikki maksamiseen
tarvittavat tiedot.<br /> <br /> <b>Muista käyttää viitenumeroa laskua maksaessasi!</b> Huomioithan myös
pankkiviiveet maksaessasi muusta pankista kuin Osuuspankista. Maksut tarkastetaan pari kertaa päivässä. Maksuja ei
palauteta ilman erittäin hyvää syytä (esimerkiksi sairaustapauksissa lääkärintodistusta vastaan).
</p>
<h3>Paikkojen varaaminen</h3>
<p>Kun olet maksanut saamasi laskun ja olemme kirjanneet maksusi, saat sähköpostiisi ilmoituksen kun voit varata
paikkoja. Tällöin voit varata paikkakartalta tilaamasi määrän konepaikkoja.</p>
<h3>Lippujen lunastaminen tapahtuman yhteydessä</h3>
<p>Kun olet täyttänyt tietosi järjestelmään, tulosta tilauksesi mukaiset viivakoodit ja jaa ne ryhmäsi jäsenille.
Viivakoodin avulla nopeutat lippujen lunastusta huomattavasti.</p>
<h3>Tavalliset konepaikat ja pro-konepaikat</h3>
<p>
Tapahtumassa on tarjolla sekä tavallisia 80cm leveitä konepaikkoja että myös rajattu määrä normaaleista
konepaikoista poikkeavia pro-konepaikkoja.<br /> <br /> Pro-konepaikoilla pääsee nauttimaan suuremmasta tilasta,
sillä konepaikan leveys on 100cm ja lisäksi paikat on jaoteltu viiden konepaikan riveihin. Pro-konepaikkojen
käytävävälit ovat myös leveämmät.
</p>
<h3>Kysymykset</h3>
<p>Mikäli mieltäsi askarruttaa jokin liittyen tapahtuman konepaikkoihin tai lippukauppaan, ota rohkeasti yhteyttä
sähköpostilla osoitteeseen info [at] insomnia.fi.</p>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!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:ui="http://java.sun.com/jsf/facelets" <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:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
>
<h:head> <h:head>
<title></title> <title></title>
</h:head> </h:head>
...@@ -9,56 +7,11 @@ ...@@ -9,56 +7,11 @@
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:define name="content"> <ui:define name="content">
<h:outputLabel rendered="#{sessionHandler.isInDevelopmentMode()}"> <h:outputLabel rendered="#{sessionHandler.isInDevelopmentMode()}">
Development-tilassa. Development-tilassa.
Vaihda web.xml-tiedostosta ohjelman tila (javax.faces.PROJECT_STAGE) Productioniksi ennen kuin julkaiset ohjelman tuotantoon. Vaihda web.xml-tiedostosta ohjelman tila (javax.faces.PROJECT_STAGE) Productioniksi ennen kuin julkaiset ohjelman tuotantoon.
</h:outputLabel> </h:outputLabel>
<h1>Insomnia lippukauppa</h1>
<h3>Lippujen hinnat</h3>
<ul>
<li>1-4 konepaikkaa 30e/paikka</li>
<li>5-8 konepaikkaa 28e/paikka</li>
<li>9 tai useampi konepaikkaa 26e/paikka</li>
<li>Konepaikat ovelta 32e/paikka</li>
<li>PRO-paikka 45e/paikka</li>
<li>Vierailijalippu 10e/lippu</li>
</ul>
<h3>Rekisteröityminen ja lippujen tilaaminen</h3>
<p>Tilataksesi konepaikkoja sinun tulee rekisteröityä Insomnian lippukauppaan. Rekisteröitymisvaiheessa teet
käyttäjätunnuksen ja tilaat haluamasi määrän konepaikkoja.</p>
<h3>Maksaminen</h3>
<p>
Lippukauppaan ilmestyy lasku tilaamiesi konepaikkojen ja lippujen mukaisesti. Laskusta löydät kaikki maksamiseen
tarvittavat tiedot.<br /> <br /> <b>Muista käyttää viitenumeroa laskua maksaessasi!</b> Huomioithan myös
pankkiviiveet maksaessasi muusta pankista kuin Osuuspankista. Maksut tarkastetaan pari kertaa päivässä. Maksuja ei
palauteta ilman erittäin hyvää syytä (esimerkiksi sairaustapauksissa lääkärintodistusta vastaan).
</p>
<h3>Paikkojen varaaminen</h3>
<p>Kun olet maksanut saamasi laskun ja olemme kirjanneet maksusi, saat sähköpostiisi ilmoituksen kun voit varata
paikkoja. Tällöin voit varata paikkakartalta tilaamasi määrän konepaikkoja.</p>
<h3>Lippujen lunastaminen tapahtuman yhteydessä</h3>
<p>Kun olet täyttänyt tietosi järjestelmään, tulosta tilauksesi mukaiset viivakoodit ja jaa ne ryhmäsi jäsenille.
Viivakoodin avulla nopeutat lippujen lunastusta huomattavasti.</p>
<h3>Tavalliset konepaikat ja pro-konepaikat</h3>
<p>
Tapahtumassa on tarjolla sekä tavallisia 80cm leveitä konepaikkoja että myös rajattu määrä normaaleista
konepaikoista poikkeavia pro-konepaikkoja.<br /> <br /> Pro-konepaikoilla pääsee nauttimaan suuremmasta tilasta,
sillä konepaikan leveys on 100cm ja lisäksi paikat on jaoteltu viiden konepaikan riveihin. Pro-konepaikkojen
käytävävälit ovat myös leveämmät.
</p>
<h3>Kysymykset</h3>
<p>Mikäli mieltäsi askarruttaa jokin liittyen tapahtuman konepaikkoihin tai lippukauppaan, ota rohkeasti yhteyttä
sähköpostilla osoitteeseen info [at] insomnia.fi.</p>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
<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>
<img src="#{request.contextPath}/resources/style/insomnia2/img/logo.png" /> <!-- <img src="#{request.contextPath}/resources/style/insomnia2/img/logo.png" /> -->
<h1>STREAM INTRA</h1>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
</h:link> </h:link>
...@@ -32,9 +33,10 @@ ...@@ -32,9 +33,10 @@
</div> </div>
<div id="login"> <div id="login">
<h:outputText rendered="#{sessionHandler.loggedIn}" value="Olet kirjautunut käyttäjällä: #{sessionHandler.currentUser.nick}" /> <h:outputText rendered="#{sessionHandler.loggedIn}" value="#{i18n['template.loggedInAs']} #{sessionHandler.currentUser.nick}" />
<div>
<tools:loginLogout /> <tools:loginLogout />
</div>
</div> </div>
<ui:fragment rendered="#{menuView.getMenu(0).size() > 1}"> <ui:fragment rendered="#{menuView.getMenu(0).size() > 1}">
<ul id="topmenu"> <ul id="topmenu">
...@@ -67,7 +69,13 @@ ...@@ -67,7 +69,13 @@
<div id="left"> <div id="left">
<ui:insert name="title" /> <ui:insert name="title" />
<h:messages globalOnly="true" /> <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:insert name="content" />
<ui:repeat var="cont1" value="#{menuView.getPagecontent('bottom')}">
<h:outputText value="#{cont1.content}" escape="false" />
</ui:repeat>
</div> </div>
</div> </div>
......
<!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:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{menuListView.initList}" />
</f:metadata>
<ui:define name="content">
<h1>#{i18n['menulist.header']}</h1>
<h:dataTable styleClass="bordertable" id="menulist" value="#{menuListView.menus}" var="menu">
<h:column>
<f:facet name="header">
#
</f:facet>
<h:outputText value="#{menu.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['menu.name']}" />
</f:facet>
<h:outputText value="#{menu.key}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['menu.sort']}" />
</f:facet>
<h:outputText value="#{menu.sort}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['menu.item']}" />
</f:facet>
<h:outputText value="#{menu.item}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['menu.sort']}" />
</f:facet>
<h:outputText value="#{menu.sort}" />
</h:column>
<h:column>
<h:commandButton action="#{menuListView.selectMenu}" value="#{i18n['menu.select']}" />
</h:column>
</h:dataTable>
</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:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{menuListView.initList}" />
</f:metadata>
<ui:define name="content">
<h1>#{i18n['menulist.header']}</h1>
<h:dataTable styleClass="bordertable" id="menulist" value="#{menuListView.menus}" var="menu">
<h:column>
<f:facet name="header">
#
</f:facet>
<h:outputText value="#{menu.id}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['menu.name']}" />
</f:facet>
<h:outputText value="#{menu.key}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['menu.sort']}" />
</f:facet>
<h:outputText value="#{menu.sort}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['menu.item']}" />
</f:facet>
<h:outputText value="#{menu.item}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['menu.sort']}" />
</f:facet>
<h:outputText value="#{menu.sort}" />
</h:column>
<h:column>
<h:commandButton action="#{menuListView.selectMenu}" value="#{i18n['menu.select']}" />
</h:column>
</h:dataTable>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
<f:viewParam name="newsgroupid" value="#{newsgroupView.newsgroupid}" /> <f:viewParam name="newsgroupid" value="#{newsgroupView.newsgroupid}" />
<f:event type="preRenderView" listener="#{newsgroupView.initView}" /> <f:event type="preRenderView" listener="#{newsgroupView.initView}" />
</f:metadata> </f:metadata>
<ui:param name="thispage" value="page.user.edit" />
<ui:define name="content"> <ui:define name="content">
<news:edit commitaction="#{newsgroupView.saveNewsgroup()}" commitvalue="#{i18n['newsgroup.save']}" /> <news:edit commitaction="#{newsgroupView.saveNewsgroup()}" commitvalue="#{i18n['newsgroup.save']}" />
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
<f:metadata> <f:metadata>
<f:event type="preRenderView" listener="#{sitePageView.initCreate}" /> <f:event type="preRenderView" listener="#{sitePageView.initCreate}" />
</f:metadata> </f:metadata>
<ui:param name="thispage" value="page.user.edit" />
<ui:define name="content"> <ui:define name="content">
<pages:edit commitaction="#{sitePageView.createSite()}" commitvalue="#{i18n['sitepage.create']}" /> <pages:edit commitaction="#{sitePageView.createSite()}" commitvalue="#{i18n['sitepage.create']}" />
......
...@@ -8,48 +8,15 @@ ...@@ -8,48 +8,15 @@
<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="newsgroupid" value="#{newsgroupView.newsgroupid}" /> <f:viewParam name="id" value="#{sitePageView.id}" />
<f:event type="preRenderView" listener="#{newsgroupView.initView}" /> <f:event type="preRenderView" listener="#{sitePageView.initEdit}" />
</f:metadata> </f:metadata>
<ui:param name="thispage" value="page.user.edit" />
<ui:define name="content">
<pages:edit commitaction="#{newsgroupView.saveNewsgroup()}" commitvalue="#{i18n['newsgroup.save']}" />
<ui:define name="content">
<h2>#{i18n['newsgroup.contents']}</h2> <pages:edit commitaction="#{sitePageView.saveSite()}" commitvalue="#{i18n['sitepage.save']}" />
<h:form>
<h:commandButton action="#{newsgroupView.createNews}" value="#{i18n['newsgroup.createNewNews']}" />
</h:form>
<h:dataTable var="news" value="#{newsgroupView.newsgroup.news}">
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['news.title']}" />
</f:facet>
<h:outputText value="#{news.title}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['news.publish']}" />
</f:facet>
<h:outputText value="#{news.publish.time}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['news.expire']}" />
</f:facet>
<h:outputText value="#{news.expire.time}" />
</h:column>
<h:column>
<h:link outcome="/news/editNews" value="#{i18n['news.edit']}">
<f:param name="newsid" value="#{news.id}" />
</h:link>
<h:outputText value="#{news.publish.time}" />
</h:column>
</h:dataTable>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
......
<!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:news="http://java.sun.com/jsf/composite/cditools/pages" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:viewParam name="newsid" value="#{newsgroupView.newsid}" />
<f:event type="preRenderView" listener="#{newsgroupView.initNews}" />
</f:metadata>
<ui:param name="thispage" value="page.user.edit" />
<ui:define name="content">
<h:outputScript target="head" library="script" name="jquery.min.js" />
<h:outputScript target="head" library="script" name="textinputs_jquery.js" />
<h:button onclick="var sel = $('#newsform:editor').getSelection(); alert(sel.start +', ' + sel.end);" value="Click me" />
<h:form id="newsform">
<h:panelGrid columns="3">
<h:outputLabel for="name" value="#{i18n['news.title']}:" />
<h:inputText id="name" value="#{newsgroupView.news.title}">
<f:validateRequired />
</h:inputText>
<h:message for="name" />
<h:outputLabel for="abstract" value="#{i18n['news.abstract']}:" />
<h:inputTextarea id="abstract" value="#{newsgroupView.news.bodyAbstract}" />
<h:message for="abstract" />
<h:outputLabel for="publish" value="#{i18n['news.publish']}:" />
<h:inputText id="publish" value="#{newsgroupView.news.publish}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:inputText>
<h:message for="publish" />
<h:outputLabel for="expire" value="#{i18n['news.expire']}:" />
<h:inputText id="expire" value="#{newsgroupView.news.expire}">
<f:convertDateTime pattern="#{sessionHandler.datetimeFormat}" timeZone="#{sessionHandler.timezone}" />
</h:inputText>
<h:message for="expire" />
</h:panelGrid>
<p:editor id="editor" value="#{newsgroupView.news.body}" />
<h:commandButton id="commit" action="#{newsgroupView.saveNews()}" value="#{i18n['news.save']}" />
</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:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:tools="http://java.sun.com/jsf/composite/cditools" xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:viewParam name="id" value="#{pageOutputView.id}" />
<f:event type="preRenderView" listener="#{pageOutputView.initView}" />
</f:metadata>
<ui:define name="content">
<ui:repeat var="cont" value="#{pageOutputView.contents}">
<h:outputText value="#{cont.content}" escape="false" />
</ui:repeat>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -6,41 +6,38 @@ ...@@ -6,41 +6,38 @@
<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:event type="preRenderView" listener="#{newsListView.initView}" /> <f:event type="preRenderView" listener="#{sitePageView.initListView}" />
</f:metadata> </f:metadata>
<ui:param name="thispage" value="page.user.create" />
<ui:define name="content"> <ui:define name="content">
<h1>#{i18n['newslist.header']}</h1> <h1>#{i18n['sitepagelist.header']}</h1>
<h:dataTable styleClass="bordertable" id="user" value="#{newsListView.newsgroups}" var="newsgroup"> <h:dataTable styleClass="bordertable" id="user" value="#{sitePageView.pages}" var="page">
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
# #
</f:facet> </f:facet>
<h:outputText value="#{newsgroup.id}" /> <h:outputText value="#{page.id}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['newsgroup.name']}" /> <h:outputText value="#{i18n['sitepage.name']}" />
</f:facet> </f:facet>
<h:outputText value="#{newsgroup.name}" /> <h:outputText value="#{page.name}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['newsgroup.priority']}" /> <h:outputText value="#{i18n['sitepage.roles']}" />
</f:facet> </f:facet>
<h:outputText value="#{newsgroup.priority}" /> <ul>
<ui:repeat var="r" value="#{page.allowedRoles}">
<li><h:outputText value="#{r.name}" /></li>
</ui:repeat>
</ul>
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <h:link outcome="/pages/edit" value="#{i18n['sitepage.edit']}">
<h:outputText value="#{i18n['newsgroup.writerRole']}" /> <f:param name="id" value="#{page.id}" />
</f:facet>
<h:outputText value="#{newsgroup.writerRole.name}" />
</h:column>
<h:column>
<h:link outcome="/news/edit" value="#{i18n['newsgroup.edit']}">
<f:param name="newsgroupid" value="#{newsgroup.id}" />
</h:link> </h:link>
</h:column> </h:column>
</h:dataTable> </h:dataTable>
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
<h1>edit:</h1> <h1>edit:</h1>
<h:form id="placeEdit"> <h:form id="placeEdit">
<h:inputHidden value="#{placeView.place.id}" />
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:outputLabel value="#{i18n['place.name']}:" /> <h:outputLabel value="#{i18n['place.name']}:" />
<h:inputText value="#{placeView.place.name}" /> <h:inputText value="#{placeView.place.name}" />
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
<h1>#{i18n['editplacegroup.header']}</h1> <h1>#{i18n['editplacegroup.header']}</h1>
<h:form id="placegroupform"> <h:form id="placegroupform">
<h:inputHidden value="#{placegroupView.group.id}" />
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:outputLabel value="#{i18n['placegroup.name']}:" /> <h:outputLabel value="#{i18n['placegroup.name']}:" />
...@@ -67,7 +66,6 @@ ...@@ -67,7 +66,6 @@
<h:panelGroup rendered="#{!empty placegroupView.place}"> <h:panelGroup rendered="#{!empty placegroupView.place}">
<h2>#{i18n['placegroupView.editplace']}</h2> <h2>#{i18n['placegroupView.editplace']}</h2>
<h:form id="placeEdit"> <h:form id="placeEdit">
<h:inputHidden value="#{placegroupView.place.id}" />
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:outputLabel value="#{i18n['place.name']}:" /> <h:outputLabel value="#{i18n['place.name']}:" />
<h:inputText value="#{placegroupView.place.name}" /> <h:inputText value="#{placegroupView.place.name}" />
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:outputText value="#{i18n['placemanagement.placeNameLike']}" /><h:inputText value="#{place}" /> <h:outputText value="#{i18n['placemanagement.placeNameLike']}" /><h:inputText value="#{place}" />
<h:outputLabel for="paidDate" value="#{i18n['bill.paidDate']}:" /> <h:outputLabel for="paidDate" value="#{i18n['bill.paidDate']}:" />
<h:inputText id="paidDate" value="#{billManageView.bill.paidDate.time}"> <h:inputText id="paidDate" value="#{billManageView.bill.paidDate}">
<f:convertDateTime /> <f:convertDateTime />
</h:inputText> </h:inputText>
<h:outputLabel value="#{i18n['bill.billNumber']}:" /> <h:outputLabel value="#{i18n['bill.billNumber']}:" />
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
<f:metadata> <f:metadata>
<f:event type="preRenderView" listener="#{productListView.initView}" /> <f:event type="preRenderView" listener="#{productListView.initView}" />
</f:metadata> </f:metadata>
<ui:param name="thispage" value="page.product.list" />
<ui:define name="content"> <ui:define name="content">
<products:list /> <products:list />
</ui:define> </ui:define>
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
<composite:implementation> <composite:implementation>
<h:form id="productform"> <h:form id="productform">
<h:inputHidden value="#{mapManageView.map.id}" />
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:outputLabel value="#{i18n['eventmap.name']}:" /> <h:outputLabel value="#{i18n['eventmap.name']}:" />
<h:inputText value="#{mapManageView.map.name}" /> <h:inputText value="#{mapManageView.map.name}" />
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
<h:outputText value="#{mapView.placesLeftToSelect}" /> <h:outputText value="#{mapView.placesLeftToSelect}" />
<h:outputLabel rendered="#{mapView.canUserBuy()}" value="#{i18n['user.accountBalance']}:" /> <h:outputLabel rendered="#{mapView.canUserBuy()}" value="#{i18n['user.accountBalance']}:" />
<h:outputText rendered="#{mapView.canUserBuy()}" value="#{mapView.user.accountBalance}"> <h:outputText rendered="#{mapView.canUserBuy()}" value="#{mapView.accountBalance}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" /> <f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
</h:outputText> </h:outputText>
......
<?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:attribute name="commitvalue" required="true" />
<composite:attribute name="commitaction" required="true" method-signature="java.lang.String action()" />
</composite:interface>
<composite:implementation>
<h:form id="newsform">
<h:panelGrid columns="3">
<h:outputLabel for="name" value="#{i18n['newsgroup.name']}:" />
<h:inputText id="name" value="#{newsgroupView.newsgroup.name}">
<f:validateRequired />
</h:inputText>
<h:message for="name" />
<h:outputLabel for="priority" value="#{i18n['newsgroup.priority']}:" />
<h:inputText id="priority" value="#{newsgroupView.newsgroup.priority}">
<f:validateLongRange minimum="1" maximum="9999999" />
</h:inputText>
<h:message for="priority" />
<h:outputLabel for="writerrole" value="#{i18n['newsgroup.writerRole']}:" />
<h:selectOneMenu converter="#{roleConverter}" id="writerrole" value="#{newsgroupView.newsgroup.writerRole}">
<f:selectItems var="par" itemLabel="#{par.name}" value="#{roleDataView.roles}" />
</h:selectOneMenu>
<h:message for="writerrole" />
<h:outputLabel for="readroles" value="#{i18n['newsgroup.readerRole']}" />
<h:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" id="readroles"
value="#{newsgroupView.newsgroup.readerRoles}"
>
<f:selectItems var="par" itemLabel="#{par.name}" value="#{roleDataView.roles}" />
</h:selectManyCheckbox>
<h:message for="readroles" />
</h:panelGrid>
<h:commandButton id="commitbtn" action="#{cc.attrs.commitaction}" value="#{cc.attrs.commitvalue}" />
</h:form>
</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:p="http://primefaces.org/ui" xmlns:tools="http://java.sun.com/jsf/composite/tools">
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tools="http://java.sun.com/jsf/composite/tools"
>
<composite:interface> <composite:interface>
...@@ -16,34 +14,35 @@ ...@@ -16,34 +14,35 @@
<h:form id="newsform"> <h:form id="newsform">
<h:panelGrid columns="3"> <h:panelGrid columns="3">
<h:outputLabel for="name" value="#{i18n['newsgroup.name']}:" /> <h:outputLabel for="name" value="#{i18n['sitepage.name']}:" />
<h:inputText id="name" value="#{newsgroupView.newsgroup.name}"> <h:inputText id="name" value="#{sitePageView.sitepage.name}">
<f:validateRequired /> <f:validateRequired />
</h:inputText> </h:inputText>
<h:message for="name" /> <h:message for="name" />
<h:outputLabel for="priority" value="#{i18n['newsgroup.priority']}:" />
<h:inputText id="priority" value="#{newsgroupView.newsgroup.priority}">
<f:validateLongRange minimum="1" maximum="9999999" />
</h:inputText>
<h:message for="priority" />
<h:outputLabel for="writerrole" value="#{i18n['newsgroup.writerRole']}:" />
<h:selectOneMenu converter="#{roleConverter}" id="writerrole" value="#{newsgroupView.newsgroup.writerRole}">
<f:selectItems var="par" itemLabel="#{par.name}" value="#{roleDataView.roles}" />
</h:selectOneMenu>
<h:message for="writerrole" />
<h:outputLabel for="readroles" value="#{i18n['newsgroup.readerRole']}" /> <h:outputLabel for="roles" value="#{i18n['sitepage.roles']}" />
<h:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" id="readroles" <h:selectManyCheckbox converter="#{roleConverter}" layout="pageDirection" id="roles" value="#{sitePageView.sitepage.allowedRoles}">
value="#{newsgroupView.newsgroup.readerRoles}"
>
<f:selectItems var="par" itemLabel="#{par.name}" value="#{roleDataView.roles}" /> <f:selectItems var="par" itemLabel="#{par.name}" value="#{roleDataView.roles}" />
</h:selectManyCheckbox> </h:selectManyCheckbox>
<h:message for="readroles" /> <h:message for="roles" />
</h:panelGrid> </h:panelGrid>
<h:commandButton id="commitbtn" action="#{cc.attrs.commitaction}" value="#{cc.attrs.commitvalue}" />
<div>
<h:commandButton id="commitbtn" action="#{cc.attrs.commitaction}" value="#{cc.attrs.commitvalue}" />
</div>
<ui:fragment rendered="#{!empty sitePageView.sitepage.id}">
<div>
<h:commandButton action="#{sitePageView.addPageContent()}" value="#{i18n['sitepage.addContent']}" />
</div>
</ui:fragment>
<ui:repeat rendered="#{!empty sitePageView.sitepage.contents}" value="#{sitePageView.sitepage.contents}" var="cont">
<div>
<p:editor value="#{cont.content}" />
</div>
</ui:repeat>
</h:form> </h:form>
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<composite:implementation> <composite:implementation>
<h:form> <h:form>
<h:dataTable border="1" id="product" value="#{productListView.products}" var="product"> <h:dataTable border="1" id="product" value="#{productListView.results}" var="product">
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="${i18n['product.name']}" /> <h:outputText value="${i18n['product.name']}" />
......
...@@ -49,15 +49,15 @@ ...@@ -49,15 +49,15 @@
<h:commandButton action="#{productShopView.add(-1)}" value="#{i18n['productshop.minusOne']}"> <h:commandButton action="#{productShopView.add(-1)}" value="#{i18n['productshop.minusOne']}">
<f:ajax render="@form" /> <f:ajax render="@form" />
</h:commandButton> </h:commandButton>
<h:inputText size="4" id="cartcount" value="#{cart.count}" /> <h:inputText size="4" id="cartcount" value="#{cart.count}">
<h:commandButton action="#{productShopView.add(1)}" value="#{i18n['productshop.plusOne']}"> <f:ajax render="@form" event="valueChange"/>
<f:ajax render="@form" /> </h:inputText>
</h:commandButton> <h:commandButton action="#{productShopView.add(1)}" value="#{i18n['productshop.plusOne']}">
<h:commandButton action="#{productShopView.add(10)}" value="#{i18n['productshop.plusTen']}"> <f:ajax render="@form" />
<f:ajax render="@form" /> </h:commandButton>
</h:commandButton> <h:commandButton action="#{productShopView.add(10)}" value="#{i18n['productshop.plusTen']}">
<h:inputHidden value="#{cart.id}" /> <f:ajax render="@form" />
</h:commandButton>
</h:column> </h:column>
<h:column> <h:column>
<h:dataTable border="0" var="disc" value="#{cart.discounts}"> <h:dataTable border="0" var="disc" value="#{cart.discounts}">
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
<p> <p>
<h:form id="roleform"> <h:form id="roleform">
<h:inputHidden id="id" value="roleView.role.id" />
<f:facet name="errorMessage"> <f:facet name="errorMessage">
<h:outputText value="#{i18n['nasty.user']}" /> <h:outputText value="#{i18n['nasty.user']}" />
......
<?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:c="http://java.sun.com/jsp/jstl/core" xmlns:tools="http://java.sun.com/jsf/composite/tools"
>
<composite:interface> <composite:interface>
</composite:interface> </composite:interface>
...@@ -68,7 +66,7 @@ ...@@ -68,7 +66,7 @@
</f:facet> </f:facet>
<h:outputText value="#{user.email}" /> <h:outputText value="#{user.email}" />
</h:column> </h:column>
<h:column> <!-- <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['user.accountBalance']}" /> <h:outputText value="#{i18n['user.accountBalance']}" />
</f:facet> </f:facet>
...@@ -76,7 +74,7 @@ ...@@ -76,7 +74,7 @@
<f:convertNumber /> <f:convertNumber />
</h:outputText> </h:outputText>
</h:column> </h:column>
<!-- <h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['user.image']}" /> <h:outputText value="#{i18n['user.image']}" />
</f:facet> </f:facet>
......
...@@ -19,12 +19,29 @@ body,html { ...@@ -19,12 +19,29 @@ body,html {
float: left; float: left;
} }
#logo h1 {
margin: 5px;
color: white:
}
#logo a {
text-decoration: none;
color: white;
}
#login { #login {
width: 400px; width: 400px;
height: 23px; height: 23px;
float: right; float: right;
margin-top: 15px; margin-top: 10px;
color: #fff; color: #fff;
font-size: 14px;
text-align: right;
}
#login a {
color: white;
} }
.form { .form {
...@@ -171,8 +188,8 @@ a:hover { ...@@ -171,8 +188,8 @@ a:hover {
#topmenu a { #topmenu a {
color: #fff; color: #fff;
text-decoration:none; text-decoration: none;
display:block; display: block;
} }
#topmenu li { #topmenu li {
......
<!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" <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"
xmlns:h="http://java.sun.com/jsf/html" xmlns:users="http://java.sun.com/jsf/composite/cditools/user" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core">
xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/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>
<f:event type="preRenderView" listener="#{inviteAcceptView.initView}" />
<f:viewParam name="token" value="#{inviteAcceptView.token}" /> <f:viewParam name="token" value="#{inviteAcceptView.token}" />
</f:metadata> </f:metadata>
<ui:param name="thispage" value="page.user.acceptinvite" />
<ui:define name="content"> <ui:define name="content">
<users:edit creating="true" commitaction="#{inviteAcceptView.createUser()}" commitvalue="#{i18n['user.create']}" /> <users:edit creating="true" commitaction="#{inviteAcceptView.createUser()}" commitvalue="#{i18n['user.create']}" />
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
</ui:define> </ui:define>
<ui:define name="content"> <ui:define name="content">
<h:outputLabel value="#{i18n['user.accountBalance']}: " for="accountbalance" /> <h:outputLabel value="#{i18n['user.accountBalance']}: " for="accountbalance" />
<h:outputText id="accountbalance" value="#{userView.user.accountBalance}" /> <h:outputText id="accountbalance" value="#{userView.accountBalance}" />
<h:dataTable border="1" id="ac" value="#{userView.user.accountEvents}" var="ac"> <h:dataTable border="1" id="ac" value="#{userView.accountEvents}" var="ac">
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['accountEvent.productname']}" /> <h:outputText value="#{i18n['accountEvent.productname']}" />
......
<!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:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:define name="content">
<h:form id="wrapform">
<h:dataTable id="tbl" border="1" value="#{importView.wrapper}" var="wra">
<h:column>
<h:selectBooleanCheckbox id="skip" value="#{wra.skip}" />
</h:column>
<h:column>
<h:outputText value="#{wra.user.login}" />
</h:column>
<h:column>
<h:outputText value="#{wra.user.firstnames}" />
</h:column>
<h:column>
<h:outputText value="#{wra.user.lastname}" />
</h:column>
<h:column>
<h:outputText value="#{wra.user.email}" />
</h:column>
<h:column>
<h:outputText value="#{wra.user.accountBalance}" />
</h:column>
<h:column>
<h:selectOneRadio id="selected" value="#{wra.selected}" layout="pageDirection" converter="#{userConverter}">
<f:selectItems var="pot" value="#{wra.potential}" itemLabel="#{pot.id}/#{pot.login}/#{pot.firstnames}/#{pot.lastname}" />
</h:selectOneRadio>
</h:column>
</h:dataTable>
<h:commandButton action="#{importView.commitImport}" value="#{i18n['userImport.commit']}" />
</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:users="http://java.sun.com/jsf/composite/cditools/user"
xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<f:metadata>
<f:event type="preRenderView" listener="#{importView.initImport}" />
</f:metadata>
<ui:define name="content">
<h:form enctype="multipart/form-data">
<h:panelGrid columns="3">
<h:outputLabel for="templ" value="#{i18n['importuser.template']}" />
<h:selectOneMenu id="templ" value="#{importView.template}" converter="#{cardTemplateConverter}">
<f:selectItems value="#{importView.templates}" var="templ" itemLabel="#{templ.name}" />
</h:selectOneMenu>
<h:message for="templ" />
<h:outputLabel for="file" value="#{i18n['importuser.file']}"/>
<p:fileUpload id="file" value="#{importView.file}" mode="simple" />
<h:message for="file" />
</h:panelGrid>
<h:commandButton action="#{importView.parse()}" value="Parse" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!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" <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/tools/user"
xmlns:h="http://java.sun.com/jsf/html" xmlns:users="http://java.sun.com/jsf/composite/tools/user" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core">
xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<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.user.create" />
<ui:define name="content">
<ui:define name="title">
<h1>#{i18n['user.page.invite']}</h1> <h1>#{i18n['user.page.invite']}</h1>
</ui:define>
<ui:define name="content">
<h:form> <h:form>
<h:panelGrid columns="3"> <h:panelGrid columns="3">
<h:outputLabel for="invite" /> <h:outputLabel for="invite" value="#{i18n['user.invitemail']}" />
<h:inputText id="invite" value="#{inviteView.invitemail}" /> <h:inputText id="invite" value="#{inviteView.invitemail}" required="true" />
<h:message for="invite" /> <h:message for="invite" />
</h:panelGrid> </h:panelGrid>
<h:commandButton action="#{inviteView.invite()}" value="#{i18n['user.invite']}" /> <h:commandButton action="#{inviteView.invite()}" value="#{i18n['user.invite']}" />
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
</h:dataTable> </h:dataTable>
</h:column> </h:column>
<h:column> <h:column>
<h:link outcome="/user/editCardTemplate" value="#{i18n['cardTemplate.edit']}"> <h:link outcome="/useradmin/editCardTemplate" value="#{i18n['cardTemplate.edit']}">
<f:param name="templateid" value="#{card.id}" /> <f:param name="templateid" value="#{card.id}" />
</h:link> </h:link>
</h:column> </h:column>
......
...@@ -11,12 +11,10 @@ import javax.servlet.ServletException; ...@@ -11,12 +11,10 @@ import javax.servlet.ServletException;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.SessionMgmtBeanLocal; import fi.insomnia.bortal.beans.SessionMgmtBeanLocal;
import fi.insomnia.bortal.clientutils.BortalLocalContextHolder; import fi.insomnia.bortal.clientutils.BortalLocalContextHolder;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -29,6 +27,7 @@ public class HostnameFilter implements Filter { ...@@ -29,6 +27,7 @@ public class HostnameFilter implements Filter {
private static final Logger logger = LoggerFactory private static final Logger logger = LoggerFactory
.getLogger(HostnameFilter.class); .getLogger(HostnameFilter.class);
private boolean developmentMode = false; private boolean developmentMode = false;
private static final String HTTP_HOSTNAME_ID = "hostname_session_id";
@EJB @EJB
private SessionMgmtBeanLocal sessionmgmt; private SessionMgmtBeanLocal sessionmgmt;
...@@ -59,29 +58,47 @@ public class HostnameFilter implements Filter { ...@@ -59,29 +58,47 @@ public class HostnameFilter implements Filter {
if (request != null && request instanceof HttpServletRequest) { if (request != null && request instanceof HttpServletRequest) {
httpRequest = ((HttpServletRequest) request); httpRequest = ((HttpServletRequest) request);
StringBuffer url = httpRequest.getRequestURL(); StringBuffer url = httpRequest.getRequestURL();
// logger.info("Original hostname {}", url);
// Subject subj = Subject.getSubject(AccessController.getContext());
// int beginindex = 8; // Let's skip http://
int beginindex = 7; // Let's skip http:// int beginindex = url.indexOf("//", 0);
if (beginindex < 0)
{
beginindex = 0;
} else {
beginindex = beginindex + 2;
}
int slashindex = url.indexOf("/", beginindex);
// Find the first / from URL after http:// // Find the first / from URL after http://
int slashindex = url.indexOf("/", beginindex);
int colonindex = url.indexOf(":", beginindex); int colonindex = url.indexOf(":", beginindex);
int lastindex = slashindex; int lastindex = slashindex;
if (slashindex > colonindex) {
if (colonindex >= 0 && slashindex > colonindex) {
lastindex = colonindex; lastindex = colonindex;
} }
if (lastindex < 0) { if (lastindex < 0) {
lastindex = url.length() - 1; lastindex = url.length() - 1;
} }
String hostname = url.substring(beginindex, lastindex); String hostname = url.substring(beginindex, lastindex);
httpRequest.getSession().setAttribute( // httpRequest.getSession().setAttribute(EventBeanLocal.HTTP_URL_HOSTNAME,
EventBeanLocal.HTTP_URL_HOSTNAME, hostname); // hostname);
BortalLocalContextHolder.setHostname(hostname); BortalLocalContextHolder.setHostname(hostname);
BortalLocalContextHolder.setInDevelopmentMode(developmentMode); BortalLocalContextHolder.setInDevelopmentMode(developmentMode);
Object hostname_session_id = httpRequest.getSession().getAttribute(HTTP_HOSTNAME_ID);
if (hostname_session_id != null && hostname_session_id instanceof Integer) {
BortalLocalContextHolder.setHostnameId((Integer) hostname_session_id);
} else {
BortalLocalContextHolder.setHostnameId(null);
}
if (httpRequest.getUserPrincipal() == null) { if (httpRequest.getUserPrincipal() == null) {
try { try {
...@@ -90,7 +107,8 @@ public class HostnameFilter implements Filter { ...@@ -90,7 +107,8 @@ public class HostnameFilter implements Filter {
logger.warn("Error logging in as anonymous... ignoring.. ", logger.warn("Error logging in as anonymous... ignoring.. ",
t); t);
} }
} else if (!httpRequest.getUserPrincipal().getName().equals(User.ANONYMOUS_LOGINNAME)) }
else if (!httpRequest.getUserPrincipal().getName().equals(User.ANONYMOUS_LOGINNAME))
{ {
sessionmgmt.updateSessionUser(httpRequest.getSession().getId(), httpRequest.getUserPrincipal().getName()); sessionmgmt.updateSessionUser(httpRequest.getSession().getId(), httpRequest.getUserPrincipal().getName());
} }
...@@ -121,15 +139,15 @@ public class HostnameFilter implements Filter { ...@@ -121,15 +139,15 @@ public class HostnameFilter implements Filter {
} }
public static String getCurrentHostname(HttpSession sess) { // public static String getCurrentHostname(HttpSession sess) {
String ret = null; // String ret = null;
if (sess != null) { // if (sess != null) {
Object retObj = sess.getAttribute(EventBeanLocal.HTTP_URL_HOSTNAME); // Object retObj = sess.getAttribute(EventBeanLocal.HTTP_URL_HOSTNAME);
if (retObj != null) { // if (retObj != null) {
ret = retObj.toString(); // ret = retObj.toString();
} // }
} // }
return ret; // return ret;
} // }
} }
...@@ -51,7 +51,7 @@ public class SessionHandler { ...@@ -51,7 +51,7 @@ public class SessionHandler {
public String getLocale() { public String getLocale() {
// TODO: Locale selection code missing // TODO: Locale selection code missing
// return "en_ST_v7"; // return "en_ST_v7";
return "fi_IN_XIII"; return "en_ST_nine";
} }
public String getLayout() { public String getLayout() {
......
cardTemplate.emptyCardTemplate = ----
global.copyright = Verkkopeliyhdistys Insomnia ry global.copyright = Verkkopeliyhdistys Insomnia ry
global.productname = Omnia global.productname = Omnia
......
...@@ -65,6 +65,7 @@ billine.vat = VAT ...@@ -65,6 +65,7 @@ billine.vat = VAT
bills.noBills = No bills bills.noBills = No bills
cardTemplate.edit = Edit
cardTemplate.name = Card template cardTemplate.name = Card template
cardTemplate.power = Card power cardTemplate.power = Card power
cardTemplate.roles = Associated roles cardTemplate.roles = Associated roles
...@@ -88,11 +89,36 @@ editplace.header = Edit place ...@@ -88,11 +89,36 @@ editplace.header = Edit place
editplacegroup.header = Placegroup information editplacegroup.header = Placegroup information
event.defaultRole = Default user role
event.edit = Edit
event.endTime = End time
event.name = Event name
event.nextBillNumber = Initial bill number
event.referenceNumberBase = Reference number base
event.save = Save
event.startTime = Start time
eventdomain.domainname = Domain
eventdomain.remove = Remove
eventorg.bankName1 = Bank name 2
eventorg.bankNumber1 = Bank account nr. 2
eventorg.billAddress1 = Billing address 1
eventorg.billAddress2 = Billing address 2
eventorg.billAddress3 = Billing address 3
eventorg.billAddress4 = Billing address 4
eventorg.bundleCountry = Country bundle
eventorg.createEvent = Create event eventorg.createEvent = Create event
eventorg.createevent = Create new event
eventorg.edit = Edit
eventorg.events = Event of the organisation eventorg.events = Event of the organisation
eventorg.organisation = Organisation name
eventorg.save = Save
eventorgView.eventname = Name of event eventorgView.eventname = Name of event
eventorganiser.name = Eventorganiser
game.gamepoints = Game points game.gamepoints = Game points
global.cancel = Cancel global.cancel = Cancel
...@@ -104,6 +130,8 @@ global.save = Save ...@@ -104,6 +130,8 @@ global.save = Save
imagefile.description = Description imagefile.description = Description
imagefile.file = Imagefile imagefile.file = Imagefile
invite.successfull = Invite sent successfully
javax.validation.constraints.AssertFalse.message = must be false javax.validation.constraints.AssertFalse.message = must be false
javax.validation.constraints.AssertTrue.message = must be true javax.validation.constraints.AssertTrue.message = must be true
javax.validation.constraints.DecimalMax.message = must be less than or equal to {value} javax.validation.constraints.DecimalMax.message = must be less than or equal to {value}
...@@ -301,6 +329,7 @@ product.vat = VAT ...@@ -301,6 +329,7 @@ product.vat = VAT
products.save = Save products.save = Save
productshop.billCreated = Bill created
productshop.commit = Buy productshop.commit = Buy
productshop.noItemsInCart = There are no products in shopping cart productshop.noItemsInCart = There are no products in shopping cart
productshop.total = Total productshop.total = Total
...@@ -316,22 +345,24 @@ readerevent.shopToUser = Buy to user ...@@ -316,22 +345,24 @@ readerevent.shopToUser = Buy to user
readerview.cards = Card ( printcount ) readerview.cards = Card ( printcount )
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 user.resetMail.header=Unohtuneen salasanan vaihto 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.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
role.create = Create role role.cardtemplate = Cardtemplate
role.description = Description role.create = Create role
role.edit = Edit role.description = Description
role.edit.save = Save role.edit = Edit
role.execute = (X) role.edit.save = Save
role.name = Name role.execute = (X)
role.parents = Parents role.name = Name
role.read = (R) role.parents = Parents
role.write = (W) role.read = (R)
role.write = (W)
shop.accountBalance = Balance shop.accountBalance = Balance
shop.user = Selling to shop.user = Selling to
...@@ -364,37 +395,73 @@ sidebar.users = Users ...@@ -364,37 +395,73 @@ sidebar.users = Users
sidebar.utils.flushCache = Flush Cache sidebar.utils.flushCache = Flush Cache
sidebar.utils.testdata = Testdata sidebar.utils.testdata = Testdata
submenu.bill.billSummary = Bill summary sitepage.edit = Edit
submenu.bill.list = My bills sitepage.name = Page name
submenu.bill.listAll = All bills sitepage.roles = Visible for roles
submenu.map.create = Create map
submenu.map.list = List maps sitepagelist.header = Site pages
submenu.product.create = Create product
submenu.product.list = List products submenu.auth.sendResetMail = Password reset
submenu.bill.billSummary = Bill summary
submenu.bill.list = My bills
submenu.bill.listAll = All bills
submenu.index = Front page
submenu.map.create = Create map
submenu.map.list = List maps
submenu.pages.create = Create content
submenu.pages.list = List pages
submenu.place.insertToken = Insert placecode
submenu.place.myGroups = Place reservations
submenu.poll.index = Polls
submenu.product.create = Create product
submenu.product.list = List products
submenu.role.create = Create role
submenu.role.list = Roles
submenu.shop.createBill = Shop
submenu.user.accountEvents = Account events
submenu.user.changePassword = Change password
submenu.user.create = Create new user
submenu.user.edit = User information
submenu.user.invite = Invite friends
submenu.user.manageuserlinks = Manage users
submenu.user.rolelinks = Manage roles
submenu.user.sendPicture = Send picture
submenu.user.userlinks = User information
submenu.useradmin.create = Create user
submenu.useradmin.createCardTemplate = Create cardtemplate
submenu.useradmin.list = List users
submenu.useradmin.listCardTemplates = Card templates
supernavi.admin = Adminview supernavi.admin = Adminview
supernavi.user = Userview supernavi.user = Userview
template.loggedInAs = Logged in as:
topnavi.billing = Billing topnavi.billing = Billing
topnavi.frontpage = Frontpage topnavi.contents = Site contents
topnavi.frontpage = Front page
topnavi.maps = Maps topnavi.maps = Maps
topnavi.placemap = Map topnavi.placemap = Map
topnavi.poll = Polls topnavi.poll = Polls
topnavi.products = Products topnavi.products = Products
topnavi.shop = Shop topnavi.shop = Shop
topnavi.user = My properties topnavi.user = My properties
topnavi.usermgmt = Users
user.accountBalance = Account balance user.accountBalance = Account balance
user.accountEventHeader = Account events user.accountEventHeader = Account events
user.accountEvents = Account events user.accountevents = Account events
user.address = Address user.address = Address
user.bank = Bank user.bank = Bank
user.bankaccount = Bank number user.bankaccount = Bank number
user.changePassword = Change password user.changePassword = Change password
user.changepassword.forUser = For user
user.changepassword.title = Change password
user.create = Create user user.create = Create user
user.createdmessage = User has been created successfully. You can now login. user.createdmessage = User has been created successfully. You can now login.
user.defaultImage = Default picture user.defaultImage = Default picture
user.edit = Edit user.edit = Edit
user.edit.title = My information
user.email = Email user.email = Email
user.firstNames = Firstname user.firstNames = Firstname
user.hasImage = Image user.hasImage = Image
...@@ -402,6 +469,8 @@ user.image = Image ...@@ -402,6 +469,8 @@ user.image = Image
user.imagelist = Saved images user.imagelist = Saved images
user.imagesubmit = Send image user.imagesubmit = Send image
user.insertToken = Insert token user.insertToken = Insert token
user.invite = Invite
user.invitemail = Email address
user.lastName = Lastname user.lastName = Lastname
user.login = Login user.login = Login
user.myGroups = My place reservations user.myGroups = My place reservations
...@@ -409,6 +478,7 @@ user.nick = Nick ...@@ -409,6 +478,7 @@ user.nick = Nick
user.noAccountevents = No account events user.noAccountevents = No account events
user.noCurrentImage = No image user.noCurrentImage = No image
user.noImage = No image user.noImage = No image
user.page.invite = Invite friends
user.password = Password user.password = Password
user.passwordcheck = Password ( again ) user.passwordcheck = Password ( again )
user.passwordlengthMessage = Password is too short! user.passwordlengthMessage = Password is too short!
......
...@@ -64,6 +64,7 @@ billine.vat = ALV ...@@ -64,6 +64,7 @@ billine.vat = ALV
bills.noBills = Ei laskuja bills.noBills = Ei laskuja
cardTemplate.edit = Muokkaa
cardTemplate.name = Korttipohja cardTemplate.name = Korttipohja
cardTemplate.power = Teho cardTemplate.power = Teho
cardTemplate.roles = Yhdistetyt roolit cardTemplate.roles = Yhdistetyt roolit
...@@ -87,11 +88,35 @@ editplace.header = Muokkaa paikkaa ...@@ -87,11 +88,35 @@ editplace.header = Muokkaa paikkaa
editplacegroup.header = Paikkaryhm\u00E4n tiedot editplacegroup.header = Paikkaryhm\u00E4n tiedot
event.defaultRole = K\u00E4ytt\u00E4jien oletusrooli
event.edit = Muokkaa
event.endTime = Lopetusp\u00E4iv\u00E4
event.name = Tapahtuman nimi
event.nextBillNumber = Seuraavan laskun numero
event.referenceNumberBase = Viitenumeron pohja
event.save = Tallenna
event.startTime = Aloitusp\u00E4iv\u00E4
eventdomain.domainname = Domain
eventdomain.remove = Poista
eventorg.bankName1 = Pankin nimi 2
eventorg.bankNumber1 = Tilinumero 2
eventorg.billAddress1 = Laskutusosoite 1
eventorg.billAddress2 = Laskutusosoite 2
eventorg.billAddress3 = Laskutusosoite 3
eventorg.billAddress4 = Laskutusosoite 4
eventorg.bundleCountry = Kieli-bundle
eventorg.createEvent = Luo tapahtuma eventorg.createEvent = Luo tapahtuma
eventorg.createevent = Luo uusi tapahtuma
eventorg.events = Organisaation tapahtumat eventorg.events = Organisaation tapahtumat
eventorg.organisation = Organisaation nimi
eventorg.save = Tallenna
eventorgView.eventname = Tapahtuman nimi eventorgView.eventname = Tapahtuman nimi
eventorganiser.name = Tapahtumaj\u00E4rjest\u00E4j\u00E4
game.gamepoints = Insomnia Game pisteet: game.gamepoints = Insomnia Game pisteet:
global.cancel = Peruuta global.cancel = Peruuta
...@@ -113,6 +138,8 @@ imagefile.file = Kuvatiedosto ...@@ -113,6 +138,8 @@ imagefile.file = Kuvatiedosto
index.title = Etusivu index.title = Etusivu
invite.successfull = Kutsu l\u00E4hetetty
javax.validation.constraints.AssertFalse.message = must be false javax.validation.constraints.AssertFalse.message = must be false
javax.validation.constraints.AssertTrue.message = must be true javax.validation.constraints.AssertTrue.message = must be true
javax.validation.constraints.DecimalMax.message = must be less than or equal to {value} javax.validation.constraints.DecimalMax.message = must be less than or equal to {value}
...@@ -359,36 +386,52 @@ sidebar.users = K\u00E4ytt\u00E4j\u00E4t ...@@ -359,36 +386,52 @@ sidebar.users = K\u00E4ytt\u00E4j\u00E4t
sidebar.utils.flushCache = Flush Cache sidebar.utils.flushCache = Flush Cache
sidebar.utils.testdata = Testdata sidebar.utils.testdata = Testdata
submenu.auth.sendResetMail = Salasanan palautus sitepage.edit = Muokkaa
submenu.bill.billSummary = Laskujen yhteenveto sitepage.name = Sivun nimi
submenu.bill.list = N\u00E4yt\u00E4 omat laskut sitepage.roles = N\u00E4ytet\u00E4\u00E4n rooleille
submenu.bill.listAll = Kaikki laskut
submenu.index = Etusivu sitepagelist.header = Sivuston sis\u00E4ll\u00F6t
submenu.map.create = Uusi kartta
submenu.map.list = N\u00E4yt\u00E4 kartat submenu.auth.sendResetMail = Salasanan palautus
submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi submenu.bill.billSummary = Laskujen yhteenveto
submenu.place.myGroups = Omat paikkavaraukset submenu.bill.list = N\u00E4yt\u00E4 omat laskut
submenu.product.create = Uusi tuote submenu.bill.listAll = Kaikki laskut
submenu.product.list = Listaa tuotteet submenu.map.create = Uusi kartta
submenu.role.create = Luo rooli submenu.map.list = N\u00E4yt\u00E4 kartat
submenu.role.list = Roolit submenu.pages.create = Luo sis\u00E4lt\u00F6\u00E4
submenu.shop.createBill = Luo lasku submenu.pages.list = N\u00E4yt\u00E4 sis\u00E4ll\u00F6t
submenu.user.accountEvents = Tilitapahtumat submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi
submenu.user.changePassword = Vaihda salasana submenu.place.myGroups = Omat paikkavaraukset
submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4 submenu.poll.index = Kyselyt
submenu.user.createCardTemplate = Luo korttiryhm\u00E4 submenu.product.create = Uusi tuote
submenu.user.edit = K\u00E4ytt\u00E4j\u00E4n tiedot submenu.product.list = Listaa tuotteet
submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t submenu.role.create = Luo rooli
submenu.user.listCardTemplates = Korttiryhm\u00E4t submenu.role.list = Roolit
submenu.user.manageuserlinks = Hallitse k\u00E4ytt\u00E4ji\u00E4 submenu.shop.createBill = Luo lasku
submenu.user.rolelinks = Hallitse rooleja submenu.user.accountEvents = Tilitapahtumat
submenu.user.sendPicture = L\u00E4het\u00E4 kuva submenu.user.changePassword = Vaihda salasana
submenu.user.userlinks = Muokkaa tietoja submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4
submenu.user.createCardTemplate = Luo korttiryhm\u00E4
submenu.user.edit = K\u00E4ytt\u00E4j\u00E4n tiedot
submenu.user.invite = Kutsu yst\u00E4vi\u00E4
submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t
submenu.user.listCardTemplates = Korttiryhm\u00E4t
submenu.user.manageuserlinks = Hallitse k\u00E4ytt\u00E4ji\u00E4
submenu.user.rolelinks = Hallitse rooleja
submenu.user.sendPicture = L\u00E4het\u00E4 kuva
submenu.user.userlinks = Muokkaa tietoja
submenu.useradmin.create = Luo uusi k\u00E4ytt\u00E4j\u00E4
submenu.useradmin.createCardTemplate = Luo uusi korttipohja
submenu.useradmin.list = Listaa k\u00E4ytt\u00E4j\u00E4t
submenu.useradmin.listCardTemplates = Listaa korttipohjat
supernavi.admin = Yll\u00E4piton\u00E4kym\u00E4 supernavi.admin = Yll\u00E4piton\u00E4kym\u00E4
supernavi.user = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4 supernavi.user = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4
template.loggedInAs = Kirjautunut tunnuksella:
topnavi.billing = Laskutus topnavi.billing = Laskutus
topnavi.contents = Sivuston sis\u00E4lt\u00F6
topnavi.frontpage = Etusivu topnavi.frontpage = Etusivu
topnavi.maps = Kartat topnavi.maps = Kartat
topnavi.placemap = Paikkakartta topnavi.placemap = Paikkakartta
...@@ -396,6 +439,7 @@ topnavi.poll = Kyselyt ...@@ -396,6 +439,7 @@ topnavi.poll = Kyselyt
topnavi.products = Tuotteet topnavi.products = Tuotteet
topnavi.shop = Kauppa topnavi.shop = Kauppa
topnavi.user = Omat tiedot topnavi.user = Omat tiedot
topnavi.usermgmt = K\u00E4ytt\u00E4j\u00E4t
user.accountBalance = Tilin saldo user.accountBalance = Tilin saldo
user.accountEventHeader = Tilitapahtumat user.accountEventHeader = Tilitapahtumat
...@@ -410,19 +454,22 @@ user.create = Luo k\u00E4ytt\u00E4j\u00E4 ...@@ -410,19 +454,22 @@ user.create = Luo k\u00E4ytt\u00E4j\u00E4
user.createdmessage = K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistuneesti. Voit nyt kirjautua sis\u00E4\u00E4n. user.createdmessage = K\u00E4ytt\u00E4j\u00E4tunnus on luotu onnistuneesti. Voit nyt kirjautua sis\u00E4\u00E4n.
user.defaultImage = Oletukuva user.defaultImage = Oletukuva
user.edit = Muokkaa user.edit = Muokkaa
user.edit.title = K\u00E4ytt\u00E4j\u00E4n tiedot user.edit.title = Omat tiedot
user.email = S\u00E4hk\u00F6posti user.email = S\u00E4hk\u00F6posti
user.firstNames = Etunimi user.firstNames = Etunimi
user.hasImage = Kuva user.hasImage = Kuva
user.imageUploaded = Kuva l\u00E4hetetty. user.imageUploaded = Kuva l\u00E4hetetty.
user.imagelist = Tallennetut kuvat user.imagelist = Tallennetut kuvat
user.imagesubmit = L\u00E4het\u00E4 kuva user.imagesubmit = L\u00E4het\u00E4 kuva
user.invite = Kutsu
user.invitemail = S\u00E4hk\u00F6postiosoite
user.lastName = Sukunimi user.lastName = Sukunimi
user.login = K\u00E4ytt\u00E4j\u00E4tunnus user.login = K\u00E4ytt\u00E4j\u00E4tunnus
user.nick = Nick user.nick = Nick
user.noAccountevents = Ei tilitapahtumia user.noAccountevents = Ei tilitapahtumia
user.noCurrentImage = Ei kuvaa user.noCurrentImage = Ei kuvaa
user.noImage = EI kuvaa user.noImage = EI kuvaa
user.page.invite = Kutsu yst\u00E4vi\u00E4
user.password = Salasana user.password = Salasana
user.passwordcheck = Salasana ( uudelleen ) user.passwordcheck = Salasana ( uudelleen )
user.passwordlengthMessage = Salasana liian lyhyt user.passwordlengthMessage = Salasana liian lyhyt
......
...@@ -5,5 +5,7 @@ ...@@ -5,5 +5,7 @@
bill.billMarkedPaidMail.message = Laskusi numero {0} on merkitty maksetuksi. Voit nyt siirty\u00E4 lippukauppaan varamaamaan haluamasi paikat. \nTervetuloa tapahtumaan!\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi bill.billMarkedPaidMail.message = Laskusi numero {0} on merkitty maksetuksi. Voit nyt siirty\u00E4 lippukauppaan varamaamaan haluamasi paikat. \nTervetuloa tapahtumaan!\n\nTerveisin,\nInsomnia lippupalvelu\nwww.insomnia.fi
bill.billMarkedPaidMail.subject = [INSOMNIA] Lasku merkitty maksetuksi bill.billMarkedPaidMail.subject = [INSOMNIA] Lasku merkitty maksetuksi
eventorg.edit = Muokkaa
global.infomail = info@insomnia.fi global.infomail = info@insomnia.fi
global.webpage = http://www.insomnia.fi global.webpage = http://www.insomnia.fi
...@@ -19,14 +19,14 @@ public class BortalHttpSessionListener implements HttpSessionListener { ...@@ -19,14 +19,14 @@ public class BortalHttpSessionListener implements HttpSessionListener {
@Override @Override
public void sessionCreated(HttpSessionEvent se) { public void sessionCreated(HttpSessionEvent se) {
logger.info("SessionCreated (web) se"); logger.debug("SessionCreated (web) se");
sessbean.sessionCreated(se.getSession()); sessbean.sessionCreated(se.getSession());
} }
@Override @Override
public void sessionDestroyed(HttpSessionEvent se) { public void sessionDestroyed(HttpSessionEvent se) {
logger.info("Session destroyed (web) se"); logger.debug("Session destroyed (web) se");
sessbean.sessionDestroyed(se.getSession()); sessbean.sessionDestroyed(se.getSession());
} }
......
package fi.insomnia.bortal.servlet;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.ejb.EJB;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.PermissionBeanLocal;
import fi.insomnia.bortal.model.LanEventProperty;
import fi.insomnia.bortal.model.LanEventPropertyKey;
/**
* Servlet implementation class UploadServlet
*/
@WebServlet(urlPatterns = { "/dydata/*" })
public class FileDownloadServlet extends GenericImageServlet {
/**
*
*/
private static final long serialVersionUID = -3359999630873773508L;
@EJB
private transient PermissionBeanLocal permbean;
@EJB
private EventBeanLocal orgbean;
private static final Logger logger = LoggerFactory.getLogger(FileDownloadServlet.class);
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
private static final Pattern URLPATTERN = Pattern.compile("([^./]+)");
@Override
protected ImageMover getImagedata() {
ImageMover ret = new ImageMover();
logger.info("Matching {}", super.request);
logger.info("URL {}", super.request.getPathInfo());
Matcher matcher = URLPATTERN.matcher(super.request.getPathInfo());
List<String> urlparts = new ArrayList<String>();
while (matcher.find()) {
urlparts.add(matcher.group());
}
if (urlparts.isEmpty()) {
ret.setResponse(HttpServletResponse.SC_NOT_FOUND);
} else if (urlparts.get(0).equals("logo")) {
LanEventProperty logo = orgbean.getProperty(LanEventPropertyKey.EVENT_LOGO);
if (logo != null) {
ret.setData(logo.getByteValue());
ret.setImagetype(logo.getByteMime());
}
} else {
ret.setResponse(HttpServletResponse.SC_NOT_FOUND);
}
return ret;
}
}
...@@ -10,9 +10,9 @@ import org.slf4j.LoggerFactory; ...@@ -10,9 +10,9 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.utilities.SearchResult; import fi.insomnia.bortal.utilities.SearchResult;
import fi.insomnia.bortal.utilities.jpa.ModelInterface; import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public abstract class PaginationView<T extends ModelInterface<?>> extends GenericCDIView implements IPaginationView { public abstract class PaginationView<T extends ModelInterface> extends GenericCDIView implements IPaginationView {
private static long serialVersionUID = -673649175435129349L; private static final long serialVersionUID = -1226554409762987631L;
protected Integer page = 0; protected Integer page = 0;
protected Integer pagesize = 20; protected Integer pagesize = 20;
protected Long resultcount = 0L; protected Long resultcount = 0L;
......
package fi.insomnia.bortal.web.cdiview.content;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import fi.insomnia.bortal.beans.SitePageBeanLocal;
import fi.insomnia.bortal.model.PageContent;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@Named
@RequestScoped
public class PageOutputView extends GenericCDIView {
private static final long serialVersionUID = 1384298744925823293L;
@EJB
private SitePageBeanLocal pagebean;
private Integer id;
private String name;
private List<PageContent> contents;
public void initIndexView()
{
name = "index";
initView();
}
public void initView() {
if (name == null || name.isEmpty()) {
setContents(pagebean.findContentsForUser(id));
} else {
setContents(pagebean.findContentsForUser(name));
}
if (!requirePermissions(contents != null && !contents.isEmpty()))
{
contents = null;
}
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setId(Integer id) {
this.id = id;
}
public List<PageContent> getContents() {
return contents;
}
public void setContents(List<PageContent> contents) {
this.contents = contents;
}
}
package fi.insomnia.bortal.web.cdiview.content; package fi.insomnia.bortal.web.cdiview.content;
import java.util.List;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.ConversationScoped;
import javax.inject.Named; import javax.inject.Named;
...@@ -16,14 +18,15 @@ public class SitePageView extends GenericCDIView { ...@@ -16,14 +18,15 @@ public class SitePageView extends GenericCDIView {
private static final long serialVersionUID = -513285802858190970L; private static final long serialVersionUID = -513285802858190970L;
@EJB @EJB
private SitePageBeanLocal sitepagebean; private SitePageBeanLocal sitepagebean;
private String siteName; private Integer id;
private SitePage sitepage; private SitePage sitepage;
private List<SitePage> pages;
public void initEdit() public void initEdit()
{ {
if (super.requirePermissions(ContentPermission.MANAGE_PAGES) && sitepage == null) if (super.requirePermissions(ContentPermission.MANAGE_PAGES) && sitepage == null)
{ {
sitepage = sitepagebean.find(siteName); sitepage = sitepagebean.find(id);
super.beginConversation(); super.beginConversation();
} }
} }
...@@ -38,6 +41,14 @@ public class SitePageView extends GenericCDIView { ...@@ -38,6 +41,14 @@ public class SitePageView extends GenericCDIView {
} }
public void initListView()
{
if (requirePermissions(ContentPermission.MANAGE_PAGES))
{
pages = sitepagebean.findAll();
}
}
public String addPageContent() public String addPageContent()
{ {
sitepage = sitepagebean.createContent(sitepage).getSitepage(); sitepage = sitepagebean.createContent(sitepage).getSitepage();
...@@ -64,12 +75,20 @@ public class SitePageView extends GenericCDIView { ...@@ -64,12 +75,20 @@ public class SitePageView extends GenericCDIView {
this.sitepage = sitepage; this.sitepage = sitepage;
} }
public String getSiteName() { public Integer getId() {
return siteName; return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<SitePage> getPages() {
return pages;
} }
public void setSiteName(String siteName) { public void setPages(List<SitePage> pages) {
this.siteName = siteName; this.pages = pages;
} }
} }
...@@ -11,6 +11,7 @@ import javax.inject.Named; ...@@ -11,6 +11,7 @@ import javax.inject.Named;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.AccountEventBeanLocal;
import fi.insomnia.bortal.beans.EventBeanLocal; import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.PlaceBeanLocal; import fi.insomnia.bortal.beans.PlaceBeanLocal;
import fi.insomnia.bortal.beans.PlaceMapBeanLocal; import fi.insomnia.bortal.beans.PlaceMapBeanLocal;
...@@ -38,6 +39,9 @@ public class MapView extends GenericCDIView { ...@@ -38,6 +39,9 @@ public class MapView extends GenericCDIView {
private transient PlaceBeanLocal placeBean; private transient PlaceBeanLocal placeBean;
@EJB @EJB
private transient EventBeanLocal eventBean; private transient EventBeanLocal eventBean;
private BigDecimal balance;
@EJB
private AccountEventBeanLocal acbean;
private static final Logger logger = LoggerFactory.getLogger(MapView.class); private static final Logger logger = LoggerFactory.getLogger(MapView.class);
...@@ -49,7 +53,16 @@ public class MapView extends GenericCDIView { ...@@ -49,7 +53,16 @@ public class MapView extends GenericCDIView {
if (user == null) { if (user == null) {
return false; return false;
} }
return user.getAccountBalance().compareTo(BigDecimal.ZERO) > 0; return getAccountBalance().compareTo(BigDecimal.ZERO) > 0;
}
public BigDecimal getAccountBalance()
{
if (balance == null)
{
balance = acbean.getAccountBalance(user);
}
return balance;
} }
public BigDecimal getReservationPrice() { public BigDecimal getReservationPrice() {
......
...@@ -14,6 +14,7 @@ import javax.inject.Named; ...@@ -14,6 +14,7 @@ import javax.inject.Named;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.AccountEventBeanLocal;
import fi.insomnia.bortal.beans.PlaceBeanLocal; import fi.insomnia.bortal.beans.PlaceBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
...@@ -51,6 +52,8 @@ public class PlaceView extends GenericCDIView { ...@@ -51,6 +52,8 @@ public class PlaceView extends GenericCDIView {
private String searchuser; private String searchuser;
private transient ListDataModel<User> userlist; private transient ListDataModel<User> userlist;
@EJB
private AccountEventBeanLocal acbean;
public boolean canEdit() { public boolean canEdit() {
return permbean.hasPermission(MapPermission.MANAGE_MAPS); return permbean.hasPermission(MapPermission.MANAGE_MAPS);
...@@ -92,7 +95,8 @@ public class PlaceView extends GenericCDIView { ...@@ -92,7 +95,8 @@ public class PlaceView extends GenericCDIView {
} }
} else if (place.isBuyable() && !place.isTaken()) { } else if (place.isBuyable() && !place.isTaken()) {
BigDecimal balance = permbean.getCurrentUser().getAccountBalance();
BigDecimal balance = acbean.getAccountBalance(permbean.getCurrentUser());
BigDecimal price = null; BigDecimal price = null;
if (permbean.isCurrentUser(user)) { if (permbean.isCurrentUser(user)) {
price = placebean.getTotalReservationPrice(place); price = placebean.getTotalReservationPrice(place);
...@@ -108,7 +112,7 @@ public class PlaceView extends GenericCDIView { ...@@ -108,7 +112,7 @@ public class PlaceView extends GenericCDIView {
} }
} else { } else {
if (permbean.getCurrentUser().getAccountBalance().compareTo(BigDecimal.ZERO) > 0) { if (balance.compareTo(BigDecimal.ZERO) > 0) {
addFaceMessage("mapView.notEnoughCreditsToReserve"); addFaceMessage("mapView.notEnoughCreditsToReserve");
} }
logger.debug("Did not have enought money to reserve place! required {} , got {}", price, balance); logger.debug("Did not have enought money to reserve place! required {} , got {}", price, balance);
......
...@@ -11,7 +11,7 @@ public class JsfMenuitem { ...@@ -11,7 +11,7 @@ public class JsfMenuitem {
public JsfMenuitem(MenuNavigation navi) { public JsfMenuitem(MenuNavigation navi) {
this.navigation = navi; this.navigation = navi;
if (navi.getSitepage() != null) { if (navi.getSitepage() != null) {
outcome = navi.getSitepage().getUrl(); outcome = new StringBuilder("/pages/index?id=").append(navi.getSitepage().getId()).toString();
} else if (navi.getItem() != null) { } else if (navi.getItem() != null) {
this.outcome = navi.getItem().getUrl(); this.outcome = navi.getItem().getUrl();
} }
......
package fi.insomnia.bortal.web.cdiview.menu;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.model.ListDataModel;
import javax.inject.Named;
import org.primefaces.model.DefaultTreeNode;
import fi.insomnia.bortal.beans.MenubeanLocal;
import fi.insomnia.bortal.enums.apps.LayoutPermission;
import fi.insomnia.bortal.model.MenuNavigation;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@Named
@ConversationScoped
public class MenuListView extends GenericCDIView {
private static final long serialVersionUID = -2894852135260235581L;
@EJB
private MenubeanLocal menubean;
private ListDataModel<MenuNavigation> menus;
private DefaultTreeNode root;
public void initList()
{
if (super.requirePermissions(LayoutPermission.MANAGE_MENU)) {
root = new DefaultTreeNode("Root", null);
parseTree(menubean.getTopmenus(), root);
// menus = new
// ListDataModel<MenuNavigation>(menubean.getTopmenus()));
super.beginConversation();
}
}
private void parseTree(List<MenuNavigation> menus, DefaultTreeNode parent) {
for (MenuNavigation m : menus) {
DefaultTreeNode self = new DefaultTreeNode(m, parent);
if (m.getChildren() != null) {
parseTree(m.getChildren(), self);
}
}
}
public ListDataModel<MenuNavigation> getMenus() {
return menus;
}
public void setMenus(ListDataModel<MenuNavigation> menus) {
this.menus = menus;
}
}
package fi.insomnia.bortal.web.cdiview.menu; package fi.insomnia.bortal.web.cdiview.menu;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import fi.insomnia.bortal.beans.MenubeanLocal; import fi.insomnia.bortal.beans.MenubeanLocal;
import fi.insomnia.bortal.beans.SitePageBeanLocal;
import fi.insomnia.bortal.model.MenuNavigation; import fi.insomnia.bortal.model.MenuNavigation;
import fi.insomnia.bortal.model.PageContent;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
import fi.insomnia.bortal.web.helper.LayoutView;
@Named @Named
@RequestScoped @RequestScoped
...@@ -24,6 +28,9 @@ public class MenuView extends GenericCDIView { ...@@ -24,6 +28,9 @@ public class MenuView extends GenericCDIView {
private String pagename; private String pagename;
@Inject @Inject
private LayoutView layoutview;
@Inject
private FacesContext context; private FacesContext context;
@EJB @EJB
...@@ -33,6 +40,20 @@ public class MenuView extends GenericCDIView { ...@@ -33,6 +40,20 @@ public class MenuView extends GenericCDIView {
private HashSet<MenuNavigation> navis; private HashSet<MenuNavigation> navis;
private Map<String, List<PageContent>> contents = new HashMap<String, List<PageContent>>();
@EJB
private SitePageBeanLocal pagebean;
public List<PageContent> getPagecontent(String pagekey)
{
String key = new StringBuilder(layoutview.getPagepath()).append(":").append(pagekey).toString();
if (!contents.containsKey(key)) {
contents.put(key, pagebean.findContentsForUser(key));
}
return contents.get(key);
}
public List<JsfMenuitem> getMenu(Integer level) public List<JsfMenuitem> getMenu(Integer level)
{ {
getMenus(); getMenus();
...@@ -46,24 +67,13 @@ public class MenuView extends GenericCDIView { ...@@ -46,24 +67,13 @@ public class MenuView extends GenericCDIView {
} }
public String getPagename() {
if (pagename == null) {
HttpServletRequest req = (HttpServletRequest) getContext().getExternalContext().getRequest();
String[] splitted = req.getServletPath().split("\\.");
if (splitted.length > 0) {
pagename = splitted[0];
}
}
return pagename;
}
public LinkedList<List<JsfMenuitem>> getMenus() public LinkedList<List<JsfMenuitem>> getMenus()
{ {
if (menus == null) if (menus == null)
{ {
menus = new LinkedList<List<JsfMenuitem>>(); menus = new LinkedList<List<JsfMenuitem>>();
navis = new HashSet<MenuNavigation>(); navis = new HashSet<MenuNavigation>();
MenuNavigation pathIter = menubean.findNavigation(getPagename()); MenuNavigation pathIter = menubean.findNavigation(layoutview.getPagepath());
while (pathIter != null) { while (pathIter != null) {
if (pathIter.isVisible()) { if (pathIter.isVisible()) {
...@@ -108,6 +118,7 @@ public class MenuView extends GenericCDIView { ...@@ -108,6 +118,7 @@ public class MenuView extends GenericCDIView {
jsfItem.setOutcome(menus.get(0).get(0).getOutcome()); jsfItem.setOutcome(menus.get(0).get(0).getOutcome());
} }
} }
if (navis.contains(child)) { if (navis.contains(child)) {
jsfItem.setSelected(); jsfItem.setSelected();
...@@ -133,7 +144,8 @@ public class MenuView extends GenericCDIView { ...@@ -133,7 +144,8 @@ public class MenuView extends GenericCDIView {
} }
// try to get sitepage url. // try to get sitepage url.
else if (child.getSitepage() != null) { else if (child.getSitepage() != null) {
ret = child.getSitepage().getUrl(); // ret = child.getSitepage().getUrl();
ret = new StringBuilder("/pages/index?id=").append(navi.getSitepage().getId()).toString();
} }
// if navigation does not have menuitem or sitepage we go deeper in // if navigation does not have menuitem or sitepage we go deeper in
// to the tree.. // to the tree..
...@@ -149,12 +161,16 @@ public class MenuView extends GenericCDIView { ...@@ -149,12 +161,16 @@ public class MenuView extends GenericCDIView {
return ret; return ret;
} }
public FacesContext getContext() {
return context;
}
public void setContext(FacesContext context) { public void setContext(FacesContext context) {
this.context = context; this.context = context;
} }
public LayoutView getLayoutview() {
return layoutview;
}
public void setLayoutview(LayoutView layoutview) {
this.layoutview = layoutview;
}
} }
...@@ -36,6 +36,11 @@ public class BillEditView extends GenericCDIView { ...@@ -36,6 +36,11 @@ public class BillEditView extends GenericCDIView {
} }
} }
public void save()
{
bill = billbean.save(bill);
}
public void setBill(Bill bill) { public void setBill(Bill bill) {
this.bill = bill; this.bill = bill;
} }
......
package fi.insomnia.bortal.web.cdiview.shop; package fi.insomnia.bortal.web.cdiview.shop;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
...@@ -11,6 +12,7 @@ import fi.insomnia.bortal.web.annotations.SelectedUser; ...@@ -11,6 +12,7 @@ import fi.insomnia.bortal.web.annotations.SelectedUser;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@Named @Named
@ConversationScoped
public class InviteAcceptView extends GenericCDIView { public class InviteAcceptView extends GenericCDIView {
private static final long serialVersionUID = 1972813452261491814L; private static final long serialVersionUID = 1972813452261491814L;
...@@ -24,6 +26,11 @@ public class InviteAcceptView extends GenericCDIView { ...@@ -24,6 +26,11 @@ public class InviteAcceptView extends GenericCDIView {
@EJB @EJB
private transient UserBeanLocal userbean; private transient UserBeanLocal userbean;
public void initView() {
super.beginConversation();
}
public String createUser() { public String createUser() {
GroupMembership gm = userbean.findToken(token); GroupMembership gm = userbean.findToken(token);
if (gm == null || gm.getInviteAccepted() != null) { if (gm == null || gm.getInviteAccepted() != null) {
...@@ -31,7 +38,7 @@ public class InviteAcceptView extends GenericCDIView { ...@@ -31,7 +38,7 @@ public class InviteAcceptView extends GenericCDIView {
return null; return null;
} }
userbean.createFromToken(user, gm); userbean.createFromToken(user, token);
return "/user/edit"; return "/user/edit";
} }
......
...@@ -2,6 +2,8 @@ package fi.insomnia.bortal.web.cdiview.shop; ...@@ -2,6 +2,8 @@ package fi.insomnia.bortal.web.cdiview.shop;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Named; import javax.inject.Named;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
...@@ -19,13 +21,34 @@ public class InviteView extends GenericCDIView { ...@@ -19,13 +21,34 @@ public class InviteView extends GenericCDIView {
private transient UserBeanLocal userbean; private transient UserBeanLocal userbean;
public String invite() { public String invite() {
boolean ret = userbean.invite(invitemail);
ExternalContext extcontext = FacesContext.getCurrentInstance().getExternalContext();
StringBuilder path = new StringBuilder();
String servername = extcontext.getRequestServerName();
if (extcontext.getRequestServerPort() != 80) {
if (extcontext.getRequestServerPort() == 443) {
path.append("https://").append(servername.replace(":443", ""));
} else {
path.append("http://").append(servername);
path.append(":").append(extcontext.getRequestServerPort());
}
} else {
path.append("http://").append(servername);
}
path.append("/")
.append(FacesContext.getCurrentInstance().getExternalContext().getContextName())
.append("/user/acceptInvite.jsf?token={0}");
boolean ret = userbean.invite(invitemail, path.toString());
if (ret) { if (ret) {
this.addFaceMessage("invite.successfull"); this.addFaceMessage("invite.successfull");
invitemail = "";
} else { } else {
this.addFaceMessage("invite.emailexists"); this.addFaceMessage("invite.emailexists");
} }
return null; return null;
} }
......
...@@ -105,7 +105,7 @@ public class CardView extends GenericCDIView { ...@@ -105,7 +105,7 @@ public class CardView extends GenericCDIView {
public String createTemplate() { public String createTemplate() {
cfbean.create(getCardTemplate()); cfbean.create(getCardTemplate());
cardTemplates = getCardTemplate().getEvent().getCardTemplates(); cardTemplates = getCardTemplate().getEvent().getCardTemplates();
return "/user/listCardTemplates"; return "/useradmin/listCardTemplates";
} }
public String saveTemplate() public String saveTemplate()
......
package fi.insomnia.bortal.web.cdiview.user;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;
import org.primefaces.model.UploadedFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.CardTemplateBeanLocal;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.CardTemplate;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserNote;
import fi.insomnia.bortal.model.UserNoteType;
import fi.insomnia.bortal.utilities.SearchResult;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@Named
@ConversationScoped
public class ImportView extends GenericCDIView {
private static final long serialVersionUID = -6212627607244029512L;
private String content;
private static final Logger logger = LoggerFactory.getLogger(ImportView.class);
@EJB
private UserBeanLocal userbean;
@EJB
private EventBeanLocal eventbean;
@EJB
private ProductBeanLocal prodbean;
private UploadedFile file;
private ArrayList<ImportWrapper> wrapper;
private CardTemplate template;
@EJB
private CardTemplateBeanLocal templatebean;
private List<CardTemplate> templates;
public void initImport() {
if (requirePermissions(UserPermission.MODIFY))
{
templates = templatebean.findAll();
super.beginConversation();
}
}
public String parse() throws IOException
{
setWrapper(new ArrayList<ImportWrapper>());
logger.warn("Got file {} from upload", file);
LanEvent event = eventbean.getCurrentEvent();
if (file == null)
{
return null;
}
BufferedReader str = new BufferedReader(new InputStreamReader(file.getInputstream(), Charset.forName("ISO-8859-1")));
for (String line = ""; line != null; line = str.readLine())
{
if (line == null || line.isEmpty() || line.matches("^id\\t"))
{
logger.info("skipping line {}", line);
continue;
}
// logger.warn("Parsing line {}", line);
User usr = new User();
String[] limatch = line.split("\\|");
if (limatch.length != 19)
{
logger.warn("SPlictcount != 19: {}", limatch.length);
}
for (int i = 0; limatch.length > i; ++i)
{
String field = limatch[i];
// logger.info("Matched loop {}, val {}", i, field);
switch (i)
{
case 5:
usr.setEmail(field);
break;
case 9:
usr.setPassword(field);
break;
case 10:
String[] spl = field.split(" ", 2);
if (spl.length != 2) {
usr.setFirstnames(field);
} else {
usr.setFirstnames(spl[0]);
usr.setLastname(spl[1]);
}
break;
case 11:
if (field != null && !field.isEmpty() && !field.equals("NULL"))
{
PrintedCard card = new PrintedCard(usr, template, Calendar.getInstance(), true);
card.setRfidUid(field);
usr.setPrintedCards(new ArrayList<PrintedCard>());
usr.getPrintedCards().add(card);
}
break;
case 12:
usr.setPhone(field);
break;
case 13:
usr.setNotes(new ArrayList<UserNote>());
UserNote note = new UserNote();
note.setContent(field);
note.setEvent(event);
note.setNotetype(UserNoteType.BANKACCOUNT);
note.setUser(usr);
usr.getNotes().add(note);
break;
case 14:
usr.setNick(field);
usr.setLogin(field);
break;
case 17:
UserNote note2 = new UserNote();
note2.setContent(field);
note2.setEvent(event);
note2.setNotetype(UserNoteType.ORGNOTE);
note2.setUser(usr);
usr.getNotes().add(note2);
break;
case 18:
if (field == null || field.isEmpty() || field.equals("NULL")) {
break;
}
if (usr.getAccountEvents() == null) {
usr.setAccountEvents(new ArrayList<AccountEvent>());
}
try {
AccountEvent ac = new AccountEvent(usr, prodbean.findCreditProduct(), new BigDecimal(field), BigDecimal.ONE, Calendar.getInstance());
usr.getAccountEvents().add(ac);
} catch (Throwable t) {
logger.warn("Error parsing count: {}", t);
}
break;
default:
break;
}
if (i > 18)
{
logger.warn("cols not 18, {}", i);
break;
}
}
ImportWrapper wrap = new ImportWrapper(usr);
getWrapper().add(wrap);
SearchResult<User> srch = null;
if (usr.getNick() != null && !usr.getNick().isEmpty())
{
srch = userbean.getUsers(0, 0, null, usr.getNick());
wrap.add(srch.getResults());
}
if (usr.getEmail() != null && !usr.getEmail().isEmpty())
{
srch = userbean.getUsers(0, 0, null, usr.getEmail());
wrap.add(srch.getResults());
}
} // end for split lines
return "/user/commitImport";
}
public String commitImport()
{
for (ImportWrapper w : wrapper)
{
if (w.getSkip()) {
continue;
}
User usr = w.getUser();
User nusr = w.getSelected();
logger.info("usr {}, nusr {}", usr, nusr);
if (nusr != null) {
logger.info("Adding accountevents {}", usr.getAccountEvents());
if (usr.getAccountEvents() != null)
{
if (nusr.getAccountEvents() == null) {
nusr.setAccountEvents(new ArrayList<AccountEvent>());
}
for (AccountEvent ac : usr.getAccountEvents())
{
ac.setUser(nusr);
nusr.getAccountEvents().add(ac);
}
}
logger.info("Adding notes {}", usr.getNotes());
if (usr.getNotes() != null)
{
if (nusr.getNotes() == null) {
nusr.setNotes(new ArrayList<UserNote>());
}
for (UserNote no : usr.getNotes())
{
no.setUser(nusr);
nusr.getNotes().add(no);
}
}
logger.info("Merging user {}", nusr);
userbean.mergeChanges(nusr);
} else {
userbean.createNewUser(usr);
}
logger.info("Got wrapper {}, selected {}", w.getUser().getWholeName(), w.getSelected());
}
super.addFaceMessage("Users committed: " + wrapper.size());
wrapper = null;
return null;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
public ArrayList<ImportWrapper> getWrapper() {
return wrapper;
}
public void setWrapper(ArrayList<ImportWrapper> wrapper) {
this.wrapper = wrapper;
}
public List<CardTemplate> getTemplates() {
return templates;
}
public void setTemplates(List<CardTemplate> templates) {
this.templates = templates;
}
public CardTemplate getTemplate() {
return template;
}
public void setTemplate(CardTemplate template) {
this.template = template;
}
}
package fi.insomnia.bortal.web.cdiview.user;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.model.User;
public class ImportWrapper implements Serializable {
private static final long serialVersionUID = 6812020704989137912L;
private final User user;
private final ArrayList<User> potential;
private User selected;
private Boolean skip = false;
private static final Logger logger = LoggerFactory.getLogger(ImportWrapper.class);
public ImportWrapper(User usr) {
user = usr;
potential = new ArrayList<User>();
selected = new User();
potential.add(selected);
}
public void add(List<User> results) {
potential.addAll(results);
}
public User getUser() {
return user;
}
public ArrayList<User> getPotential() {
return potential;
}
public User getSelected() {
return selected;
}
public void setSelected(User selected) {
logger.info("Setting selected to {}", selected);
this.selected = selected;
}
public Boolean getSkip() {
return skip;
}
public void setSkip(Boolean skip) {
this.skip = skip;
}
}
...@@ -11,7 +11,6 @@ import org.slf4j.LoggerFactory; ...@@ -11,7 +11,6 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.utilities.PasswordFunctions;
import fi.insomnia.bortal.web.cdiview.GenericCDIView; import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@Named("pwdResetView") @Named("pwdResetView")
...@@ -55,34 +54,29 @@ public class PasswordResetView extends GenericCDIView { ...@@ -55,34 +54,29 @@ public class PasswordResetView extends GenericCDIView {
} }
public String sendMail() { public String sendMail() {
User userObj = userbean.getUser(mailuser);
if (userObj != null) { ExternalContext extcontext = FacesContext.getCurrentInstance().getExternalContext();
String hashStr = PasswordFunctions.generateRandomString(25); StringBuilder path = new StringBuilder();
String servername = extcontext.getRequestServerName();
ExternalContext extcontext = FacesContext.getCurrentInstance().getExternalContext();
StringBuilder path = new StringBuilder(); logger.info("Serverport secure: {}", extcontext.getRequestServerPort(), extcontext.isSecure());
String servername = extcontext.getRequestServerName();
if (extcontext.getRequestServerPort() != 80) {
logger.info("Serverport secure: {}", extcontext.getRequestServerPort(), extcontext.isSecure()); if (extcontext.getRequestServerPort() == 443) {
path.append("https://").append(servername.replace(":443", ""));
if (extcontext.getRequestServerPort() != 80) {
if (extcontext.getRequestServerPort() == 443) {
path.append("https://").append(servername.replace(":443", ""));
} else {
path.append("http://").append(servername);
path.append(":").append(extcontext.getRequestServerPort());
}
} else { } else {
path.append("http://").append(servername); path.append("http://").append(servername);
path.append(":").append(extcontext.getRequestServerPort());
} }
} else {
path.append("http://").append(servername);
}
path.append("/")
.append(FacesContext.getCurrentInstance().getExternalContext().getContextName())
.append("/auth/resetPassword.jsf?id={0}&hash={1}");
path.append("/") if (userbean.initPasswordReset(mailuser, path.toString())) {
.append(FacesContext.getCurrentInstance().getExternalContext().getContextName())
.append("/auth/resetPassword.jsf?id=")
.append(userObj.getId()).append("&hash=")
.append(hashStr);
logger.info("Initializing password sending: {}, hash: {}", userObj, hashStr);
userbean.initPasswordReset(userObj, hashStr, path.toString());
return "/auth/resetmailSent"; return "/auth/resetmailSent";
} }
......
...@@ -35,7 +35,7 @@ public class UserValidator implements Serializable { ...@@ -35,7 +35,7 @@ public class UserValidator implements Serializable {
String login = object.toString().trim(); String login = object.toString().trim();
if (login.length() < 3) { if (login.length() < 3) {
message("userview.loginstringFaulty"); message("userview.loginstringFaulty");
} else if (userbean.getUser(login) != null) { } else if (userbean.userExists(login)) {
message("userview.userExists"); message("userview.userExists");
} }
......
package fi.insomnia.bortal.web.cdiview.user; package fi.insomnia.bortal.web.cdiview.user;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.Conversation; import javax.enterprise.context.Conversation;
...@@ -14,9 +16,11 @@ import org.primefaces.model.UploadedFile; ...@@ -14,9 +16,11 @@ import org.primefaces.model.UploadedFile;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.AccountEventBeanLocal;
import fi.insomnia.bortal.beans.CardTemplateBeanLocal; import fi.insomnia.bortal.beans.CardTemplateBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.PrintedCard; import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserImage; import fi.insomnia.bortal.model.UserImage;
...@@ -59,6 +63,10 @@ public class UserView extends GenericCDIView { ...@@ -59,6 +63,10 @@ public class UserView extends GenericCDIView {
@EJB @EJB
private CardTemplateBeanLocal cardBean; private CardTemplateBeanLocal cardBean;
private BigDecimal balance;
@EJB
private AccountEventBeanLocal acbean;
private List<AccountEvent> accountevents;
@Produces @Produces
@LoggedIn @LoggedIn
...@@ -79,6 +87,24 @@ public class UserView extends GenericCDIView { ...@@ -79,6 +87,24 @@ public class UserView extends GenericCDIView {
return user; return user;
} }
public BigDecimal getAccountBalance()
{
if (balance == null)
{
balance = acbean.getAccountBalance(user);
}
return balance;
}
public List<AccountEvent> getAccountEvents()
{
if (accountevents == null)
{
accountevents = acbean.getAccountEvents(user);
}
return accountevents;
}
public String crop() public String crop()
{ {
logger.info("Cropped image {}x{}", croppedImage.getLeft(), croppedImage.getTop()); logger.info("Cropped image {}x{}", croppedImage.getLeft(), croppedImage.getTop());
...@@ -135,6 +161,7 @@ public class UserView extends GenericCDIView { ...@@ -135,6 +161,7 @@ public class UserView extends GenericCDIView {
if (super.requirePermissions(UserPermission.VIEW_SELF) && user == null) { if (super.requirePermissions(UserPermission.VIEW_SELF) && user == null) {
getSelectedUser(); getSelectedUser();
canSave = getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY); canSave = getCurrentUser().equals(user) || permbean.hasPermission(UserPermission.MODIFY);
this.beginConversation(); this.beginConversation();
} }
} }
......
...@@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory; ...@@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.CardTemplateBeanLocal; import fi.insomnia.bortal.beans.CardTemplateBeanLocal;
import fi.insomnia.bortal.model.CardTemplate; import fi.insomnia.bortal.model.CardTemplate;
import fi.insomnia.bortal.utilities.jsf.GenericIntegerEntityConverter;
@Named("cardTemplateConverter") @Named("cardTemplateConverter")
public class CardTemplateConverter extends GenericIntegerEntityConverter<CardTemplate> { public class CardTemplateConverter extends GenericIntegerEntityConverter<CardTemplate> {
......
package fi.insomnia.bortal.web.converter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public abstract class GenericIntegerEntityConverter<T extends ModelInterface<Integer>> implements Converter {
protected abstract T find(Integer id);
public GenericIntegerEntityConverter() {
super();
}
// private static final IMultiIdConverter<Integer> INTEGER_CONVERTER = new
// IMultiIdConverter<Integer>() {
//
// @Override
// public Integer getId(String idstring) {
// if (idstring != null && !idstring.isEmpty() && !idstring.equals("0")) {
// try {
// return Integer.parseInt(idstring);
// } catch (NumberFormatException e)
// {
// logger.info("Caught number format exception while parsing {}", idstring,
// e);
// }
// }
// return null;
//
// }
//
// @Override
// public String getString(Integer id) {
// if (id != null)
// {
// return id.toString();
// }
// return "0";
// }
//
// };
private static final Logger logger = LoggerFactory.getLogger(GenericIntegerEntityConverter.class);
// public IMultiIdConverter<Integer> getConverter() {
//
// return INTEGER_CONVERTER;
// }
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
T ret = null;
Integer id = null;
if (value != null) {
id = Integer.parseInt(value);
if (id != null && id > 0) {
ret = find(id);
}
}
logger.debug("Converted String {} to Integer {} became object {}", new Object[] { value, id, ret });
return ret;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
String ret = null;
if (value != null && value instanceof ModelInterface) {
ModelInterface<Integer> entity = (ModelInterface<Integer>) value;
if (entity != null && entity.getId() != null)
{
ret = entity.getId().toString();
}
}
if (ret == null)
{
ret = "0";
}
return ret;
}
//
// @Override
// public Object getAsObject(FacesContext context, UIComponent component,
// String value) {
// IntegerModelInterface ret = null;
// if (value != null && !value.isEmpty()) {
// try {
// int id = Integer.parseInt(value);
// if (id == 0) {
// ret = null;
// } else {
// ret = getFacade().find(id);
// }
// } catch (NumberFormatException ne) {
// logger.info("Error parsing value '{}' as number!");
// ret = null;
// }
// }
// return ret;
// }
//
// @Override
// public String getAsString(FacesContext context, UIComponent component,
// Object value) {
//
// String ret = "";
// if (value == null) {
// ret = "0";
// } else if (value instanceof IntegerModelInterface) {
// Integer id = ((IntegerModelInterface) value).getId();
// if (id != null) {
// ret = id.toString();
// }
// }
// return ret;
// }
}
...@@ -2,38 +2,22 @@ package fi.insomnia.bortal.web.converter; ...@@ -2,38 +2,22 @@ package fi.insomnia.bortal.web.converter;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.inject.Named; import javax.inject.Named;
import fi.insomnia.bortal.beans.ProductBeanLocal; import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.utilities.jsf.GenericIntegerEntityConverter;
@Named("productConverter") @Named("productConverter")
@RequestScoped() @RequestScoped()
public class ProductConverter implements Converter { public class ProductConverter extends GenericIntegerEntityConverter<Product> {
@EJB @EJB
private ProductBeanLocal productbean; private ProductBeanLocal productbean;
public ProductConverter() {
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Product ret = productbean.findById(Integer.parseInt(value));
return ret;
}
@Override @Override
public String getAsString(FacesContext context, UIComponent component, Object value) { protected Product find(Integer id) {
return productbean.findById(id);
String ret = "";
if (value != null && value instanceof Product) {
ret = ((Product) value).getId().toString();
}
return ret;
} }
} }
...@@ -2,49 +2,21 @@ package fi.insomnia.bortal.web.converter; ...@@ -2,49 +2,21 @@ package fi.insomnia.bortal.web.converter;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.inject.Named; import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.RoleBeanLocal; import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.utilities.jsf.GenericIntegerEntityConverter;
@Named("roleConverter") @Named("roleConverter")
@RequestScoped @RequestScoped
public class RoleConverter implements Converter { public class RoleConverter extends GenericIntegerEntityConverter<Role> {
@EJB @EJB
private RoleBeanLocal rolebean; private RoleBeanLocal rolebean;
private static final Logger logger = LoggerFactory.getLogger(RoleConverter.class);
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
logger.debug("converting string {} to Object", value);
if (value == null || value.isEmpty() || value.equals("0"))
{
return null;
}
Role ret = rolebean.find(Integer.parseInt(value));
return ret;
}
@Override @Override
public String getAsString(FacesContext context, UIComponent component, Object value) { protected Role find(Integer id) {
String ret = ""; return rolebean.find(id);
if (value instanceof Role) {
Role r = ((Role) value);
if (r.getId() != null)
{
ret = r.getId().toString();
}
}
logger.debug("converting role {} to string", ret);
return ret;
} }
} }
...@@ -6,9 +6,6 @@ import javax.faces.context.FacesContext; ...@@ -6,9 +6,6 @@ import javax.faces.context.FacesContext;
import javax.faces.convert.Converter; import javax.faces.convert.Converter;
import javax.inject.Named; import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.SessionMgmtBeanLocal; import fi.insomnia.bortal.beans.SessionMgmtBeanLocal;
import fi.insomnia.bortal.utilities.I18n; import fi.insomnia.bortal.utilities.I18n;
...@@ -18,8 +15,6 @@ public class SessionToUsernameConverter implements Converter { ...@@ -18,8 +15,6 @@ public class SessionToUsernameConverter implements Converter {
@EJB @EJB
private SessionMgmtBeanLocal sessbean; private SessionMgmtBeanLocal sessbean;
private static final Logger logger = LoggerFactory.getLogger(SessionToUsernameConverter.class);
@Override @Override
public Object getAsObject(FacesContext context, UIComponent component, String value) { public Object getAsObject(FacesContext context, UIComponent component, String value) {
return null; return null;
......
package fi.insomnia.bortal.web.converter;
import javax.ejb.EJB;
import javax.faces.bean.RequestScoped;
import javax.inject.Named;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.utilities.jsf.GenericIntegerEntityConverter;
@Named
@RequestScoped
public class UserConverter extends GenericIntegerEntityConverter<User> {
@EJB
private UserBeanLocal userbean;
@Override
protected User find(Integer id) {
return userbean.findById(id);
}
}
...@@ -2,50 +2,22 @@ package fi.insomnia.bortal.web.converter; ...@@ -2,50 +2,22 @@ package fi.insomnia.bortal.web.converter;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.faces.bean.RequestScoped; import javax.faces.bean.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.inject.Named; import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.model.UserImage; import fi.insomnia.bortal.model.UserImage;
import fi.insomnia.bortal.utilities.jsf.GenericIntegerEntityConverter;
@Named("userimageConverter") @Named("userimageConverter")
@RequestScoped() @RequestScoped()
public class UserImageConverter implements Converter { public class UserImageConverter extends GenericIntegerEntityConverter<UserImage> {
@EJB @EJB
private UserBeanLocal userbean; private UserBeanLocal userbean;
private static final Logger logger = LoggerFactory.getLogger(UserImageConverter.class);
public UserImageConverter() {
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
logger.debug("converting userimage string {} to Object", value);
if (value == null || value.isEmpty()) {
return null;
}
int id = Integer.parseInt(value);
UserImage ret;
ret = userbean.findUserImage(id);
return ret;
}
@Override @Override
public String getAsString(FacesContext context, UIComponent component, Object value) { protected UserImage find(Integer id) {
String ret = ""; return userbean.findUserImage(id);
if (value instanceof UserImage) {
ret = ((UserImage) value).getId().toString();
}
logger.debug("converting userimage {} to string", ret);
return ret;
} }
} }
package fi.insomnia.bortal.web.helper; package fi.insomnia.bortal.web.helper;
import java.util.Map;
import java.util.Map.Entry;
import java.util.MissingResourceException; import java.util.MissingResourceException;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -21,31 +19,23 @@ public class LayoutView { ...@@ -21,31 +19,23 @@ public class LayoutView {
@Inject @Inject
private FacesContext context; private FacesContext context;
private ResourceBundle rb; private ResourceBundle rb;
private String pagename_priv;
private String pagegroup; private String pagegroup;
private String pagename;
private static final Logger logger = LoggerFactory.getLogger(LayoutView.class); private static final Logger logger = LoggerFactory.getLogger(LayoutView.class);
public void init() { public void init() {
logger.info("Initialized layoutView"); logger.info("Initialized layoutView");
} }
public boolean isPagegroup(String check) { public String getPagepath() {
if (pagename == null) {
return getPagegroup() != null && check.equals(pagegroup); HttpServletRequest req = (HttpServletRequest) context.getExternalContext().getRequest();
} String[] splitted = req.getServletPath().split("\\.");
if (splitted.length > 0) {
private String getPagegroup() { pagename = splitted[0];
if (pagegroup == null) {
pagegroup = localize(getPagename() + ".pagegroup");
if (pagegroup == null) {
pagegroup = "default";
} }
} }
return pagegroup; return pagename;
}
public String getPagename() {
return "page.user.create";
} }
private String localize(String key) { private String localize(String key) {
...@@ -76,25 +66,24 @@ public class LayoutView { ...@@ -76,25 +66,24 @@ public class LayoutView {
public String getHeader() { public String getHeader() {
return new StringBuilder().append(localize("global.eventname")).append(" - ") return new StringBuilder().append(localize("global.eventname")).append(" - ")
.append(localize(new StringBuilder(getPagename()).append(".header").toString())).toString(); .append(localize(new StringBuilder("submenu").append(getPagepath().replace('/', '.')).toString())).toString();
} }
// public String header() {
public String header() { // logger.info("Context {}", context);
logger.info("Context {}", context); // UIViewRoot root = context.getViewRoot();
UIViewRoot root = context.getViewRoot(); // Map<String, Object> viewmap = root.getViewMap(false);
Map<String, Object> viewmap = root.getViewMap(false); // if (viewmap != null) {
if (viewmap != null) { // for (Entry<String, Object> entry : viewmap.entrySet()) {
for (Entry<String, Object> entry : viewmap.entrySet()) { // logger.info("Got entry {}: {}", entry.getKey(), entry.getValue());
logger.info("Got entry {}: {}", entry.getKey(), entry.getValue()); // }
} // }
} // logger.info("Attrmap");
logger.info("Attrmap"); // if (context.getAttributes() != null) {
if (context.getAttributes() != null) { // for (Entry<Object, Object> e : context.getAttributes().entrySet()) {
for (Entry<Object, Object> e : context.getAttributes().entrySet()) { // logger.info("Got attr {}: {}", e.getKey(), e.getValue());
logger.info("Got attr {}: {}", e.getKey(), e.getValue()); // }
} // }
} // return "";
return ""; // }
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!