Script - add-watcher (groovy)

Script - add-watcher (groovy)

Updated for Confluence 4.x/5.x 

This groovy script, implemented as a user macro, is used to add users as a watcher to a page.

This is really handy in combination with scaffolding. I use it in a form where a manager can assign resources to a project request (which is a page in Confluence) and those users are automatically subscribed to the page.

Macro Name

add-watcher

Description

Add a user as a watcher to the current page

Macro body processing

No macro body

## param0 is the user name (id) to add   #if ($param0 && $param0.length() > 0) #set ($wiki = "{groovy:userName=${param0}} import com.atlassian.spring.container.ContainerManager; import com.atlassian.confluence.mail.notification.NotificationManager; // Get the default Notification Manager def notificationManager = (NotificationManager) ContainerManager.getComponent('notificationManager'); // Get the current page object def page = context.getEntity(); // Get a handle on the user def user = userAccessor.getUser(userName); // Is the user already watching this page or space? boolean isWatching = notificationManager.isUserWatchingPageOrSpace(user, page.getSpace(), page) if (user && page && !isWatching) { notificationManager.addPageNotification(user, page); out.println('Subscribed User: <b>' + user.getFullName() + '</b><br />'); } else if (user == null) { out.println('User not found: <b>' + userName + '</b><br />'); } else if (isWatching) { out.println('User already watching: <b>' + userName + '</b><br />'); } {groovy}") $action.getHelper().renderConfluenceMacro($wiki) #end

I have a live-template based form with a select list of users to assign:

{list-data:AssignedManager|width=200px|type=select|multiple=true|height=10em} {user-options:users=stepper,user1,user2,user3,user4} {list-data}

I then have a report that iterates on the selections in the list to subscribe the selected users:

{report-block:injected=true} {local-reporter:data:AssignedManager} {report-body}{add-watcher:%reference:value > user:name%}{report-body} {report-block}