Script - Show Page Watchers (groovy & beanshell)
The script is implemented as a macro, to
show watchers of the current page (including space watchers)
. Two versions are provided here: groovy and beanshell. This was tested in Confluence 2.7.3, 2.10.3 and 3.0, so it should work for most versions.
Macro Name | watchers |
|---|---|
Macro has a body | Unchecked |
Output | Macro generates wiki markup |
Groovy
#set ($title = "Notification List")
#if ($paramtitle)
#set ($title = $paramtitle)
#end
##
{groovy}
import com.atlassian.confluence.util.GeneralUtil;
import com.atlassian.confluence.core.ContentEntityObject;
import com.atlassian.confluence.mail.notification.Notification;
import com.atlassian.confluence.mail.notification.NotificationManager;
import com.atlassian.spring.container.ContainerManager;
import com.atlassian.user.User;
// Get the default Notification Manager
NotificationManager nm = ( NotificationManager) ContainerManager.getComponent( "notificationManager" );
// Get the current page object
ContentEntityObject page = context.getEntity();
#if ($title.length() > 0)
println("<h4>$!{title}</h4>");
#end
// Notifications for this page
for (Notification notif in nm.getNotificationsByPage(page)) {
if (notif.getUserName()) {
println(GeneralUtil.getUserAccessor().getUser(notif.getUserName()).getFullName() + "<br />");
}
}
// Notifications for this space
for (Notification notif in nm.getNotificationsBySpace(page.getSpace())) {
if (notif.getUserName()) {
println(GeneralUtil.getUserAccessor().getUser(notif.getUserName()).getFullName() + " (<i class=smalltext>Watching this Space</i>)<br />");
}
}
{groovy}
Beanshell
#set ($title = "Notification List")
#if ($paramtitle)
#set ($title = $paramtitle)
#end
##
{beanshell}
import com.atlassian.confluence.util.GeneralUtil;
import com.atlassian.confluence.core.ContentEntityObject;
import com.atlassian.confluence.mail.notification.Notification;
import com.atlassian.confluence.mail.notification.NotificationManager;
import com.atlassian.spring.container.ContainerManager;
import com.atlassian.user.User;
// Get the default Notification Manager
NotificationManager nm = ( NotificationManager) ContainerManager.getComponent( "notificationManager" );
// Get the current page object
ContentEntityObject page = context.getEntity();
#if ($title.length() > 0)
print("<h4>$!{title}</h4>");
#end
// Notifications for this page
for (Notification notif : nm.getNotificationsByPage(page)) {
if (notif.getUserName() != null) {
print(GeneralUtil.getUserAccessor().getUser(notif.getUserName()).getFullName() + "<br />");
}
}
// Notifications for this space
for (Notification notif : nm.getNotificationsBySpace(page.getSpace())) {
if (notif.getUserName() != null) {
print(GeneralUtil.getUserAccessor().getUser(notif.getUserName()).getFullName() + " (<i class=smalltext>Watching this Space</i>)<br />");
}
}
{beanshell}
