Commit c6b6359c by Tuomas Riihimäki

Initial stream version...

There I fixed it....
1 parent 3bdc3b87
Showing with 1578 additions and 489 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());
......
...@@ -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>
......
...@@ -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,10 +33,11 @@ ...@@ -32,10 +33,11 @@
</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">
<li jsfc="ui:repeat" var="menuitem" value="#{menuView.getMenu(0)}"><h:link outcome="#{menuitem.outcome}" value="#{i18n[menuitem.navigation.key]}" <li jsfc="ui:repeat" var="menuitem" value="#{menuView.getMenu(0)}"><h:link outcome="#{menuitem.outcome}" value="#{i18n[menuitem.navigation.key]}"
...@@ -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>
<div>
<h:commandButton id="commitbtn" action="#{cc.attrs.commitaction}" value="#{cc.attrs.commitvalue}" /> <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}">
<f:ajax render="@form" event="valueChange"/>
</h:inputText>
<h:commandButton action="#{productShopView.add(1)}" value="#{i18n['productshop.plusOne']}"> <h:commandButton action="#{productShopView.add(1)}" value="#{i18n['productshop.plusOne']}">
<f:ajax render="@form" /> <f:ajax render="@form" />
</h:commandButton> </h:commandButton>
<h:commandButton action="#{productShopView.add(10)}" value="#{i18n['productshop.plusTen']}"> <h:commandButton action="#{productShopView.add(10)}" value="#{i18n['productshop.plusTen']}">
<f:ajax render="@form" /> <f:ajax render="@form" />
</h:commandButton> </h:commandButton>
<h:inputHidden value="#{cart.id}" />
</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,13 +345,15 @@ readerevent.shopToUser = Buy to user ...@@ -316,13 +345,15 @@ 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.cardtemplate = Cardtemplate
role.create = Create role role.create = Create role
role.description = Description role.description = Description
role.edit = Edit role.edit = Edit
...@@ -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
sitepage.edit = Edit
sitepage.name = Page name
sitepage.roles = Visible for roles
sitepagelist.header = Site pages
submenu.auth.sendResetMail = Password reset
submenu.bill.billSummary = Bill summary submenu.bill.billSummary = Bill summary
submenu.bill.list = My bills submenu.bill.list = My bills
submenu.bill.listAll = All bills submenu.bill.listAll = All bills
submenu.index = Front page
submenu.map.create = Create map submenu.map.create = Create map
submenu.map.list = List maps 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.create = Create product
submenu.product.list = List products 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,15 +386,23 @@ sidebar.users = K\u00E4ytt\u00E4j\u00E4t ...@@ -359,15 +386,23 @@ sidebar.users = K\u00E4ytt\u00E4j\u00E4t
sidebar.utils.flushCache = Flush Cache sidebar.utils.flushCache = Flush Cache
sidebar.utils.testdata = Testdata sidebar.utils.testdata = Testdata
sitepage.edit = Muokkaa
sitepage.name = Sivun nimi
sitepage.roles = N\u00E4ytet\u00E4\u00E4n rooleille
sitepagelist.header = Sivuston sis\u00E4ll\u00F6t
submenu.auth.sendResetMail = Salasanan palautus submenu.auth.sendResetMail = Salasanan palautus
submenu.bill.billSummary = Laskujen yhteenveto submenu.bill.billSummary = Laskujen yhteenveto
submenu.bill.list = N\u00E4yt\u00E4 omat laskut submenu.bill.list = N\u00E4yt\u00E4 omat laskut
submenu.bill.listAll = Kaikki laskut submenu.bill.listAll = Kaikki laskut
submenu.index = Etusivu
submenu.map.create = Uusi kartta submenu.map.create = Uusi kartta
submenu.map.list = N\u00E4yt\u00E4 kartat submenu.map.list = N\u00E4yt\u00E4 kartat
submenu.pages.create = Luo sis\u00E4lt\u00F6\u00E4
submenu.pages.list = N\u00E4yt\u00E4 sis\u00E4ll\u00F6t
submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi submenu.place.insertToken = Sy\u00F6t\u00E4 paikkakoodi
submenu.place.myGroups = Omat paikkavaraukset submenu.place.myGroups = Omat paikkavaraukset
submenu.poll.index = Kyselyt
submenu.product.create = Uusi tuote submenu.product.create = Uusi tuote
submenu.product.list = Listaa tuotteet submenu.product.list = Listaa tuotteet
submenu.role.create = Luo rooli submenu.role.create = Luo rooli
...@@ -378,17 +413,25 @@ submenu.user.changePassword = Vaihda salasana ...@@ -378,17 +413,25 @@ submenu.user.changePassword = Vaihda salasana
submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4 submenu.user.create = Luo k\u00E4ytt\u00E4j\u00E4
submenu.user.createCardTemplate = Luo korttiryhm\u00E4 submenu.user.createCardTemplate = Luo korttiryhm\u00E4
submenu.user.edit = K\u00E4ytt\u00E4j\u00E4n tiedot submenu.user.edit = K\u00E4ytt\u00E4j\u00E4n tiedot
submenu.user.invite = Kutsu yst\u00E4vi\u00E4
submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t submenu.user.list = Kaikki k\u00E4ytt\u00E4j\u00E4t
submenu.user.listCardTemplates = Korttiryhm\u00E4t submenu.user.listCardTemplates = Korttiryhm\u00E4t
submenu.user.manageuserlinks = Hallitse k\u00E4ytt\u00E4ji\u00E4 submenu.user.manageuserlinks = Hallitse k\u00E4ytt\u00E4ji\u00E4
submenu.user.rolelinks = Hallitse rooleja submenu.user.rolelinks = Hallitse rooleja
submenu.user.sendPicture = L\u00E4het\u00E4 kuva submenu.user.sendPicture = L\u00E4het\u00E4 kuva
submenu.user.userlinks = Muokkaa tietoja 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;
} }
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!