Add custom commands
Sitefinity CMS enables you to provide a custom set of commands that are displayed in the More menu of an MVC widget while in edit mode. You can customize the commands in this menu depending on the current widget and the its current state. For example, a shared content block can render different commands than an unshared one.
You can customize all aspects of adding custom command, for example, what type of window you open when you click an item, or a command, from the menu.
To provide a custom set of commands for a widget, the controller of the widget must implement the IHasEditCommands
interface. Thus, you can add to or replace the collection of commands with a custom set of commands depending on your requirements. By default, the command collection is empty. If the widget does not inherit the IHasEditCommands
interface, the default commands are displayed:
- Delete
- Duplicate
- Permissions
Add custom commands
PREREQUISITES: You created a new widget.
For details how to do this, see Create widgets.
In this example, you add custom command to a Message widget. To do this:
- Create the controller.
To do this, perform the following:
- Create a class and name it
MessageWidgetController.cs
.
- Open the
MessageWidgetController
and implement the IHasEditCommands
interface.
- Add the
Commands
property.
- Implement the method that creates a new
CustomComand
for the Message widget.
NOTE: You need to also add the default commands for Delete
, Duplicate
, and Permissions
. Otherwise, you will just see the custom commands.
- In the
Index
action, call the method of the MessageWidgetController.
Use the following code sample:
-
Create the new designer view that opens when you select a command.
Navigate to Mvc » Views » MessageWidget and add a new file. Next, name the file DesignerView.Custom.cshtml and under Properties, mark the file as an Embedded resource.
-
To make sure the designer view is not displayed as a tab in the normal widget designer, create a
JSON
file.
Navigate to Mvc » Views » MessageWidget and add a new file named DesignerView.Custom.json, Under Properties, mark he file as an Embedded resource.
-
Place the following content inside the
JSON
file:
- Build the solution.
As a result, you can see the new command in the Message widget’s More menu.
For a more comprehensive example, see the ContentBlockController
class in the GitHub repository.