Who administers the site will be decided by priviledge granted to the Forum Application. There will be a distinction between Forum Administrators and Forum Moderators, a new priviledge called "forum_moderate" will be added, and a party created. Parties that can moderate will be added to this party.
The draft state (pending approval) and approved states will be handl ed by adding a "status" attribute to ForumMessage.
When the forum is not moderated, the message filters on the display will be turned off. This means that when forum moderation is turned on after the forum has been active for a while, all messages will be at the "pending" or "reapprove" status.
When a moderated forum is changed to unmoderated, all PENDING posts will be automatically approved.
For the moderators the thread list will have two viewing flags
object type Post extends com.arsdigita.messaging.ThreadedMessage { String [1..1] status = forum_posts.status CHAR(20); reference key(forum_posts.post_id); aggressive load(moderator.id); } association { Party [0..1] moderator = join forum_posts.moderator to parties.party_id; Post [0..1] moderatedMessage = join parties.party_id to forum_posts.moderator; }
Add moderated boolean attribute to Forum.pdl
object type Forum extends Application { Post[0..n] posts = join forum_forums.forum_id to messages.object_id; Boolean [1..1] isModerated = forum_forums.is_moderated; component ForumSubscription[0..n] subscriptions = join forum_forums.forum_id to forum_subscriptions.forum_id; component Category[1..1] category = join forum_forums.category_id to cat_categories.category_id; reference key (forum_forums.forum_id); }
Remove the category related named queries with Categorization API in Forum.pdl. Alter named query categoryObject and uncategoryObject
Change index and thread pages to only show approved content.
Creation steps | Change the message create/edit form to set the status apropreately. | DONE |
Post listings | ||
new | Make MessageList into a MessageTable. Refactor ReplyPostForm, EditPostForm to use ACSObjectSelectionModel. | DONE (.5) |
new | Remove visiblity control from the subcomponents MessageTable, ReplyToPostForm, EditPostForm, MessageView and move it to the parent container ThreadComponent. | DONE (.1d) |
Add filters on the post table dynamically based on
priviledge. Implement these views:
| Estimate: 0.5 Actual: 0.5DONE | |
Add a filter to thread listing in ForumUserView, ThreadListing | Estimate: .5 Actual: about 2 hours DONE | |
Permission checking new | Don't think the user pages has proper permission checking, so all the pages needs to be checked. | Estimate 1 day? DONE, It actually appears to be okay (about 2 hours) |
Modertaion Administration pane |
Add another tab to ForumComponent.java
|
DONE (1d) but needs more cleaning +.5 |
email notifications
Notifications only go out for approved messages.
Notify moderators when a new post is made or if a post is edited | Notifications are sent by the various forms calling
Post.sendNotifications() during the process() method. EditPostForm,
NewPostForm, and ReplyToPostForm needs to call a similar method to
send moderation noticies. Make a new message class, that extends
com.arsdigita.forum.Subscription and implement custom methods for
getHeader(), getSignature().
Create a new class called ModerationNotice with a new object type that extends ForumSubscriptions. This is created when a forum i screated. |
Estimate: 1 |
Only send subscription emails for approved posts | Forum.getSubscriptions(); * add approved messages filter to this method ForumSubscription.sendNotification(); (Notification.sendNotification) | Estimate: 1 |