Commit 09a28506 by Tuomas Riihimäki

Lisättyä Event ja EventOrganisation näkymät, ja lisää näkymäjuttuja

1 parent 1a8695ef
Showing with 712 additions and 115 deletions
...@@ -114,8 +114,11 @@ public class BillBean implements BillBeanLocal { ...@@ -114,8 +114,11 @@ public class BillBean implements BillBeanLocal {
@Override @Override
public BillLine addProductToBill(Bill bill, Product product, BigDecimal count) { public BillLine addProductToBill(Bill bill, Product product, BigDecimal count) {
// If bill number > 0 bill has been sent and extra privileges are needed to modify. // If bill number > 0 bill has been sent and extra privileges are needed
if (!userBean.isCurrentUser(bill.getUser()) || bill.getBillNumber() > 0) { // to modify.
boolean iscurrent = userBean.isCurrentUser(bill.getUser());
Integer billnr = bill.getBillNumber();
if (!iscurrent || billnr != null) {
userBean.fatalPermission(Permission.USER_MANAGEMENT, RolePermission.EXECUTE, "User tried to modify bill ", bill, "without sufficient permissions"); userBean.fatalPermission(Permission.USER_MANAGEMENT, RolePermission.EXECUTE, "User tried to modify bill ", bill, "without sufficient permissions");
} }
BillLine line = new BillLine(bill, product.getName(), product.getUnitName(), count, product.getPrice(), product.getVat()); BillLine line = new BillLine(bill, product.getName(), product.getUnitName(), count, product.getPrice(), product.getVat());
......
...@@ -84,5 +84,10 @@ public class EventBean implements EventBeanLocal { ...@@ -84,5 +84,10 @@ public class EventBean implements EventBeanLocal {
return ret; return ret;
} }
@Override
public LanEvent mergeChanges(LanEvent event) {
return eventFacade.merge(event);
}
} }
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.facade.EventOrganiserFacade;
import fi.insomnia.bortal.model.EventOrganiser;
/**
* Session Bean implementation class EventOrganiserBean
*/
@Stateless
public class EventOrganiserBean implements EventOrganiserBeanLocal {
@EJB
private EventOrganiserFacade eventorgfacade;
@EJB
private UserBeanLocal userbean;
@EJB
private SecurityBeanLocal securitybean;
/**
* Default constructor.
*/
public EventOrganiserBean() {
// TODO Auto-generated constructor stub
}
@Override
public void save(EventOrganiser eventorg) {
fatalPermission(eventorg);
eventorgfacade.merge(eventorg);
}
public void fatalPermission(EventOrganiser eventorg) {
if (!userbean.isCurrentUser(eventorg.getAdmin()) && !userbean.getCurrentUser().isSuperadmin()) {
throw new PermissionDeniedException(securitybean, userbean.getCurrentUser(), "Someone other than admin tried to access EventOrganiser: " + eventorg.toString());
}
}
@Override
public List<EventOrganiser> getEventOrganisers() {
if(!userbean.getCurrentUser().isSuperadmin())
{
throw new PermissionDeniedException(securitybean, userbean.getCurrentUser(), "Non-superadmin tried to list all EventOrganisers");
}
return eventorgfacade.findAll();
}
@Override
public EventOrganiser create(String name) {
EventOrganiser ret = new EventOrganiser();
ret.setAdmin(userbean.getCurrentUser());
ret.setOrganisation(name);
eventorgfacade.create(ret);
return ret;
}
}
...@@ -50,10 +50,13 @@ public class RoleBean implements RoleBeanLocal { ...@@ -50,10 +50,13 @@ public class RoleBean implements RoleBeanLocal {
public List<Role> listRoles() { public List<Role> listRoles() {
userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.READ, "User tried to listRoles"); userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.READ, "User tried to listRoles");
return listRoles(eventBean.getCurrentEvent());
return roleFacade.findAll();
} }
@Override
public List<Role> listRoles(LanEvent event) {
return roleFacade.findAll(event);
}
public Role mergeChanges(Role role) { public Role mergeChanges(Role role) {
userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.WRITE, "User tried merge role changes for ", role); userbean.fatalPermission(Permission.ROLE_MANAGEMENT, RolePermission.WRITE, "User tried merge role changes for ", role);
return roleFacade.merge(role); return roleFacade.merge(role);
...@@ -141,5 +144,11 @@ public class RoleBean implements RoleBeanLocal { ...@@ -141,5 +144,11 @@ public class RoleBean implements RoleBeanLocal {
} }
return rr; return rr;
} }
@Override
public Role find(int id, LanEvent event) {
return roleFacade.find(event.getId(), id);
}
} }
...@@ -92,7 +92,10 @@ public class UserBean implements UserBeanLocal { ...@@ -92,7 +92,10 @@ public class UserBean implements UserBeanLocal {
@Override @Override
public User mergeChanges(User user) { public User mergeChanges(User user) {
if (!isCurrentUser(user)) {
fatalPermission(Permission.USER_MANAGEMENT, RolePermission.WRITE); fatalPermission(Permission.USER_MANAGEMENT, RolePermission.WRITE);
}
return userFacade.merge(user); return userFacade.merge(user);
} }
...@@ -101,7 +104,7 @@ public class UserBean implements UserBeanLocal { ...@@ -101,7 +104,7 @@ public class UserBean implements UserBeanLocal {
} }
public boolean isCurrentUser(User user) { public boolean isCurrentUser(User user) {
return (context.getCallerPrincipal() == null || user == null) ? false : context.getCallerPrincipal().getName().equals(user.getNick()); return (context.getCallerPrincipal() == null || user == null) ? false : context.getCallerPrincipal().getName().equals(user.getLogin());
} }
public boolean isLoggedIn() { public boolean isLoggedIn() {
...@@ -150,15 +153,20 @@ public class UserBean implements UserBeanLocal { ...@@ -150,15 +153,20 @@ public class UserBean implements UserBeanLocal {
if (getRights(rolelist, target, permission, checkedRoles)) { if (getRights(rolelist, target, permission, checkedRoles)) {
ret = true; ret = true;
} }
logger.debug("Perm {} not found from cache. saving to cache: {}", target, ret); // logger.debug("Perm {} not found from cache. saving to cache: {}",
// target, ret);
BortalLocalContextHolder.setPermission(target, permission, ret); BortalLocalContextHolder.setPermission(target, permission, ret);
} else {
logger.debug("VALUE {} perm {} from cache: {}", new Object[] { target, permission, ret });
} }
// else {
// logger.debug("VALUE {} perm {} from cache: {}", new Object[] {
// target, permission, ret });
// }
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
long diffMs = Calendar.getInstance().getTimeInMillis() - start.getTimeInMillis(); long diffMs = Calendar.getInstance().getTimeInMillis() - start.getTimeInMillis();
logger.debug("User {} Target {}, permission {} checktime {}ms result: {}", new Object[] { user.getLogin(), target, permission, diffMs, ret }); // logger.debug("User {} Target {}, permission {} checktime {}ms result: {}",
// new Object[] { user.getLogin(), target, permission, diffMs, ret
// });
} }
// TODO: FIX THIS!! really bad idea.... // TODO: FIX THIS!! really bad idea....
......
...@@ -5,6 +5,7 @@ import java.io.OutputStream; ...@@ -5,6 +5,7 @@ import java.io.OutputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List; import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -21,6 +22,7 @@ import com.pdfjet.TextLine; ...@@ -21,6 +22,7 @@ import com.pdfjet.TextLine;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.BillLine; import fi.insomnia.bortal.model.BillLine;
import fi.insomnia.bortal.model.EventOrganiser; import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.utilities.BillUtils; import fi.insomnia.bortal.utilities.BillUtils;
public class PdfPrinter { public class PdfPrinter {
...@@ -81,7 +83,6 @@ public class PdfPrinter { ...@@ -81,7 +83,6 @@ public class PdfPrinter {
pagetitle.setSize(11); pagetitle.setSize(11);
// Ihan ensin tulostetaan selityskentät tuotteille. // Ihan ensin tulostetaan selityskentät tuotteille.
drawText(20, 640, "Tuotteet", pagetitle); drawText(20, 640, "Tuotteet", pagetitle);
drawText(210, 640, "Määrä", pagetitle); drawText(210, 640, "Määrä", pagetitle);
drawText(250, 640, "Yks.", pagetitle); drawText(250, 640, "Yks.", pagetitle);
...@@ -147,13 +148,16 @@ public class PdfPrinter { ...@@ -147,13 +148,16 @@ public class PdfPrinter {
private void drawSender(int xpos, int ystart) throws Exception { private void drawSender(int xpos, int ystart) throws Exception {
Font sendername = new Font(pdf, boldfontname); Font sendername = new Font(pdf, boldfontname);
sendername.setSize(20); sendername.setSize(17);
Font addressfont = new Font(pdf, fontname); Font addressfont = new Font(pdf, fontname);
addressfont.setSize(12); addressfont.setSize(12);
// User user = bill.getUser(); // User user = bill.getUser();
int space = 12; int space = 12;
EventOrganiser org = bill.getEvent().getOrganiser(); LanEvent event = bill.getEvent();
logger.debug("bill is for event {}", event);
EventOrganiser org = event.getOrganiser();
logger.debug("and organiser {}", org);
drawText(xpos, ystart, org.getBillAddress1(), sendername); drawText(xpos, ystart, org.getBillAddress1(), sendername);
drawText(xpos, ystart - space, org.getBillAddress2(), addressfont); drawText(xpos, ystart - space, org.getBillAddress2(), addressfont);
drawText(xpos, ystart - space * 2, org.getBillAddress3(), addressfont); drawText(xpos, ystart - space * 2, org.getBillAddress3(), addressfont);
...@@ -165,7 +169,7 @@ public class PdfPrinter { ...@@ -165,7 +169,7 @@ public class PdfPrinter {
Font addressfont = new Font(pdf, fontname); Font addressfont = new Font(pdf, fontname);
addressfont.setSize(12); addressfont.setSize(12);
drawSender(40, 800); drawSender(35, 800);
Font receivername = new Font(pdf, boldfontname); Font receivername = new Font(pdf, boldfontname);
receivername.setSize(13); receivername.setSize(13);
......
...@@ -31,14 +31,15 @@ public class RoleFacade extends EventChildGenericFacade<Role> { ...@@ -31,14 +31,15 @@ public class RoleFacade extends EventChildGenericFacade<Role> {
return em; return em;
} }
public Role findByName(String name) { public Role findByName(String name, LanEvent event) {
TypedQuery<Role> q = em.createNamedQuery("Role.findByRoleName", Role.class); TypedQuery<Role> q = em.createNamedQuery("Role.findByRoleName", Role.class);
q.setParameter("name", name); q.setParameter("name", name);
q.setParameter("event", event);
return this.getSingleNullableResult(q); return this.getSingleNullableResult(q);
} }
public List<Role> findForUser(User user, LanEvent event) { public List<Role> findForUser(User user, LanEvent event) {
TypedQuery<Role> q = getEm().createNamedQuery("Role.findForUserAndEvent", Role.class); TypedQuery<Role> q = getEm().createNamedQuery("Role.findForUser", Role.class);
q.setParameter("user", user); q.setParameter("user", user);
q.setParameter("event", event); q.setParameter("event", event);
return q.getResultList(); return q.getResultList();
...@@ -53,11 +54,7 @@ public class RoleFacade extends EventChildGenericFacade<Role> { ...@@ -53,11 +54,7 @@ public class RoleFacade extends EventChildGenericFacade<Role> {
} }
ret.removeAll(excludedResults); ret.removeAll(excludedResults);
return ret; return ret;
// TypedQuery<Role> q
// =getEm().createNamedQuery("Role.findParentsExcluding",Role.class);
// q.setParameter("children", roles);
// q.setParameter("excluded", excludedResults);
// return q.getResultList();
} }
...@@ -68,4 +65,10 @@ public class RoleFacade extends EventChildGenericFacade<Role> { ...@@ -68,4 +65,10 @@ public class RoleFacade extends EventChildGenericFacade<Role> {
return ret; return ret;
} }
public List<Role> findAll(LanEvent event) {
TypedQuery<Role> q = getEm().createNamedQuery("Role.findForEvent", Role.class);
q.setParameter("event", event);
return q.getResultList();
}
} }
...@@ -11,4 +11,6 @@ public interface EventBeanLocal { ...@@ -11,4 +11,6 @@ public interface EventBeanLocal {
LanEvent getCurrentEvent(); LanEvent getCurrentEvent();
LanEvent mergeChanges(LanEvent event);
} }
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.EventOrganiser;
@Local
public interface EventOrganiserBeanLocal {
void save(EventOrganiser eventorg);
void fatalPermission(EventOrganiser eventorg);
List<EventOrganiser> getEventOrganisers();
EventOrganiser create(String createorgname);
}
...@@ -9,6 +9,7 @@ import java.util.List; ...@@ -9,6 +9,7 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight; import fi.insomnia.bortal.model.RoleRight;
...@@ -31,5 +32,9 @@ public interface RoleBeanLocal { ...@@ -31,5 +32,9 @@ public interface RoleBeanLocal {
public List<Role> getPossibleParents(Role role); public List<Role> getPossibleParents(Role role);
public List<Role> listRoles(LanEvent event);
public Role find(int val, LanEvent event);
} }
...@@ -84,6 +84,7 @@ public class Bill implements EventChildInterface { ...@@ -84,6 +84,7 @@ public class Bill implements EventChildInterface {
@Column(nullable = false, name = "sent_time") @Column(nullable = false, name = "sent_time")
@Temporal(DATE) @Temporal(DATE)
private Calendar sentDate = Calendar.getInstance(); private Calendar sentDate = Calendar.getInstance();
@Column(name = "payment_time", nullable = false) @Column(name = "payment_time", nullable = false)
private Integer paymentTime = 0; private Integer paymentTime = 0;
@Column(name = "notice_days", nullable = false) @Column(name = "notice_days", nullable = false)
......
...@@ -29,10 +29,10 @@ import javax.persistence.Version; ...@@ -29,10 +29,10 @@ import javax.persistence.Version;
@Entity @Entity
@Table(name = "roles", uniqueConstraints = { @UniqueConstraint(columnNames = { "event_id", "role_name" }) }) @Table(name = "roles", uniqueConstraints = { @UniqueConstraint(columnNames = { "event_id", "role_name" }) })
@NamedQueries({ @NamedQueries({
@NamedQuery(name = "Role.findAll", query = "SELECT r FROM Role r"), @NamedQuery(name = "Role.findForEvent", query = "SELECT r FROM Role r where r.event = :event"),
@NamedQuery(name = "Role.findByRoleName", query = "SELECT r FROM Role r WHERE r.name = :name"), @NamedQuery(name = "Role.findByRoleName", query = "SELECT r FROM Role r WHERE r.name = :name and r.event = :event"),
// @NamedQuery(name="Role.findParentsExcluding", query="select r from Role r, RoleRight rr where :user member of r.users ), // @NamedQuery(name="Role.findParentsExcluding", query="select r from Role r, RoleRight rr where :user member of r.users ),
@NamedQuery(name = "Role.findForUserAndEvent", query = "SELECT r FROM Role r WHERE :user MEMBER OF r.users and r.event = :event") }) @NamedQuery(name = "Role.findForUser", query = "SELECT r FROM Role r WHERE :user MEMBER OF r.users and r.event = :event") })
public class Role implements EventChildInterface { public class Role implements EventChildInterface {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -99,6 +99,14 @@ ...@@ -99,6 +99,14 @@
<to-view-id>/role/edit.xhtml</to-view-id> <to-view-id>/role/edit.xhtml</to-view-id>
</navigation-case> </navigation-case>
</navigation-rule> </navigation-rule>
<navigation-rule>
<from-view-id>/product/createBill.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/bill/list.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<factory> <factory>
<exception-handler-factory>fi.insomnia.bortal.exceptions.BortalExceptionHandlerFactory</exception-handler-factory> <exception-handler-factory>fi.insomnia.bortal.exceptions.BortalExceptionHandlerFactory</exception-handler-factory>
</factory> </factory>
......
...@@ -5,13 +5,18 @@ ...@@ -5,13 +5,18 @@
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:f="http://java.sun.com/jsf/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools/auth" xmlns:login="http://java.sun.com/jsf/composite/tools/login"
xmlns:c="http://java.sun.com/jsp/jstl/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.auth.loginerror" /> <ui:param name="thispage" value="page.auth.loginerror" />
<ui:define name="content"> <ui:define name="content">
<tools:login /> <h1>#{i18n['loginerror.header']}</h1>
<p>
#{i18n['loginerror.message']}
</p>
<login:login />
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -6,8 +6,7 @@ ...@@ -6,8 +6,7 @@
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.auth.logout" /> <ui:param name="thispage" value="page.auth.logout" />
<ui:define name="content"> <ui:define name="content">
<h:outputText value="login.logoutmessage" /> <h:outputText value="#{i18n['login.logoutmessage']}" />
${sessionHandler.logout() }
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.bill.list" /> <ui:param name="thispage" value="page.bill.list" />
<ui:define name="content"> <ui:define name="content">
Bill list!
<bills:list /> <bills:list />
</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:c="http://java.sun.com/jsp/jstl/core"
xmlns:products="http://java.sun.com/jsf/composite/tools/products"
xmlns:tools="http://java.sun.com/jsf/composite/tools">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param
name="thispage"
value="page.product.create" />
<ui:define name="content">
<tools:fatalPermission
target="EVENT"
permission="EXECUTE" />
<h:form>
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['event.name']}:" />
<h:inputText value="#{eventView.name}" />
<h:outputLabel value="#{i18n['event']}:" />
<h:inputText value="#{productView.productprice}" />
<h:commandButton
action="#{productView.createProduct()}"
value="#{i18n['product.create']}" />
</h:panelGrid>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:users="http://java.sun.com/jsf/composite/tools/user"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.eventorg.create" />
<ui:define name="content">
<h:form id="orgform">
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['eventorg.organisation']}:" /><h:inputText value="#{eventorgView.createorgname}" />
<h:commandButton id="commitbtn" action="#{eventorgView.create()}" value="#{i18n['eventorg.create']}" />
</h:panelGrid>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:users="http://java.sun.com/jsf/composite/tools/user"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.eventorg.edit" />
<ui:define name="content">
<h:form id="orgform">
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['eventorg.organisation']}:" /><h:inputText value="#{eventorgView.eventorg.organisation}" />
<h:outputLabel value="#{i18n['eventorg.bundleCountry']}:" /><h:inputText value="#{eventorgView.eventorg.bundleCountry}" />
<h:outputLabel value="#{i18n['eventorg.billAddress1']}:" /><h:inputText value="#{eventorgView.eventorg.billAddress1}" />
<h:outputLabel value="#{i18n['eventorg.billAddress2']}:" /><h:inputText value="#{eventorgView.eventorg.billAddress2}" />
<h:outputLabel value="#{i18n['eventorg.billAddress3']}:" /><h:inputText value="#{eventorgView.eventorg.billAddress3}" />
<h:outputLabel value="#{i18n['eventorg.billAddress4']}:" /><h:inputText value="#{eventorgView.eventorg.billAddress4}" />
<h:outputLabel value="#{i18n['eventorg.bankNumber1']}:" /><h:inputText value="#{eventorgView.eventorg.bankNumber1}" />
<h:outputLabel value="#{i18n['eventorg.bankNumber2']}:" /><h:inputText value="#{eventorgView.eventorg.bankNumber2}" />
<h:outputLabel value="#{i18n['eventorg.bankName1']}:" /><h:inputText value="#{eventorgView.eventorg.bankName1}" />
<h:outputLabel value="#{i18n['eventorg.bankName2']}:" /><h:inputText value="#{eventorgView.eventorg.bankName2}" />
<h:commandButton id="commitbtn" action="#{eventorgView.save()}" value="#{i18n['eventorg.save']}" />
</h:panelGrid>
</h:form>
<h2>#{i18n['eventorg.events']}</h2>
<h:form id="orgsEventlist">
<h:dataTable border="1" id="org" value="#{eventorgView.orgsEvents}" var="event">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['event.name']}" />
</f:facet>
<h:outputText value="#{event.name}" />
</h:column>
<h:column >
<h:commandButton action="#{eventorgView.editEvent()}" value="#{i18n['eventorg.editEvent']}" />
</h:column>
</h:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:users="http://java.sun.com/jsf/composite/tools/user"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.eventorg.editEvent" />
<ui:define name="content">
<h:messages />
<h:form id="orgform">
<h:panelGrid columns="2">
<h:outputLabel value="#{i18n['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:inputText value="#{eventorgView.event.referenceNumberBase}" />
<h:outputLabel value="#{i18n['event.nextBillNumber']}:" /><h:inputText value="#{eventorgView.event.nextBillNumber}" />
<h:outputLabel value="#{i18n['event.startTime']}:" />
<h:inputText value="#{eventorgView.event.startTime}" >
<f:convertDateTime />
</h:inputText>
<h:outputLabel value="#{i18n['event.endTime']}:" />
<h:inputText value="#{eventorgView.event.endTime}" >
<f:convertDateTime />
</h:inputText>
<h:outputLabel value="#{i18n['event.defaultRole']}:" />
<h:selectOneMenu converter="#{eventorgView.roleconverter}" value="#{eventorgView.event.defaultRole}" >
<f:selectItems var="role" itemLabel="#{role.name}" value="#{eventorgView.eventsRolelist}" />
</h:selectOneMenu>
<h:commandButton id="commitbtn" action="#{eventorgView.saveEvent()}" value="#{i18n['event.save']}" />
</h:panelGrid>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:users="http://java.sun.com/jsf/composite/tools/user"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.eventorg.list" />
<ui:define name="content">
<h:form>
<h:dataTable border="1" id="eventorgs" value="#{eventorgView.organisations}" var="eventorg">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['eventorganiser.name']}" />
</f:facet>
<h:outputText value="#{eventorg.organisation}" />
</h:column>
<h:column >
<h:commandButton action="#{eventorgView.edit()}" value="#{i18n['eventorg.edit']}" />
</h:column>
</h:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body>
<ui:composition template="/layout/insomnia1/sidebartemplate.xhtml">
<ui:define name="sidebarcontent">
<ul>
<li><h:link outcome="/user/create.xhtml" value="#{i18n['sidebar.user.create']}"/></li>
</ul>
</ui:define>
</ui:composition>
</h:body>
</html>
\ No newline at end of file
...@@ -17,12 +17,21 @@ ...@@ -17,12 +17,21 @@
<div id="navigation"> <div id="navigation">
<img id="head" src="#{request.contextPath}/resources/style/insomnia1/img/header.gif" alt="headerimage" /> <img id="head" src="#{request.contextPath}/resources/style/insomnia1/img/header.gif" alt="headerimage" />
<div style="float: left" > <div style="float: left" >
<div id="headerbox"><tools:loginLogout /></div> <div id="headerbox"><tools:isLoggedIn>#{sessionHandler.loginname}</tools:isLoggedIn><tools:loginLogout /></div>
<div> <div>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'frontpage'?'a':''}"> <h:link outcome="/index" value="#{i18n['topmenu.frontpage']}" /></div> <div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'frontpage'?'a':''}"> <h:link outcome="/index" value="#{i18n['topmenu.frontpage']}" /></div>
<tools:isLoggedIn>
<f:facet name="errormessage">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'login'?'a': ''}"> <h:link outcome="/auth/login" value="#{i18n['login.login']}" /></div>
</f:facet>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'user'?'a':''}"> <h:link outcome="/user/editself" value="#{i18n['topmenu.usersPreferences']}" /></div> <div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'user'?'a':''}"> <h:link outcome="/user/editself" value="#{i18n['topmenu.usersPreferences']}" /></div>
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'shop'?'a': ''}"> <h:link outcome="/product/createBill" value="#{i18n['topmenu.shoppings']}" /></div> <div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'shop'?'a': ''}"> <h:link outcome="/product/createBill" value="#{i18n['topmenu.shoppings']}" /></div>
</tools:isLoggedIn>
<tools:canRead target="USER_MANAGEMENT">
<div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'admin'?'a':''}"> <h:link outcome="/product/list" value="#{i18n['topmenu.adminfront']}" /></div> <div class="link#{i18n[util.concat(thispage,'.pagegroup')] == 'admin'?'a':''}"> <h:link outcome="/product/list" value="#{i18n['topmenu.adminfront']}" /></div>
</tools:canRead>
</div> </div>
</div> </div>
</div> </div>
...@@ -30,7 +39,6 @@ ...@@ -30,7 +39,6 @@
<div id="cwrap"> <div id="cwrap">
<ui:include src="/layout/insomnia1/sidebar-#{i18n[util.concat(thispage,'.pagegroup')]}.xhtml" /> <ui:include src="/layout/insomnia1/sidebar-#{i18n[util.concat(thispage,'.pagegroup')]}.xhtml" />
<h:messages globalOnly="true" /> <h:messages globalOnly="true" />
<h:messages />
<ui:insert name="content" /> <ui:insert name="content" />
</div> </div>
</div> </div>
......
...@@ -15,9 +15,7 @@ ...@@ -15,9 +15,7 @@
<ui:param name="thispage" value="page.product.createBill" /> <ui:param name="thispage" value="page.product.createBill" />
<ui:define name="content"> <ui:define name="content">
<products:shop items="#{productShopView.billCart}" commitValue="#{i18n['productshop.commit']}" > <products:shop commitaction="#{productShopView.commitBillCart()}" items="#{productShopView.billCart}" commitValue="#{i18n['productshop.commit']}" />
<f:actionListener for="commitbutton" binding="#{productShopView.commitBillCart()}" />
</products:shop>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -18,9 +18,7 @@ ...@@ -18,9 +18,7 @@
<ui:define name="content"> <ui:define name="content">
<tools:fatalPermission target="PRODUCT" permission="WRITE" /> <tools:fatalPermission target="PRODUCT" permission="WRITE" />
<products:edit commitvalue="#{i18n['products.save']}"> <products:edit commitaction="#{productView.saveProduct()}" commitvalue="#{i18n['products.save']}" />
<f:actionListener for="commitbutton" binding="#{productView.saveProduct()}" />
</products:edit>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -20,6 +20,14 @@ ...@@ -20,6 +20,14 @@
<h:dataTable border="1" id="billList" value="#{billView.usersBills}" var="bill"> <h:dataTable border="1" id="billList" value="#{billView.usersBills}" var="bill">
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="${i18n['bill.sentDate']}" />
</f:facet>
<h:outputText value="#{bill.sentDate.time}" >
<f:convertDateTime dateStyle="short" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['bill.billNumber']}" /> <h:outputText value="${i18n['bill.billNumber']}" />
</f:facet> </f:facet>
<h:outputText value="#{bill.billNumber}" /> <h:outputText value="#{bill.billNumber}" />
...@@ -28,7 +36,9 @@ ...@@ -28,7 +36,9 @@
<f:facet name="header"> <f:facet name="header">
<h:outputText value="${i18n['bill.totalPrice']}" /> <h:outputText value="${i18n['bill.totalPrice']}" />
</f:facet> </f:facet>
<h:outputText value="#{bill.totalPrice()}" /> <h:outputText value="#{bill.totalPrice()}" >
<f:convertNumber currencyCode="EUR" maxFractionDigits="2" minFractionDigits="2" type="currency" />
</h:outputText>
</h:column> </h:column>
<h:column> <h:column>
<a href="#{request.contextPath}/PrintBill?billid=#{bill.id.id}" target="_blank" >#{i18n['bill.printBill']}</a> <a href="#{request.contextPath}/PrintBill?billid=#{bill.id.id}" target="_blank" >#{i18n['bill.printBill']}</a>
......
...@@ -21,9 +21,7 @@ ...@@ -21,9 +21,7 @@
<composite:insertChildren /> <composite:insertChildren />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<c:if test="#{not empty compositeComponent.facets.errormessage}"> <composite:renderFacet required="false" name="errormessage" />
<composite:insertFacet name="errormessage" />
</c:if>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
......
...@@ -21,9 +21,7 @@ ...@@ -21,9 +21,7 @@
<composite:insertChildren /> <composite:insertChildren />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<c:if test="#{not empty compositeComponent.facets.errormessage}"> <composite:renderFacet required="false" name="errormessage" />
<composite:insertFacet name="errormessage" />
</c:if>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
......
...@@ -21,9 +21,7 @@ ...@@ -21,9 +21,7 @@
<composite:insertChildren /> <composite:insertChildren />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<c:if test="#{not empty compositeComponent.facets.errormessage}"> <composite:renderFacet required="false" name="errormessage" />
<composite:insertFacet name="errormessage" />
</c:if>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
......
...@@ -10,21 +10,17 @@ ...@@ -10,21 +10,17 @@
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools"> xmlns:tools="http://java.sun.com/jsf/composite/tools">
<composite:interface> <composite:interface>
<composite:attribute name="target" required="true" />
<composite:attribute name="permission" required="true" />
<composite:facet name="errormessage" /> <composite:facet name="errormessage" />
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<c:choose> <c:choose>
<c:when test='#{sessionHandler.hasPermission(target, permission) }'> <c:when test='#{sessionHandler.isLoggedIn() }'>
<composite:insertChildren /> <composite:insertChildren />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<c:if test="#{not empty compositeComponent.facets.errormessage}"> <composite:renderFacet required="false" name="errormessage" />
<composite:insertFacet name="errormessage" />
</c:if>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
......
...@@ -20,9 +20,7 @@ ...@@ -20,9 +20,7 @@
<composite:insertChildren /> <composite:insertChildren />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<c:if test="#{not empty compositeComponent.facets.errormessage}"> <composite:renderFacet required="false" name="errormessage" />
<composite:insertFacet name="errormessage" />
</c:if>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<form action="j_security_check" method="post"> <form action="j_security_check" id="login" method="post">
<c:choose> <c:choose>
<c:when test="#{not empty cc.attrs.isOneliner}"> <c:when test="#{not empty cc.attrs.isOneliner}">
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
<input type="submit" value="#{i18n['login.submit']}" /> <input type="submit" value="#{i18n['login.submit']}" />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:outputText value="#{i18n['login.username']}" /> <h:outputText value="#{i18n['login.username']}" />
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<composite:implementation> <composite:implementation>
<h:form> <h:form>
<h:commandLink action="#{sessionHandler.logout}" value="#{i18n['login.logout']}" /> <h:commandLink immediate="true" action="#{sessionHandler.logout}" value="#{i18n['login.logout']}" />
</h:form> </h:form>
</composite:implementation> </composite:implementation>
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<composite:interface> <composite:interface>
<composite:attribute name="commitvalue" required="true" /> <composite:attribute name="commitvalue" required="true" />
<composite:actionSource name="commitbutton" targets="productform:commitbtn" /> <composite:attribute name="commitaction" required="true" method-signature="java.lang.String action()" />
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<h:outputLabel value="#{i18n['product.sort']}:" /><h:inputText value="#{productView.product.sort}" /> <h:outputLabel value="#{i18n['product.sort']}:" /><h:inputText value="#{productView.product.sort}" />
<h:outputLabel value="#{i18n['product.barcode']}:" /><h:inputText value="#{productView.product.barcode}" /> <h:outputLabel value="#{i18n['product.barcode']}:" /><h:inputText value="#{productView.product.barcode}" />
<h:outputLabel value="#{i18n['product.prepaid']}" /><h:selectBooleanCheckbox value="#{productView.product.prepaid}" /> <h:outputLabel value="#{i18n['product.prepaid']}" /><h:selectBooleanCheckbox value="#{productView.product.prepaid}" />
<h:commandButton id="commitbtn" value="#{cc.attrs.commitvalue}" /> <h:commandButton id="commitbtn" action="#{cc.attrs.commitaction}" value="#{cc.attrs.commitvalue}" />
</h:panelGrid> </h:panelGrid>
</h:form> </h:form>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<composite:attribute name="items" required="true" /> <composite:attribute name="items" required="true" />
<composite:attribute name="commitValue" required="true" /> <composite:attribute name="commitValue" required="true" />
<composite:attribute name="outcome" required="false" /> <composite:attribute name="outcome" required="false" />
<composite:actionSource name="commitbutton" targets="shopform:commitbutton" /> <composite:attribute name="commitaction" method-signature="java.lang.String action()" required="true" />
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
</h:column> </h:column>
</h:dataTable> </h:dataTable>
<h:commandButton outcome="#{cc.attrs.outcome}" id="commitbutton" value="#{cc.attrs.commitValue}" /> <h:commandButton action="#{cc.attrs.commitaction}" id="commitbutton" value="#{cc.attrs.commitValue}" />
</h:form> </h:form>
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<h:inputText value="#{roleView.role.name}" /> <h:inputText value="#{roleView.role.name}" />
<h:outputText value="#{i18n['role.parents']}" /> <h:outputText value="#{i18n['role.parents']}" />
<h:selectManyCheckbox id ="roleparents" value="#{roleView.roleParents}"> <h:selectManyCheckbox layout="pageDirection" id ="roleparents" value="#{roleView.roleParents}">
<f:selectItems var="par" itemValue="#{par.id.id}" itemLabel="#{par.name}" value="#{roleView.possibleParents}" /> <f:selectItems var="par" itemValue="#{par.id.id}" itemLabel="#{par.name}" value="#{roleView.possibleParents}" />
</h:selectManyCheckbox> </h:selectManyCheckbox>
</h:panelGrid> </h:panelGrid>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<composite:interface> <composite:interface>
<composite:attribute name="user" required="true" /> <composite:attribute name="user" required="true" />
<composite:attribute name="commitvalue" required="true" /> <composite:attribute name="commitvalue" required="true" />
<composite:actionSource name="commitbutton" targets="userform:commitbtn" /> <composite:attribute name="commitaction" required="true" method-signature="java.lang.String action()" />
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<f:selectItem id="male" itemLabel="#{i18n['user.sex.MALE']}" itemValue="MALE" /> <f:selectItem id="male" itemLabel="#{i18n['user.sex.MALE']}" itemValue="MALE" />
<f:selectItem id="female" itemLabel="#{i18n['user.sex.FEMALE']}" itemValue="FEMALE" /> <f:selectItem id="female" itemLabel="#{i18n['user.sex.FEMALE']}" itemValue="FEMALE" />
</h:selectOneRadio> </h:selectOneRadio>
<h:commandButton id="commitbtn" value="#{cc.attrs.commitvalue}" /> <h:commandButton id="commitbtn" action="#{cc.attrs.commitaction}" value="#{cc.attrs.commitvalue}" />
</h:panelGrid> </h:panelGrid>
</h:form> </h:form>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
xmlns:c="http://java.sun.com/jsp/jstl/core"> xmlns:c="http://java.sun.com/jsp/jstl/core">
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<tools:fatalPermission target="LOGIN" permission="WRITE" />
<ui:param name="thispage" value="page.role.create" /> <ui:param name="thispage" value="page.role.create" />
<ui:define name="content"> <ui:define name="content">
<tools:fatalPermission target="ROLE_MANAGEMENT" permission="WRITE" /> <tools:fatalPermission target="ROLE_MANAGEMENT" permission="WRITE" />
......
...@@ -11,9 +11,7 @@ ...@@ -11,9 +11,7 @@
<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:param name="thispage" value="page.user.create" />
<ui:define name="content"> <ui:define name="content">
<users:edit user="#{userView.user}" commitvalue="#{i18n['user.save']}"> <users:edit commitaction="#{userView.saveUser()}" user="#{userView.user}" commitvalue="#{i18n['user.save']}"/>
<f:actionListener for="commitbutton" binding="#{userView.saveUser()}" />
</users:edit>
<users:editroles /> <users:editroles />
</ui:define> </ui:define>
......
...@@ -12,11 +12,9 @@ ...@@ -12,11 +12,9 @@
<ui:param name="thispage" value="page.user.editself" /> <ui:param name="thispage" value="page.user.editself" />
<ui:define name="content"> <ui:define name="content">
<users:edit user="#{userView.self}" commitvalue="#{i18n['user.save']}"> <users:edit commitaction="#{userView.saveUser()}" user="#{userView.self}" commitvalue="#{i18n['user.save']}" />
<f:actionListener for="commitbutton" binding="#{userView.saveUser()}" />
</users:edit>
<users:editroles /> <users:editroles rendered="#{sessionhandler.hasPermission('ROLE_MANAGEMENT', 'READ')}"/>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
......
...@@ -46,7 +46,8 @@ public class SessionHandler { ...@@ -46,7 +46,8 @@ 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_XII";
} }
public String getLayout() { public String getLayout() {
...@@ -157,6 +158,13 @@ public class SessionHandler { ...@@ -157,6 +158,13 @@ public class SessionHandler {
return userbean.getCurrentUser().isSuperadmin(); return userbean.getCurrentUser().isSuperadmin();
} }
public String getLoginname()
{
return userbean.getCurrentUser().getLogin();
}
public User getCurrentUser()
{
return userbean.getCurrentUser();
}
} }
package fi.insomnia.bortal.view;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UISelectItems;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.EventOrganiserBeanLocal;
import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.beans.SecurityBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.web.converter.RoleConverter;
@ManagedBean(name = "eventorgView")
@SessionScoped
public class EventOrganiserView {
private static final Logger logger = LoggerFactory.getLogger(EventOrganiserView.class);
@EJB
private UserBeanLocal userbean;
@EJB
private EventOrganiserBeanLocal eventorgbean;
@EJB
private RoleBeanLocal rolebean;
@EJB
private EventBeanLocal eventbean;
private ListDataModel<EventOrganiser> organisers;
private ListDataModel<LanEvent> orgsEvents;
private EventOrganiser eventorg;
private String createorgname;
private LanEvent event;
public DataModel<EventOrganiser> getOrganisations() {
userbean.fatalNotLoggedIn();
User usr = userbean.getCurrentUser();
List<EventOrganiser> list = null;
if (usr.isSuperadmin()) {
list = eventorgbean.getEventOrganisers();
} else {
list = usr.getEventOrganiser();
}
organisers = new ListDataModel<EventOrganiser>(list);
return organisers;
}
public DataModel<LanEvent> getOrgsEvents() {
orgsEvents = new ListDataModel<LanEvent>(eventorg.getEvents());
return orgsEvents;
}
public String editEvent() {
setEvent(orgsEvents.getRowData());
return "editEvent";
}
public String edit() {
eventorg = null;
EventOrganiser row = organisers.getRowData();
eventorgbean.fatalPermission(row);
eventorg = row;
return "edit";
}
public String save() {
eventorgbean.fatalPermission(eventorg);
eventorgbean.save(eventorg);
return "edit";
}
public String saveEvent()
{
logger.debug("Saving event. role {}", event.getDefaultRole());
event= eventbean.mergeChanges(event);
return "editEvent";
}
public String create() {
eventorg = eventorgbean.create(createorgname);
return "edit";
}
public void setEventorg(EventOrganiser eventorg) {
this.eventorg = eventorg;
}
public EventOrganiser getEventorg() {
return eventorg;
}
public void setCreateorgname(String createorgname) {
this.createorgname = createorgname;
}
public String getCreateorgname() {
return createorgname;
}
public void setEvent(LanEvent event) {
this.event = event;
}
public LanEvent getEvent() {
return event;
}
public List<Role> getEventsRolelist() {
if (event.getId() == null || event.getId() == 0) {
return new ArrayList<Role>();
}
return rolebean.listRoles(event);
}
public void eventDefaultRoleChangelistener(ValueChangeEvent ev) {
logger.debug("Default role changed. Type {}, vaule {}", ev.getNewValue().getClass(), ev.getNewValue());
int val = Integer.parseInt(ev.getNewValue().toString());
Role nrole = null;
if (val > 0) {
nrole = rolebean.find(val, event);
}
event.setDefaultRole(nrole);
}
public RoleConverter getRoleconverter()
{
return new RoleConverter(rolebean, event);
}
}
...@@ -10,9 +10,6 @@ import java.util.Iterator; ...@@ -10,9 +10,6 @@ import java.util.Iterator;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped; import javax.faces.bean.SessionScoped;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import javax.faces.model.DataModel; import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel; import javax.faces.model.ListDataModel;
...@@ -25,7 +22,6 @@ import fi.insomnia.bortal.beans.ProductBeanLocal; ...@@ -25,7 +22,6 @@ import fi.insomnia.bortal.beans.ProductBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission; import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -55,7 +51,7 @@ public class ProductShopView { ...@@ -55,7 +51,7 @@ public class ProductShopView {
return items; return items;
} }
public void commitBillCart() { public String commitBillCart() {
userBean.fatalPermission(Permission.PRODUCT, RolePermission.EXECUTE); userBean.fatalPermission(Permission.PRODUCT, RolePermission.EXECUTE);
logger.debug("Committing billCart"); logger.debug("Committing billCart");
...@@ -70,7 +66,7 @@ public class ProductShopView { ...@@ -70,7 +66,7 @@ public class ProductShopView {
billBean.addProductToBill(bill, shopitem.getProduct(), shopitem.getCount()); billBean.addProductToBill(bill, shopitem.getProduct(), shopitem.getCount());
} }
} }
return "success";
} }
public DataModel<ProductShopItem> getBillCart() { public DataModel<ProductShopItem> getBillCart() {
......
...@@ -8,12 +8,8 @@ import java.util.Set; ...@@ -8,12 +8,8 @@ import java.util.Set;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.faces.application.FacesMessage; import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped; import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import javax.faces.model.ListDataModel; import javax.faces.model.ListDataModel;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -22,13 +18,9 @@ import org.slf4j.LoggerFactory; ...@@ -22,13 +18,9 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.I18n; import fi.insomnia.bortal.I18n;
import fi.insomnia.bortal.beans.RoleBeanLocal; import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.beans.SecurityBeanLocal; import fi.insomnia.bortal.beans.SecurityBeanLocal;
import fi.insomnia.bortal.beans.JaasBeanLocal;
import fi.insomnia.bortal.beans.SecurityLogType;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission; import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.handler.SessionHandler;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -36,8 +28,6 @@ import fi.insomnia.bortal.model.User; ...@@ -36,8 +28,6 @@ import fi.insomnia.bortal.model.User;
@SessionScoped @SessionScoped
public class UserView { public class UserView {
@ManagedProperty("#{sessionHandler}")
private SessionHandler sessionhandler;
@EJB @EJB
private UserBeanLocal userBean; private UserBeanLocal userBean;
...@@ -63,15 +53,7 @@ public class UserView { ...@@ -63,15 +53,7 @@ public class UserView {
private Set<String> userRoleIds; private Set<String> userRoleIds;
public List<Role> getUserRoles() { public List<Role> getUserRoles() {
userRoleIds = new HashSet<String>();
List<Role> roles = user.getRoles();
if (roles == null) {
roles = new ArrayList<Role>();
} else {
for (Role role : roles) {
userRoleIds.add(role.getId().getId().toString());
}
}
return roleBean.listRoles(); return roleBean.listRoles();
} }
...@@ -98,7 +80,7 @@ public class UserView { ...@@ -98,7 +80,7 @@ public class UserView {
public User getSelf() { public User getSelf() {
userBean.fatalNotLoggedIn(); userBean.fatalNotLoggedIn();
user = userBean.getCurrentUser(); setUser(userBean.getCurrentUser());
return user; return user;
} }
...@@ -125,14 +107,15 @@ public class UserView { ...@@ -125,14 +107,15 @@ public class UserView {
return "edit"; return "edit";
} }
public void saveUser() { public String saveUser() {
User thisusr = getUser(); User thisusr = getUser();
if (!userBean.isCurrentUser(thisusr)) { if (!userBean.isCurrentUser(thisusr)) {
logger.debug("user {} is modifying user {}",userBean.getCurrentUser(), thisusr);
userBean.fatalPermission(Permission.USER_MANAGEMENT, RolePermission.WRITE); userBean.fatalPermission(Permission.USER_MANAGEMENT, RolePermission.WRITE);
} }
setUser(userBean.mergeChanges(getUser())); setUser(userBean.mergeChanges(getUser()));
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(I18n.get("user.successfullySaved"))); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(I18n.get("user.successfullySaved")));
return "";
} }
public ListDataModel<User> getUsers() { public ListDataModel<User> getUsers() {
...@@ -167,18 +150,21 @@ public class UserView { ...@@ -167,18 +150,21 @@ public class UserView {
public void setUser(User user) { public void setUser(User user) {
this.user = user; this.user = user;
if (userBean.hasPermission(Permission.ROLE_MANAGEMENT, RolePermission.READ)) {
userRoleIds = new HashSet<String>();
List<Role> roles = user.getRoles();
if (roles == null) {
roles = new ArrayList<Role>();
} else {
for (Role role : roles) {
userRoleIds.add(role.getId().getId().toString());
}
} }
public User getUser() {
return user;
} }
public void setSessionhandler(SessionHandler sessionhandler) {
this.sessionhandler = sessionhandler;
} }
public SessionHandler getSessionhandler() { public User getUser() {
return sessionhandler; return user;
} }
public void setUserRoleIds(Set<String> userRoleIds) { public void setUserRoleIds(Set<String> userRoleIds) {
......
package fi.insomnia.bortal.web.converter;
import java.util.Calendar;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
public class CalendarConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
// TODO Auto-generated method stub
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
Calendar val = (Calendar) value;
return "";
}
}
package fi.insomnia.bortal.web.converter;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.NoneScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import org.granite.logging.Logger;
@ManagedBean(name = "emptytonullconverter")
@NoneScoped
public class EmptyToNullConverter implements Converter {
private static final Logger logger = Logger.getLogger(EmptyToNullConverter.class);
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
String ret = value;
if (value.trim().isEmpty()) {
ret = null;
}
return ret;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
logger.debug("Emptytonull converter as String");
String ret = "";
if (value != null) {
ret = value.toString();
}
return ret;
}
}
package fi.insomnia.bortal.web.converter;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.NoneScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.RoleBeanLocal;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role;
public class RoleConverter implements Converter {
private RoleBeanLocal rolebean;
private LanEvent event;
private static final Logger logger = LoggerFactory.getLogger(RoleConverter.class);
public RoleConverter(RoleBeanLocal rbean, LanEvent event) {
this.rolebean = rbean;
this.event = event;
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
logger.debug("converting string {} to Object", value);
Role ret = rolebean.find(Integer.parseInt(value), event);
logger.debug("found {} from conversion", ret);
return ret;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
String ret = "";
if (value instanceof Role) {
ret = ((Role) value).getId().getId().toString();
}
logger.debug("converting role {} to string", ret);
return ret;
}
}
...@@ -14,15 +14,20 @@ page.auth.login.title=Login error ...@@ -14,15 +14,20 @@ page.auth.login.title=Login error
page.index.pagegroup=frontpage page.index.pagegroup=frontpage
page.auth.login.pagegroup=frontpage page.auth.login.pagegroup=login
page.auth.loginerror.pagegroup=frontpage page.auth.loginerror.pagegroup=frontpage
page.auth.logout.pagegroup=frontpage page.auth.logout.pagegroup=login
page.auth.notauthorized.pagegroup=frontpage page.auth.notauthorized.pagegroup=frontpage
page.bill.list.pagegroup=user page.bill.list.pagegroup=user
page.viewexpired.pagegroup=frontpage page.viewexpired.pagegroup=frontpage
page.eventorg.list.pagegroup=admin
page.eventorg.edit.pagegroup=admin
page.eventorg.create.pagegroup=admin
page.eventorg.editEvent.pagegroup=admin
page.product.create.pagegroup=admin page.product.create.pagegroup=admin
page.product.createBill.pagegroup=shop page.product.createBill.pagegroup=shop
page.product.edit.pagegroup=admin page.product.edit.pagegroup=admin
......
...@@ -24,6 +24,8 @@ product.save=Tallenna ...@@ -24,6 +24,8 @@ product.save=Tallenna
product.sort=J\u00e4rjestys luku product.sort=J\u00e4rjestys luku
product.unitName=Tuoteyksikk\u00f6 product.unitName=Tuoteyksikk\u00f6
product.vat=ALV product.vat=ALV
product.cart.count=Ostoskoriin
productshop.commit=Osta
role.create=Luo rooli role.create=Luo rooli
role.edit=Muokkaa role.edit=Muokkaa
role.name=Nimi role.name=Nimi
...@@ -48,12 +50,20 @@ user.address=Osoite ...@@ -48,12 +50,20 @@ user.address=Osoite
user.zipCode=Postinumero user.zipCode=Postinumero
user.town=Kaupunki user.town=Kaupunki
user.sex=Sukupuoli user.sex=Sukupuoli
user.superadmin=Superadmin
user.rolesave=Tallenna roolit
bill.billNumber=Laskun numero
loginerror.header=Kirjautuminen eponnistui
loginerror.message=Kyttjtunnus tai salasana ei ollut oikein.
permissiondenied.alreadyLoggedIn=Sinulla ei ole riittvsti oikeuksia!
user.sex.FEMALE=Nainen user.sex.FEMALE=Nainen
user.sex.MALE=Mies user.sex.MALE=Mies
user.sex.UNDEFINED=M\u00e4\u00e4rittelem\u00e4tt\u00e4 user.sex.UNDEFINED=M\u00e4\u00e4rittelem\u00e4tt\u00e4
user.username=K\u00e4ytt\u00e4j\u00e4tunnus user.username=K\u00e4ytt\u00e4j\u00e4tunnus
user.validate.notUniqueUsername=K\u00e4ytt\u00e4j\u00e4tunnus on jo olemassa. Ole hyv\u00e4 ja valitse toinen tunnus user.validate.notUniqueUsername=K\u00e4ytt\u00e4j\u00e4tunnus on jo olemassa. Ole hyv\u00e4 ja valitse toinen tunnus
permissiondenied.header=Psy kielletty
permissiondenied.notLoggedIn=Sinulla ei ole riittvsti oikeuksia tlle sivulle.
viewexpired.title=Nkym on vanhentumut viewexpired.title=Nkym on vanhentumut
viewexpired.body=Ole hyv ja kirjaudu sisn uudelleen. viewexpired.body=Ole hyv ja kirjaudu sisn uudelleen.
eventorg.events=Organisaation tapahtumat
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!