Web Item Provider with recent projects?

Bartosz Czyżewski September 27, 2016

Hi,

similarly as in the provided example:
https://scriptrunner.adaptavist.com/4.1.3.16/jira/fragments/WebItemProvider.html#_example_my_top_issues

I wanted to build a web item with my recent projects from specific category.

Is there a simple method to make that work?

Regards,

2 answers

1 accepted

1 vote
Answer accepted
JamieA
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 28, 2016

This is not particularly easy so I'll give a full example.

First, add a Raw XML Module to create the web section in the Projects dropdown:

<web-section key='recent-proj-cat-projects' name='ScriptRunner generated web item - active-issues' location='browse_link' weight='70'>
  <label>Recent CAT1 Projects</label>
  <param name='lazy' value='true' />
</web-section>

Modify the label as appropriate.

Now create a new web item provider:

image2016-9-28 12:22:3.png

The code for the provider can be found here: https://gist.github.com/jechlin/cf096c1da6ad5b5e44a8a803bd6fcaa5

And results in:

image2016-9-28 12:24:53.png

1 vote
JamieA
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 28, 2016

This should be very similar to the provided examples, except you want to get the project history and filter on the category. Something like:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.UserProjectHistoryManager

def historyManager = ComponentAccessor.getComponent(UserProjectHistoryManager)
def user = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def projectManager = ComponentAccessor.projectManager

if (user) {
    def historyItems = historyManager.getProjectHistoryWithoutPermissionChecks(user)
    historyItems.findAll {
        projectManager.getProjectObj(it.entityId as Long).projectCategory?.name = "CAT1"
    }
    .each {
        // create web item
    }
}

I didn't bother with error checking to keep the example simple...

Also retrieving the project to get the category may not be fast enough, you'll need to check.

Suggest an answer

Log in or Sign up to answer