ms.subservice | ms.custom | title | description | ms.assetid | ms.topic | monikerRange | ms.author | author | ms.date |
---|---|---|---|---|---|---|---|---|---|
azure-devops-ecosystem |
devx-track-js |
Add an Action | Extensions for Azure DevOps |
Add an action for your extension that extends Azure DevOps. |
7b117bbf-f188-41ce-8ff6-3723ebccea81 |
conceptual |
<= azure-devops |
chcomley |
chcomley |
08/22/2016 |
[!INCLUDE version-lt-eq-azure-devops]
In this example, we add an action to the query context menu in the work item queries hub.
[!INCLUDE extension-docs-new-sdk]
Below is the code snippet that adds your action to the contributions section of your extension manifest.
...
"contributions": [
{
"id": "myAction",
"type": "ms.vss-web.action",
"description": "Run in Hello hub action",
"targets": [
"ms.vss-work-web.work-item-query-menu"
],
"properties": {
"text": "Run in Hello hub",
"title": "Run in Hello hub",
"icon": "images/icon.png",
"groupId": "actions",
"uri": "action.html"
}
}
]
...
Property | Description |
---|---|
text | Text that appears on the menu item. |
title | Tooltip text that appears on the menu item. |
icon | URL to an icon that appears on the menu item. Relative URLs are resolved using baseUri. |
groupId | Determines where this menu item appears in relation to the others. |
uri | URI to a page that registers the menu action handler (see below). |
registeredObjectId | (Optional) Name of the registered menu action handler. Defaults to the contributor ID. |
Learn about all of the places where you can add actions in Extensibility points.
Your menu action is represented by a JavaScript script embedded in an HTML file. Save the following contents in a file and location that matches the reference to it in your extension's manifest file.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Action Sample</title>
</head>
<body>
<div>
The end user doesn't see the content on this page.
It is only in the background to handle the contributed menu item being selected.
</div>
</body>
</html>
The script below registers the handler object to handle the action, place it in the head
section of the previous HTML page.
We aliased
lib
to benode_modules/azure-devops-extension-sdk/lib
in oursdk-extension.json
manifest file.
<script src="lib/SDK.min.js"></script>
<script>
SDK.init();
// Use an IIFE to create an object that satisfies the IContributedMenuSource contract
var menuContributionHandler = (function () {
"use strict";
return {
// This is a callback that gets invoked when a user selects the newly contributed menu item
// The actionContext parameter contains context data surrounding the circumstances of this
// action getting invoked.
execute: function (actionContext) {
alert("Hello, world");
}
};
}());
// Associate the menuContributionHandler object with the "myAction" menu contribution from the manifest.
SDK.register(SDK.getContributionId(), menuContributionHandler);
</script>
[!INCLUDE tip-for-more-information]
Now that you've written your extension, the next steps are to Package, Publish, and Install your extension. You can also check out the documentation for Testing and Debugging your extension.