/* * $Id$ * $URL$ */ package org.subethamail.plugin.blueprint; import java.util.HashSet; import java.util.Set; import javax.inject.Inject; import javax.inject.Singleton; import org.subethamail.common.NotFoundException; import org.subethamail.core.lists.i.ListMgr; import org.subethamail.core.plugin.i.Blueprint; import org.subethamail.entity.i.Permission; import org.subethamail.entity.i.PermissionException; import org.subethamail.plugin.filter.AppendFooterFilter; import org.subethamail.plugin.filter.HoldEverythingFilter; import org.subethamail.plugin.filter.ListHeaderFilter; /** * Creates an announce-only list. * * @author Jeff Schnitzer * @author Jon Stevens * @author Scott Hernandez */ @Singleton public class AnnounceOnlyBlueprint implements Blueprint { @Inject ListMgr listMgr; /** */ public String getName() { return "Announce-Only List"; } /** */ public String getDescription() { return "Create a list which allows only moderators to post and view the subscriber list. " + "All messages are held for manual approval to prevent spoofing. " + "Subscribers can read the archives."; } /** */ public void configureMailingList(Long listId) { try { // Subscriber Set<Permission> perms = new HashSet<Permission>(); perms.add(Permission.VIEW_ARCHIVES); Long roleId = listMgr.addRole(listId, "Subscriber", perms); listMgr.setDefaultRole(listId, roleId); // Guest perms = new HashSet<Permission>(); roleId = listMgr.addRole(listId, "Guest", perms); listMgr.setAnonymousRole(listId, roleId); // Moderator perms = new HashSet<Permission>(); perms.add(Permission.POST); perms.add(Permission.VIEW_ARCHIVES); perms.add(Permission.VIEW_ADDRESSES); perms.add(Permission.VIEW_SUBSCRIBERS); perms.add(Permission.APPROVE_MESSAGES); perms.add(Permission.APPROVE_SUBSCRIPTIONS); perms.add(Permission.VIEW_ROLES); listMgr.addRole(listId, "Moderator", perms); // Add a couple useful filters listMgr.setFilterDefault(listId, AppendFooterFilter.class.getName()); listMgr.setFilterDefault(listId, ListHeaderFilter.class.getName()); listMgr.setFilterDefault(listId, HoldEverythingFilter.class.getName()); } catch (PermissionException pe) { throw new RuntimeException(pe); } catch (NotFoundException nfe) { throw new RuntimeException(nfe); } } }