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.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",
ACL.Category.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) 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")) announcementText(FxDataType.Text, multiplicity: FxMultiplicity.MULT_1_1, description: new FxString(true, "Announcement Text"), multiline: true) }
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, ACL.Permission.READ, ACL.Permission.EDIT, ACL.Permission.CREATE, ACL.Permission.DELETE) aclEng.assign(announcementTypeACLId, uGroupVisitors, ACL.Permission.READ)
long instanceAclReadAllId = aclEng.create( "Announcement Instance Read All",
new FxString("Announcement Instance Read All"),
FxContext.get().getTicket().getMandatorId(),
"#CC9900",
"Announcement Instance Read All",
ACL.Category.INSTANCE
)
aclEng.assign(instanceAclReadAllId, uGroupEditors, ACL.Permission.READ, ACL.Permission.EDIT, ACL.Permission.CREATE, ACL.Permission.DELETE)
aclEng.assign(instanceAclReadAllId, uGroupVisitors, ACL.Permission.READ)
long instanceAclEditorsOnlyId = aclEng.create( "Announcement Instance Editors Only",
new FxString("Announcement Instance Editors Only"),
FxContext.get().getTicket().getMandatorId(),
"#CC9900",
"Announcement Instance Editors Only",
ACL.Category.INSTANCE
)
aclEng.assign(instanceAclEditorsOnlyId, uGroupEditors, ACL.Permission.READ, ACL.Permission.EDIT, ACL.Permission.CREATE, ACL.Permission.DELETE) }