@@ -3,11 +3,13 @@ package info.bukova.isspst;
|
||||
import java.util.List;
|
||||
|
||||
import info.bukova.isspst.data.Permission;
|
||||
import info.bukova.isspst.data.RequirementType;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.data.User;
|
||||
import info.bukova.isspst.reporting.Report;
|
||||
import info.bukova.isspst.reporting.ReportMapping;
|
||||
import info.bukova.isspst.reporting.ReportType;
|
||||
import info.bukova.isspst.services.requirements.RequirementTypeService;
|
||||
import info.bukova.isspst.services.users.PermissionService;
|
||||
import info.bukova.isspst.services.users.RoleService;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
@@ -26,6 +28,7 @@ public class AppInitListener implements ServletContextListener {
|
||||
private RoleService roleService;
|
||||
private UserService userService;
|
||||
private PermissionService permService;
|
||||
private RequirementTypeService reqTypeService;
|
||||
|
||||
@Override
|
||||
public void contextDestroyed(ServletContextEvent arg0) {
|
||||
@@ -41,12 +44,14 @@ public class AppInitListener implements ServletContextListener {
|
||||
roleService = ctx.getBean(RoleService.class);
|
||||
userService = ctx.getBean(UserService.class);
|
||||
permService = ctx.getBean(PermissionService.class);
|
||||
reqTypeService = ctx.getBean(RequirementTypeService.class);
|
||||
|
||||
userService.grantAdmin();
|
||||
checkRoles();
|
||||
checkUsers();
|
||||
checkPermissions();
|
||||
checkAllAdminRights();
|
||||
checkReqTypes();
|
||||
userService.removeAccess();
|
||||
|
||||
loadModuleReports();
|
||||
@@ -141,4 +146,13 @@ public class AppInitListener implements ServletContextListener {
|
||||
}
|
||||
}
|
||||
|
||||
private void checkReqTypes() {
|
||||
List<RequirementType> types = reqTypeService.getAll();
|
||||
for (RequirementType type : Constants.REQTYPES) {
|
||||
if (!types.contains(type)) {
|
||||
reqTypeService.add(type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package info.bukova.isspst;
|
||||
|
||||
import info.bukova.isspst.data.Permission;
|
||||
import info.bukova.isspst.data.PermissionType;
|
||||
import info.bukova.isspst.data.RequirementType;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.reporting.Report;
|
||||
import info.bukova.isspst.reporting.ReportMapping;
|
||||
@@ -9,6 +10,7 @@ import info.bukova.isspst.services.addressbook.AdbService;
|
||||
import info.bukova.isspst.services.buildings.BuildingService;
|
||||
import info.bukova.isspst.services.munits.MUnitService;
|
||||
import info.bukova.isspst.services.material.MaterialService;
|
||||
import info.bukova.isspst.services.requirements.RequirementTypeService;
|
||||
import info.bukova.isspst.services.users.RoleService;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
@@ -57,6 +59,7 @@ public class Constants {
|
||||
public final static String MOD_MATERIAL = "MATERIAL";
|
||||
public final static String MOD_WORKGROUPS = "WORKGROUPS";
|
||||
public final static String MOD_REQUIREMENTS = "REQUIREMENTS";
|
||||
public final static String MOD_WORKFLOW = "WORKFLOW";
|
||||
public final static Module MODULES[] = {
|
||||
new Module(MOD_USERS, "Uživatelé", UserService.class),
|
||||
new Module(MOD_PERMISSIONS, "Práva", RoleService.class),
|
||||
@@ -65,13 +68,11 @@ public class Constants {
|
||||
new Module(MOD_MUNITS, "Měrné jednotky", MUnitService.class),
|
||||
new Module(MOD_MATERIAL, "Materiál", MaterialService.class),
|
||||
new Module(MOD_WORKGROUPS, "Pracovní skupiny", WorkgroupService.class),
|
||||
new Module(MOD_REQUIREMENTS, "Požadavky", null)
|
||||
new Module(MOD_REQUIREMENTS, "Požadavky", null),
|
||||
new Module(MOD_WORKFLOW, "Procesy schválení", RequirementTypeService.class)
|
||||
};
|
||||
|
||||
public final static String PERM_APPROVE_WORKGROUP = "PERM_APPROVE_WORKGROUP";
|
||||
public final static String PERM_APPROVE_CENTRE = "PERM_APPROVE_CENTRE";
|
||||
public final static String PERM_APPROVE_LIMIT = "PERM_APPROVE_LIMIT";
|
||||
public final static String PERM_APPROVE_FINAL = "PERM_APPROVE_FINAL";
|
||||
public final static String PERM_APPROVE = "PERM_APPROVE";
|
||||
public final static String PERM_SHOW_WORKGROUP_REQ = "PERM_SHOW_WORKGROUP_REQ";
|
||||
public final static String PERM_SHOW_CENTRE_REQ = "PERM_SHOW_CENTRE_REQ";
|
||||
public final static String PERM_SHOW_ALL_REQ = "PERM_SHOW_ALL_REQ";
|
||||
@@ -80,10 +81,7 @@ public class Constants {
|
||||
new Permission(PERM_SHOW_WORKGROUP_REQ, "Zobrazení požadavků komise", MOD_REQUIREMENTS, PermissionType.WORKGROUP),
|
||||
new Permission(PERM_SHOW_CENTRE_REQ, "Zobrazení požadavků střediska", MOD_REQUIREMENTS, PermissionType.CENTRE),
|
||||
new Permission(PERM_SHOW_ALL_REQ, "Zobrazení všech požadavků", MOD_REQUIREMENTS, PermissionType.GLOBAL),
|
||||
new Permission(PERM_APPROVE_WORKGROUP, "Schválení v komisi", MOD_REQUIREMENTS, PermissionType.WORKGROUP),
|
||||
new Permission(PERM_APPROVE_CENTRE, "Schválení ve středisku", MOD_REQUIREMENTS, PermissionType.CENTRE),
|
||||
new Permission(PERM_APPROVE_LIMIT, "Schválení nadlimitních", MOD_REQUIREMENTS, PermissionType.GLOBAL),
|
||||
new Permission(PERM_APPROVE_FINAL, "Konečné schválení", MOD_REQUIREMENTS, PermissionType.CENTRE),
|
||||
new Permission(PERM_APPROVE, "Schválení", MOD_REQUIREMENTS, PermissionType.WORKGROUP),
|
||||
};
|
||||
|
||||
public final static String DYNAMIC_REPORT_NAME = "Tabulková sestava";
|
||||
@@ -91,4 +89,11 @@ public class Constants {
|
||||
new ReportMapping(MOD_ADDRESSBOOK, new Report("Adresní karty", "address")),
|
||||
new ReportMapping(MOD_ADDRESSBOOK, new Report("Adresna", "address", false, true))
|
||||
};
|
||||
|
||||
public final static String REQTYPE_ORDER = "ORDER";
|
||||
public final static String REQTYPE_BUSINESSTRIP = "BUSINESSTRIP";
|
||||
public final static RequirementType REQTYPES[] = {
|
||||
new RequirementType(REQTYPE_ORDER, "Objednávky materiálu a služeb"),
|
||||
new RequirementType(REQTYPE_BUSINESSTRIP, "Služební cesty")
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package info.bukova.isspst.dao;
|
||||
|
||||
import info.bukova.isspst.data.RequirementType;
|
||||
|
||||
public interface RequirementTypeDao extends BaseDao<RequirementType> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package info.bukova.isspst.dao.jpa;
|
||||
|
||||
import info.bukova.isspst.dao.RequirementTypeDao;
|
||||
import info.bukova.isspst.data.RequirementType;
|
||||
|
||||
public class RequirementTypeDaoJPA extends BaseDaoJPA<RequirementType> implements RequirementTypeDao {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package info.bukova.isspst.data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OrderBy;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.hibernate.annotations.LazyCollection;
|
||||
import org.hibernate.annotations.LazyCollectionOption;
|
||||
|
||||
@Entity
|
||||
@Table(name = "REQUIREMENTTYPE")
|
||||
public class RequirementType extends BaseData {
|
||||
|
||||
@Column(name = "TYPE")
|
||||
private String type;
|
||||
@Column(name = "DESCRIPTION")
|
||||
private String description;
|
||||
@OneToMany(cascade = CascadeType.ALL)
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
@OrderBy("WORDER")
|
||||
private List<Workflow> workflow;
|
||||
|
||||
public RequirementType() {
|
||||
workflow = new ArrayList<Workflow>();
|
||||
}
|
||||
|
||||
public RequirementType(String type, String description) {
|
||||
this();
|
||||
this.type = type;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public List<Workflow> getWorkflow() {
|
||||
return workflow;
|
||||
}
|
||||
|
||||
public void setWorkflow(List<Workflow> workflow) {
|
||||
this.workflow = workflow;
|
||||
}
|
||||
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof RequirementType && ((RequirementType)o).getType().equals(this.type)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package info.bukova.isspst.data;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.hibernate.annotations.LazyCollection;
|
||||
import org.hibernate.annotations.LazyCollectionOption;
|
||||
|
||||
@Entity
|
||||
@Table(name = "WORKFLOW")
|
||||
public class Workflow extends BaseData {
|
||||
|
||||
@Column(name = "CENTRE")
|
||||
private Boolean centre;
|
||||
@ManyToOne
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
@JoinColumn(name = "ROLE_ID")
|
||||
private Role role;
|
||||
@Column(name = "WORDER")
|
||||
private Integer wOrder;
|
||||
|
||||
public Boolean getCentre() {
|
||||
return centre;
|
||||
}
|
||||
|
||||
public void setCentre(Boolean centre) {
|
||||
this.centre = centre;
|
||||
}
|
||||
|
||||
public Role getRole() {
|
||||
return role;
|
||||
}
|
||||
|
||||
public void setRole(Role role) {
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof Workflow
|
||||
&& ((Workflow)o).getCentre().equals(centre)
|
||||
&& ((Workflow)o).getRole().equals(role)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public Integer getOrder() {
|
||||
return wOrder;
|
||||
}
|
||||
|
||||
public void setOrder(Integer order) {
|
||||
this.wOrder = order;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package info.bukova.isspst.services.requirements;
|
||||
|
||||
import info.bukova.isspst.data.RequirementType;
|
||||
import info.bukova.isspst.services.Service;
|
||||
|
||||
public interface RequirementTypeService extends Service<RequirementType> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package info.bukova.isspst.services.requirements;
|
||||
|
||||
import info.bukova.isspst.data.RequirementType;
|
||||
import info.bukova.isspst.services.AbstractOwnedService;
|
||||
|
||||
public class RequirementTypeServiceImpl extends AbstractOwnedService<RequirementType> implements RequirementTypeService {
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package info.bukova.isspst.services.users;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import info.bukova.isspst.data.Permission;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.services.Service;
|
||||
|
||||
@@ -10,5 +11,7 @@ public interface RoleService extends Service<Role> {
|
||||
public Role getRoleByAuthority(String authority);
|
||||
public List<Role> getWorkgroupRoles();
|
||||
public List<Role> getCentreRoles();
|
||||
public List<Role> getRolesWithPermission(Permission perm, boolean centre);
|
||||
public List<Role> getRolesWithPermission(String authority, boolean centre);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,14 +1,22 @@
|
||||
package info.bukova.isspst.services.users;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hibernate.Query;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import info.bukova.isspst.data.Permission;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.services.AbstractService;
|
||||
|
||||
public class RoleServiceImpl extends AbstractService<Role> implements RoleService {
|
||||
|
||||
@Autowired
|
||||
private PermissionService permService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Role getRoleByAuthority(String authority) {
|
||||
@@ -27,4 +35,28 @@ public class RoleServiceImpl extends AbstractService<Role> implements RoleServic
|
||||
return this.execQuery("from Role where centre = true");
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Role> getRolesWithPermission(Permission perm, boolean centre) {
|
||||
String wgClausule;
|
||||
if (centre) {
|
||||
wgClausule = "centre";
|
||||
} else {
|
||||
wgClausule = "workgroup";
|
||||
}
|
||||
Set<Permission> perms = new HashSet<Permission>();
|
||||
perms.add(perm);
|
||||
Query q = dao.getQuery("select r from Role r join r.permissions p where r." + wgClausule + " = true and p in (:perms)");
|
||||
q.setParameterList("perms", perms);
|
||||
return q.list();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Role> getRolesWithPermission(String authority, boolean centre) {
|
||||
Permission p = permService.selectSingle("from Permission where authority = '" + authority + "'");
|
||||
return getRolesWithPermission(p, centre);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
package info.bukova.isspst.ui.requirements;
|
||||
|
||||
import info.bukova.isspst.Constants;
|
||||
import info.bukova.isspst.data.RequirementType;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.data.Workflow;
|
||||
import info.bukova.isspst.services.requirements.RequirementTypeService;
|
||||
import info.bukova.isspst.services.users.RoleService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.zkoss.bind.annotation.BindingParam;
|
||||
import org.zkoss.bind.annotation.Command;
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.bind.annotation.NotifyChange;
|
||||
import org.zkoss.zk.ui.event.DropEvent;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
import org.zkoss.zul.Listitem;
|
||||
|
||||
public class RequirementTypesVM {
|
||||
|
||||
@WireVariable
|
||||
private RequirementTypeService reqTypeService;
|
||||
@WireVariable
|
||||
private RoleService roleService;
|
||||
private List<RequirementType> reqTypes;
|
||||
private List<Role> centreRoles;
|
||||
private List<Role> workgroupRoles;
|
||||
private RequirementType selected;
|
||||
|
||||
@Init
|
||||
public void init() {
|
||||
reqTypes = reqTypeService.getAll();
|
||||
initRoles();
|
||||
}
|
||||
|
||||
private void initRoles() {
|
||||
centreRoles = new ArrayList<Role>(roleService.getRolesWithPermission(Constants.PERM_APPROVE, true));
|
||||
workgroupRoles = new ArrayList<Role>(roleService.getRolesWithPermission(Constants.PERM_APPROVE, false));
|
||||
}
|
||||
|
||||
@Command
|
||||
@NotifyChange({"selected", "centreRoles", "workgroupRoles"})
|
||||
public void addRoleWg(@BindingParam("event") DropEvent event) {
|
||||
Role r;
|
||||
try {
|
||||
r = ((Listitem)event.getDragged()).getValue();
|
||||
} catch (ClassCastException e) {
|
||||
return;
|
||||
}
|
||||
addRole(r, false);
|
||||
}
|
||||
|
||||
@Command
|
||||
@NotifyChange({"selected", "centreRoles", "workgroupRoles"})
|
||||
public void addRoleCentre(@BindingParam("event") DropEvent event) {
|
||||
Role r;
|
||||
try {
|
||||
r = ((Listitem)event.getDragged()).getValue();
|
||||
} catch (ClassCastException e) {
|
||||
return;
|
||||
}
|
||||
addRole(r, true);
|
||||
}
|
||||
|
||||
private void addRole(Role r, boolean centre) {
|
||||
Workflow w = new Workflow();
|
||||
w.setRole(r);
|
||||
w.setCentre(centre);
|
||||
w.setOrder(selected.getWorkflow().size());
|
||||
|
||||
if (!selected.getWorkflow().contains(w)) {
|
||||
selected.getWorkflow().add(w);
|
||||
}
|
||||
|
||||
if (centre) {
|
||||
centreRoles.remove(r);
|
||||
} else {
|
||||
workgroupRoles.remove(r);
|
||||
}
|
||||
|
||||
reqTypeService.update(selected);
|
||||
}
|
||||
|
||||
@Command
|
||||
@NotifyChange({"selected", "centreRoles", "workgroupRoles"})
|
||||
public void removeRoleWg(@BindingParam("event") DropEvent event) {
|
||||
removeWorkflow((Workflow) ((Listitem)event.getDragged()).getValue());
|
||||
}
|
||||
|
||||
@Command
|
||||
@NotifyChange({"selected", "centreRoles", "workgroupRoles"})
|
||||
public void removeRoleCentre(@BindingParam("event") DropEvent event) {
|
||||
removeWorkflow((Workflow) ((Listitem)event.getDragged()).getValue());
|
||||
}
|
||||
|
||||
private void removeWorkflow(Workflow w) {
|
||||
selected.getWorkflow().remove(w);
|
||||
|
||||
if (w.getCentre()) {
|
||||
centreRoles.add(w.getRole());
|
||||
} else {
|
||||
workgroupRoles.add(w.getRole());
|
||||
}
|
||||
|
||||
resetOrder();
|
||||
|
||||
reqTypeService.update(selected);
|
||||
}
|
||||
|
||||
@Command
|
||||
@NotifyChange({"selected", "centreRoles", "workgroupRoles"})
|
||||
public void reorderWg(@BindingParam("event") DropEvent event) {
|
||||
reorder(event, false);
|
||||
}
|
||||
|
||||
@Command
|
||||
@NotifyChange({"selected", "centreRoles", "workgroupRoles"})
|
||||
public void reorderCentre(@BindingParam("event") DropEvent event) {
|
||||
reorder(event, true);
|
||||
}
|
||||
|
||||
private void reorder(DropEvent event, boolean centre) {
|
||||
Workflow w;
|
||||
|
||||
try {
|
||||
w = ((Listitem)event.getDragged()).getValue();
|
||||
} catch (ClassCastException e) {
|
||||
if (centre) {
|
||||
addRoleCentre(event);
|
||||
} else {
|
||||
addRoleWg(event);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Workflow target = ((Listitem)event.getTarget()).getValue();
|
||||
List<Workflow> wf = selected.getWorkflow();
|
||||
int dragIndex = wf.indexOf(w);
|
||||
int dropIndex = wf.indexOf(target);
|
||||
|
||||
if (dragIndex > dropIndex) {
|
||||
wf.remove(w);
|
||||
wf.add(dropIndex, w);
|
||||
} else {
|
||||
for (int i = dragIndex; i < dropIndex; i++) {
|
||||
wf.add(i, wf.get(i + 1));
|
||||
}
|
||||
|
||||
wf.remove(w);
|
||||
wf.remove(dropIndex);
|
||||
wf.add(dropIndex, w);
|
||||
}
|
||||
|
||||
w.setOrder(wf.indexOf(w));
|
||||
resetOrder();
|
||||
|
||||
reqTypeService.update(selected);
|
||||
}
|
||||
|
||||
private void resetOrder() {
|
||||
for (int i = 0; i < selected.getWorkflow().size(); i++) {
|
||||
selected.getWorkflow().get(i).setOrder(i);
|
||||
}
|
||||
}
|
||||
|
||||
public List<RequirementType> getReqTypes() {
|
||||
return reqTypes;
|
||||
}
|
||||
|
||||
public List<Role> getCentreRoles() {
|
||||
return centreRoles;
|
||||
}
|
||||
|
||||
public List<Role> getWorkgroupRoles() {
|
||||
return workgroupRoles;
|
||||
}
|
||||
|
||||
public RequirementType getSelected() {
|
||||
return selected;
|
||||
}
|
||||
|
||||
@NotifyChange({"selected", "workgroupRoles", "centreRoles"})
|
||||
public void setSelected(RequirementType selected) {
|
||||
if (selected == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
initRoles();
|
||||
|
||||
for (Workflow w : selected.getWorkflow()) {
|
||||
if (w.getCentre()) {
|
||||
centreRoles.remove(w.getRole());
|
||||
} else {
|
||||
workgroupRoles.remove(w.getRole());
|
||||
}
|
||||
}
|
||||
|
||||
this.selected = selected;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,6 +16,8 @@
|
||||
<mapping class="info.bukova.isspst.data.Workgroup"></mapping>
|
||||
<mapping class="info.bukova.isspst.data.Member"></mapping>
|
||||
<mapping class="info.bukova.isspst.data.JobMapping"></mapping>
|
||||
<mapping class="info.bukova.isspst.data.Workflow"></mapping>
|
||||
<mapping class="info.bukova.isspst.data.RequirementType"></mapping>
|
||||
|
||||
</session-factory>
|
||||
</hibernate-configuration>
|
||||
@@ -38,6 +38,8 @@ AgendaRights=Práva
|
||||
RightsFormTitle=Práva
|
||||
RightsGridRole=Role
|
||||
RightsGridModules=Práva modulů
|
||||
WorkgroupFunction=Funkce v komisích
|
||||
CentreFunction=Funkce ve střediscích
|
||||
|
||||
AgendaSuppliers=Dodavatelé
|
||||
SuppliersFormTitle=Dodavatel
|
||||
@@ -90,6 +92,15 @@ MaterialFormTitle=Materiál
|
||||
AgendaWorkgroups=Střediska / komise
|
||||
WorkgroupFormTitle=Pracvní skupina
|
||||
|
||||
AgendaWorkflow=Procesy schválení
|
||||
RequirementType=Typ požadavku:
|
||||
AvailableRoles=Dostupné role
|
||||
WorkgroupRoles=Role komisí
|
||||
CentreRoles=Role středisek
|
||||
Workflow=Proces schválení
|
||||
WorkgroupWorkflow=Schválení v komisi
|
||||
CentreWorkflow=Schválení ve středisku
|
||||
|
||||
CentresForRequirements=Střediska, pro která lze vkládat požadavky
|
||||
WorkgroupMembership=Členství v komisích
|
||||
LogedInUser=Přihlášený uživatel:
|
||||
|
||||
@@ -128,6 +128,10 @@
|
||||
<property name="sessionFactory" ref="sessionFactory"/>
|
||||
</bean>
|
||||
|
||||
<bean id="reqTypeDao" class="info.bukova.isspst.dao.jpa.RequirementTypeDaoJPA">
|
||||
<property name="sessionFactory" ref="sessionFactory"/>
|
||||
</bean>
|
||||
|
||||
<!-- Business logic -->
|
||||
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
|
||||
|
||||
@@ -190,4 +194,9 @@
|
||||
<property name="validator" ref="validator"/>
|
||||
</bean>
|
||||
|
||||
<bean id="reqTypeService" class="info.bukova.isspst.services.requirements.RequirementTypeServiceImpl">
|
||||
<property name="dao" ref="reqTypeDao"/>
|
||||
<property name="validator" ref="validator"/>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<caption zclass="form-caption" label="${labels.AgendaRights}" />
|
||||
<label value="@load(vm.dataBean.description)" style="font-weight: bold;"/>
|
||||
<hbox>
|
||||
<checkbox label="Práva pracovních skupin" checked="@bind(vm.dataBean.workgroup)"/>
|
||||
<checkbox label="Práva středisek" checked="@bind(vm.dataBean.centre)"/>
|
||||
<checkbox label="${labels.WorkgroupFunction}" checked="@bind(vm.dataBean.workgroup)"/>
|
||||
<checkbox label="${labels.CentreFunction}" checked="@bind(vm.dataBean.centre)"/>
|
||||
</hbox>
|
||||
|
||||
<vbox children="@load(vm.modules)" width="730px">
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
</tabpanel>
|
||||
<tabpanel>
|
||||
<menubar orient="vertical">
|
||||
<menuitem label="${labels.AgendaWorkflow}" href="/settings/workflow" disabled="${not sec:isAllGranted('PERM_EDIT_WORKFLOW')}"/>
|
||||
<menuitem label="Limity částek"/>
|
||||
<menuitem label="E-maily" />
|
||||
</menubar>
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<?page title="${labels.AgendaWorkflow}" contentType="text/html;charset=UTF-8"?>
|
||||
<zk>
|
||||
|
||||
<zscript>
|
||||
String gridZul = "workflow.zul";
|
||||
</zscript>
|
||||
|
||||
<include src="/app/template.zhtml"/>
|
||||
|
||||
</zk>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?page title="${labels.AgendaWorkflow}" contentType="text/html;charset=UTF-8"?>
|
||||
<zk>
|
||||
<window border="normal" apply="org.zkoss.bind.BindComposer"
|
||||
viewModel="@id('vm') @init('info.bukova.isspst.ui.requirements.RequirementTypesVM')">
|
||||
<caption zclass="form-caption" label="${labels.AgendaWorkflow}" />
|
||||
<vbox>
|
||||
<hbox>
|
||||
<label value="${labels.RequirementType}"/>
|
||||
<combobox model="@load(vm.reqTypes)" readonly="true" width="300px" selectedItem="@bind(vm.selected)">
|
||||
<template name="model">
|
||||
<comboitem label="@load(each.description)"/>
|
||||
</template>
|
||||
</combobox>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<div hflex="1">
|
||||
<groupbox mold="3d" hflex="1">
|
||||
<caption label="${labels.AvailableRoles}"/>
|
||||
<vbox>
|
||||
<listbox id="allWgRoles" model="@load(vm.workgroupRoles)" droppable="workgroup"
|
||||
onDrop="@command('removeRoleWg', event=event)">
|
||||
<listhead>
|
||||
<listheader label="${labels.WorkgroupRoles}"/>
|
||||
</listhead>
|
||||
<template name="model">
|
||||
<listitem label="@load(each.description)" draggable="workgroup" droppable="workgroup"
|
||||
onDrop="@command('removeRoleCentre', event=event)"/>
|
||||
</template>
|
||||
</listbox>
|
||||
<listbox id="allCentreRoles" model="@load(vm.centreRoles)" droppable="centre"
|
||||
onDrop="@command('removeRoleCentre', event=event)">
|
||||
<listhead>
|
||||
<listheader label="${labels.CentreRoles }"/>
|
||||
</listhead>
|
||||
<template name="model">
|
||||
<listitem label="@load(each.description)" draggable="centre" droppable="centre"
|
||||
onDrop="@command('removeRoleCentre', event=event)"/>
|
||||
</template>
|
||||
</listbox>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
</div>
|
||||
<div hflex="1">
|
||||
<groupbox mold="3d" visible="@load(not empty vm.selected)">
|
||||
<caption label="${labels.Workflow}"/>
|
||||
<vbox>
|
||||
<listbox id="wgWorkflow" model="@load(vm.selected.workflow)" droppable="workgroup"
|
||||
onDrop="@command('addRoleWg', event=event)">
|
||||
<listhead>
|
||||
<listheader label="${labels.WorkgroupWorkflow}"/>
|
||||
</listhead>
|
||||
<template name="model">
|
||||
<listitem label="@load(each.role.description)" visible="@load(not each.centre)"
|
||||
onDrop="@command('reorderWg', event=event)" draggable="workgroup" droppable="workgroup"/>
|
||||
</template>
|
||||
</listbox>
|
||||
<listbox id="centreWorkflow" model="@load(vm.selected.workflow)" droppable="centre"
|
||||
onDrop="@command('addRoleCentre', event=event)">
|
||||
<listhead>
|
||||
<listheader label="${labels.CentreWorkflow}"/>
|
||||
</listhead>
|
||||
<template name="model">
|
||||
<listitem label="@load(each.role.description)" visible="@load(each.centre)"
|
||||
onDrop="@command('reorderCentre', event=event)" draggable="centre" droppable="centre"/>
|
||||
</template>
|
||||
</listbox>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
</div>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</window>
|
||||
</zk>
|
||||
Reference in New Issue
Block a user