import com.flexive.shared.scripting.groovy.*
import com.flexive.shared.value.*
import com.flexive.shared.structure.*
import com.flexive.shared.EJBLookup
import com.flexive.shared.FxContext;
import com.flexive.shared.interfaces.AccountEngine;
import com.flexive.shared.security.ACL;
import com.flexive.shared.security.ACLCategory;
import com.flexive.shared.security.ACLPermission;
import com.flexive.shared.security.UserGroup;
import com.flexive.shared.security.AccountEdit
import com.flexive.shared.interfaces.ACLEngine
import com.flexive.shared.interfaces.UserGroupEngine;
import com.flexive.shared.CacheAdmin;
import com.flexive.shared.structure.FxEnvironment;
if (!CacheAdmin.getEnvironment().typeExists("announcementEntry")) {
UserGroupEngine ugEng = EJBLookup.getUserGroupEngine();
AccountEngine accEng= EJBLookup.getAccountEngine();
ACLEngine aclEng = EJBLookup.getAclEngine()
long announcementTypeACLId = aclEng.create(
"Announcement Type ACL",
new FxString("Announcement Type ACL"),
FxContext.get().getTicket().getMandatorId(),
"#CC9900",
"Announcement Type ACL",
ACLCategory.STRUCTURE
)
new GroovyTypeBuilder().announcementEntry(
description: new FxString(true, "Announcement"),
useTypePermissions: true, useInstancePermissions: true, acl: CacheAdmin.getEnvironment().getACL(announcementTypeACLId)) {
caption(assignment: "ROOT/CAPTION", multiplicity: FxMultiplicity.MULT_1_1) announcementText(FxDataType.Text, multiplicity: FxMultiplicity.MULT_1_1, description: new FxString(true, "Announcement Text"), multiline: true) publishDate(dataType: FxDataType.Date, multiplicity: FxMultiplicity.MULT_0_1, description: new FxString(true, "Publish Date")) publishURL(multiplicity: FxMultiplicity.MULT_0_1, description: new FxString(true, "Publish URL")) }
long uGroupEditors = ugEng.create("Editors", "#CC9900", FxContext.get().getTicket().getMandatorId())
long uGroupVisitors = ugEng.create("Visitors", "#CC9900", FxContext.get().getTicket().getMandatorId())
AccountEdit editorAccount = new AccountEdit()
AccountEdit visitorAccount = new AccountEdit()
editorAccount.setName("announcement.editor")
editorAccount.setEmail("as@as.net")
visitorAccount.setName("announcement.visitor")
visitorAccount.setEmail("vs@vs.net")
long accountEditorId = accEng.create(editorAccount, "editor")
long accountVisitorId = accEng.create(visitorAccount, "visitor")
accEng.addGroup(accountEditorId, uGroupEditors)
accEng.addGroup(accountVisitorId, uGroupVisitors)
aclEng.assign(announcementTypeACLId, uGroupEditors, ACLPermission.READ, ACLPermission.EDIT, ACLPermission.CREATE, ACLPermission.DELETE) aclEng.assign(announcementTypeACLId, uGroupVisitors, ACLPermission.READ)
long instanceAclReadAllId = aclEng.create(
"Announcement Instance Read All",
new FxString("Announcement Instance Read All"),
FxContext.get().getTicket().getMandatorId(),
"#CC9900",
"Announcement Instance Read All",
ACLCategory.INSTANCE
)
aclEng.assign(instanceAclReadAllId, uGroupEditors, ACLPermission.READ, ACLPermission.EDIT, ACLPermission.CREATE, ACLPermission.DELETE)
aclEng.assign(instanceAclReadAllId, uGroupVisitors, ACLPermission.READ)
long instanceAclEditorsOnlyId = aclEng.create(
"Announcement Instance Editors Only",
new FxString("Announcement Instance Editors Only"),
FxContext.get().getTicket().getMandatorId(),
"#CC9900",
"Announcement Instance Editors Only",
ACLCategory.INSTANCE
)
aclEng.assign(instanceAclEditorsOnlyId, uGroupEditors, ACLPermission.READ, ACLPermission.EDIT, ACLPermission.CREATE, ACLPermission.DELETE)
}