The forums module is a message board which allows your user community to participate in discussions, post questions and answers.
Forums are always displayed within a forum group, and all forums must belong to a group. Most settings for forums can be set at the group level, but you can choose whether to use group settings or assign settings for each individual forum.
Name | The group name is displayed to users in the forum menu and in the administrative user interface. |
Enabled | Groups can be disabled. Disabled groups and their forums, posts and replies are visible, but users cannot create new posts. |
Visible | An invisible group is not displayed in the forums menu. |
Allow Attachments | You can control whether users can attach files to posts. If you allow attachments, you must specify an attachments folder. |
Attachments Folder | The attachments folder specifies where user attachments are stored. |
Moderated | Controls whether new posts are visible immediately, or whether a moderator user must approve them first. |
Allow Search Indexing | Controls whether forum posts and replies are added to the search index. This function is not yet implemented. |
Status List | If specified, forum posts may be assigned a status. The status list values may contain special values to help automatic assignment of status values, see below. |
Subscription mail template | Specifies a mail template to use when sending a notification to subscribers when a new post is created. |
Moderator mail template | Specifies a mail template to use when sending a notification to moderators when a new post is created. |
Post Approved mail template | Specifies a mail template to use when sending a notification to a post author when their post is approved. |
Post Rejected mail template | Specifies a mail template to use when sending a notification to a post author when their post is rejected. |
If a mail template is not selected, no email notification will be sent for the relevant operation.
Forum groups have a set of permissions assigned to roles. When users are in any role with the specified permission, they will have that permission. Forums can be configured to inherit group settings (including permissions) or can specify their own permissions.
View | View the group, its forums and forum posts. |
Post | Create new posts in the group's forums . |
Reply | Reply to existing posts in the group's forums. |
Delete | Delete posts, if the current user created it, or is a system or site administrator. |
Lock | Lock a post. Users can't reply to locked posts. |
Attach | Attach files to a post or reply. |
Subscribe | Subscribe to a post or forum in order to receive an email notification when a new post or reply is added. |
Pin | Flag the post so that its sort order is at the start of a forum's posts. |
Moderate | Moderator users receive moderator email notifications and can approve/reject new posts and replies. |
Each forum has an url which starts with the url of the page containing the module, plus the "friendly-encoded" name of the forum. The "friendly encoded" name is in lower case, and has non-alphanumeric characters replaced with a dash.
If the forum has a status list defined, users with edit rights to a post can select a status for the post. When you create a list in
Manage
\ Lists
, you can use list item special values (you can use any text values you like, and these are what are shown on screen):
Special List Item Value | |
---|---|
default | If a list item with the value default is present in the list, new posts have their status set to this value automatically. |
rejected | If a list item with the value rejected is present in the list, rejected posts have their status set to this value automatically.. |
Use the Forums
tab to add forums to a forum group. The Forums
tab is not available until after you save a new group for the first time.
Name | Forum name, shown on screen in the forums menu and in the administration user interface. |
Description | Forum description, shown on screen in the forums menu. |
Use Group Settings | Specifies whether to inherit settings from the forum's forum group, or whether to specify settings which are specific for the forum. |
The other settings and permissions for forums are the same as for forum groups (see above).
The forums module can send email notifications for:
Email templates are managed by system administrators or site administrators in the Manage
/Mail Templates
control panel. Refer
here for more information on mail templates. You must manually create mail templates for the forums to use. After
you create the mail template(s), assign them to the forum in the forum group or forum configuration.
You must set up a scheduled task to send forum notifications. Use the Settings
/Scheduler
control panel to create a new scheduled task. Refer
here for more information on scheduled tasks.
Name | You can name your scheduled task anything you want. A good example would be 'Send Forum Emails'. |
Type Name | The type name is selected from a drop-down list. Select Nucleus.Modules.Forums.ScheduledTasks.SendForumsEmailsScheduledTask,Nucleus.Modules.Forums . |
Enabled | Set the task to enabled. |
Inverval | Select the interval and interval type. This is how often a notification will be sent to users. The forums subscription email is designed to be a summary of all activity in subscribed forums and posts (per forum module instance), sent as a single email, so you would generally want to set this to about 1 day. |
Instance Type | Select 'Per Instance'. |
Keep History | You can set this to whatever setting you require. |
Email templates for forum messages can use the following data objects:
Site | Information on the site which has forums with new activity. |
---|---|
Name | Site name. |
You can use the site as a parameter for the AbsoluteUrl() extension to create a link to the site. You must provide a UseSsl
value
of true (use https) or false (use http). You should only use false
if your site does not support SSL.
<a href="@Model.Site.AbsoluteUrl(true)">@post.Subject</a>
Page | Information on the forum page. |
---|---|
Name | Page name. |
You can use the page as a parameter for the AbsoluteUrl() extension to create a link to the page.
<a href="@Model.Site.AbsoluteUrl(@Model.Page, true)">Click here to visit the forums page</a>
Forums | A list of forums with new activity. |
---|---|
Name | Forum name. |
Description | Forum description. |
Posts | A list of posts with new activity. |
Replies | Specifies whether to inherit settings from the forum's forum group, or whether to specify settings which are specific for the forum. |
You can use the forum as a parameter for the AbsoluteUrl() extension to create a link to the forum.
<a href="@Model.Site.AbsoluteUrl(@Model.Page, @forum.Name.FriendlyEncode(), true)">@forum.Name</a>
Post | An item in each forum's Posts list, representing a post with activity. |
---|---|
Subject | The post subject. |
Body | The post body. |
PostedBy | A user object representing the user who posted the forum post. |
You can use the post as a parameter for the AbsoluteUrl() extension to create a link to the forum.
<a href="@Model.Site.AbsoluteUrl(@Model.Page, $"{@forum.Name.FriendlyEncode()}/{@post.Id}", true)">@post.Subject</a>
Reply | An item in each forum's Replies list, representing a new post reply. |
---|---|
Body | The reply body. |
PostedBy | A user object representing the user who posted the forum reply. |
<a href="@Model.Site.AbsoluteUrl(@Model.Page, $"{@forum.Name.FriendlyEncode()}/{@reply.Post.Id}", true)">@reply.Post.Subject</a>
@Model.User?.UserName,
<p>New messages have been posted to forums or forum posts that you are tracking at <a href="@Model.Site.AbsoluteUrl(true)">@Model.Site.Name</a>: </p>
<br />
@foreach (var forum in Model.Forums)
{
<a href="@Model.Site.AbsoluteUrl(@Model.Page, @forum.Name.FriendlyEncode(), true)">@forum.Name</a>
<table>
<tr>
<th>Subject</th>
<th>Author</th>
<th>Date/Time</th>
</tr>
@if (forum.Posts?.Any() == true)
{
<tr>
<th colspan="3"><h2>New Posts</h2></th>
</tr>
@foreach (var post in forum.Posts)
{
<tr>
<td><a href="@Model.Site.AbsoluteUrl(@Model.Page, $"{@forum.Name.FriendlyEncode()}/{@post.Id}", true)">@post.Subject</a></td>
<td>@post.PostedBy?.UserName</td>
<td>@post?.DateAdded</td>
</tr>
}
}
@if (forum.Replies?.Any() == true)
{
<tr>
<th colspan="3"><h2>New Replies</h2></th>
</tr>
@foreach (var reply in forum.Replies)
{
<tr>
<td><a href="@Model.Site.AbsoluteUrl(@Model.Page, $"{@forum.Name.FriendlyEncode()}/{@reply.Post.Id}", true)">@reply.Post.Subject</a></td>
<td>@reply.PostedBy?.UserName</td>
<td>@reply?.DateAdded</td>
</tr>
<tr colspan="3">
<td>@reply.Body</td>
</tr>
}
}
</table>
}
<br />
<div>
You were sent this email because you are subscribed to a forum or post at <a href="@Model.Site.AbsoluteUrl(true)">@Model.Site.Name</a>, or are the
original poster of this forum message. <a href="@Model.Site.AbsoluteUrl(@Model.Page.ManageSubscriptionsRelativeUrl, true)">Click here</a>
to manage your subscriptions, or browse to @Model.Site.AbsoluteUrl(@Model.Page.ManageSubscriptionsRelativeUrl, true).
</div>
@Model.User.UserName,
<p>New messages have been posted that require moderation in the forums at <a href="@Model.Site.AbsoluteUrl(true)">@Model.Site.Name</a>: </p>
@foreach (var forum in Model.Forums)
{
<a href="@Model.Site.AbsoluteUrl(@Model.Page, @forum.Name.FriendlyEncode(), true)">@forum.Name</a>
<table>
<tr>
<th>Subject</th>
<th>Author</th>
<th>Date</th>
</tr>
<tr>
<td colspan="3"><h2>Posts</h2></td>
</tr>
@foreach (var post in forum.Posts)
{
<tr>
<td><a href="@Model.Site.AbsoluteUrl( @Model.Page, $"{@forum.Name.FriendlyEncode()}/{@post.Id}", true)">@post.Subject</a></td>
<td>@post.PostedBy.UserName</td>
<td>@post.DateAdded</td>
</tr>
}
@if (((IEnumerable<object>)forum.Replies).Any())
{
<tr>
<td colspan="3"><h2>Replies</h2></td>
</tr>
@foreach (var reply in forum.Replies)
{
<tr>
<td><a href="@Model.Site.AbsoluteUrl(@Model.Page, $"{@forum.Name.FriendlyEncode()}/{@reply.Post.Id}", true)">@reply.Post.Subject</a></td>
<td>@reply.PostedBy.UserName</td>
<td>@reply.DateAdded</td>
</tr>
}
}
</table>
}
@Model.User.UserName,
<p>One or more of your forum posts have been approved at <a href="@Model.Site.AbsoluteUrl(true)">@Model.Site.Name</a>: </p>
@foreach (var forum in Model.Forums)
{
<a href="@Model.Site.AbsoluteUrl(@Model.Page, @forum.Name.FriendlyEncode(), true)">@forum.Name</a>
<table>
<tr>
<th>Subject</th>
<th>Author</th>
<th>Date</th>
</tr>
<tr>
<td colspan="3"><h2>Posts</h2></td>
</tr>
@foreach (var post in forum.Posts)
{
<tr>
<td><a href="@Model.Site.AbsoluteUrl( @Model.Page, $"{@forum.Name.FriendlyEncode()}/{@post.Id}", true)">@post.Subject</a></td>
<td>@post.PostedBy.UserName</td>
<td>@post.DateAdded</td>
</tr>
}
@if (((IEnumerable<object>)forum.Replies).Any())
{
<tr>
<td colspan="3"><h2>Replies</h2></td>
</tr>
@foreach (var reply in forum.Replies)
{
<tr>
<td><a href="@Model.Site.AbsoluteUrl(@Model.Page, $"{@forum.Name.FriendlyEncode()}/{@reply.Post.Id}", true)">@reply.Post.Subject</a></td>
<td>@reply.PostedBy.UserName</td>
<td>@reply.DateAdded</td>
</tr>
}
}
</table>
}
@Model.User.UserName,
<p>One or more of your forum posts have been rejected <a href="@Model.Site.AbsoluteUrl(true)">@Model.Site.Name</a>: </p>
@foreach (var forum in Model.Forums)
{
<a href="@Model.Site.AbsoluteUrl(@Model.Page, @forum.Name.FriendlyEncode(), true)">@forum.Name</a>
<table>
<tr>
<th>Subject</th>
<th>Author</th>
<th>Date</th>
</tr>
<tr>
<td colspan="3"><h2>Posts</h2></td>
</tr>
@foreach (var post in forum.Posts)
{
<tr>
<td><a href="@Model.Site.AbsoluteUrl( @Model.Page, $"{@forum.Name.FriendlyEncode()}/{@post.Id}", true)">@post.Subject</a></td>
<td>@post.PostedBy.UserName</td>
<td>@post.DateAdded</td>
</tr>
}
@if (((IEnumerable<object>)forum.Replies).Any())
{
<tr>
<td colspan="3"><h2>Replies</h2></td>
</tr>
@foreach (var reply in forum.Replies)
{
<tr>
<td><a href="@Model.Site.AbsoluteUrl(@Model.Page, $"{@forum.Name.FriendlyEncode()}/{@reply.Post.Id}", true)">@reply.Post.Subject</a></td>
<td>@reply.PostedBy.UserName</td>
<td>@reply.DateAdded</td>
</tr>
}
}
</table>
}