The DotNetNuke Survey module displays an Add Question option on the module's menu (and in the footer of the module) for any user that has Edit access to the module (usually the Administrator).
If you are familiar with the NavigateURL function (see: NavigateURL: How to make A DotNetNuke® link) you know how to provide navigation from one user control to another in your modules. To add items to the modules menu, you use the IActionable interface.
To implement IActionable, this code is used:
VB:
Partial
Class SurveyC#:
public
partial class Survey : Entities.Modules.IActionable
When we Implement the IActionable interface we communicate to the DotNetNuke framework that we will create a property that will return a ModuleActionCollection object. We can see in the class diagram below that ModuleActionCollection is a collection of ModuleAction objects.
To create a ModuleActionCollection collection you add a ModuleAction object to it using the Add method of ModuleActionCollection. The Add method of ModuleActionCollection contains a number of overloads. The overload we used is:
Add(
ByVal ID As Integer,
ByVal Title As String,
ByVal CmdName As String,
Optional ByVal CmdArg As
String = "",
Optional ByVal Icon As
String = "",
Optional ByVal Url As
String = "",
Optional ByVal UseActionEvent As
Boolean =
False,
Optional ByVal Secure As
DotNetNuke.Security.SecurityAccessLevel
= Anonymous,
Optional ByVal Visible As
Boolean = True,
Optional ByVal NewWindow As
Boolean = False
) As DotNetNuke.Entities.Modules.Actions.ModuleAction
This overload creates a ModuleAction object and adds it to the ModuleActionCollection collection.
The following table explains the meaning of each field and shows sample values and data:
Property | Value | Sample Data |
ID As
Integer [Each module action must have a unique ID. Use the GetNextActionID method to generate a unique id] |
GetNextActionID | 3 |
Title As
String [Sets the text displayed on the menu] |
Localization.GetString(Entities.Modules.Actions.ModuleActionType.AddContent, LocalResourceFile) | "Add Question" |
CmdName As
String [The command name passed to the client when this action is clicked. Used for JavaScript] |
Entities.Modules.Actions.ModuleActionType.AddContent | "AddContent.Action" |
CmdArg As
String [The command argument passed to the client when this action is clicked. Used for additional parameters passed to JavaScript] |
"" | "" |
Icon As
String [The URL of the Icon to place next to this action] |
"" | "" |
Url As
String [The destination URL to redirect the client browser when this action is clicked.] |
EditUrl() | "http://localhost/DotNetNuke/Home/tabid/36/ctl/Edit/mid/423/Default.aspx" |
UseActionEvent As
Boolean
[Determines whether client will receive an event notification] |
False | |
Secure As
DotNetNuke.Security.SecurityAccessLevel [The security access level required for access to this action] |
SecurityAccessLevel.Edit | 1 |
Visible As
Boolean [Whether this action will be displayed] |
True | True |
NewWindow As
Boolean [Whether this action will be displayed in a new window] |
False | False |
There is a lot more to the IActionable interface. For full description please see:
DotNetNuke® is a registered trademark of Perpetual Motion Interactive Systems Inc.