Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

How to automatically create child pages when a new project is created?

cliff kirkman July 3, 2017

I have been trying to write some java code which will listen for when a page is created and automatically generate a set of child pages.

I believe I need some data from the event which I have, but I also need to have a pagemanager and a labelManager.

I'm not sure where to get the data from to construct these two, any help would be much appreicated.

Snippet of the code so far:

@EventListener
public void onBlueprintCreateEvent(BlueprintPageCreateEvent event)
{

 PageManager pageManager;
 LabelManager labelManager;

System.out.println("made it here ...................................");
ModuleCompleteKey moduleCompleteKey = event.getBlueprintKey();

if (!MY_BLUEPRINT_KEY.equals(moduleCompleteKey)){
System.out.println("my_blueprint_key= " + MY_BLUEPRINT_KEY + "moduleCompleteKey= " + moduleCompleteKey.toString());
return;
}

Page topPage = event.getPage();
Space ourSpace = topPage.getSpace();
Map<String,Object> blueprintContext = event.getContext();


System.out.println("2ND PRINT ...................................");
if(topPage == null)
{
System.out.println("topPage EQUALS NULL");
}
if(ourSpace == null)
{
System.out.println("OURSPACE EQUALS NULL");
}

Page subPage = null;
subPage = new Page();


if(pageManager == null)
{
System.out.println("pageManager EQUALS NULL..................................");
}

subPage.setTitle("title");
subPage.setSpace(ourSpace);
subPage.setParentPage(topPage);
subPage.setBodyAsString("NewPage");
subPage.setPosition(0);
//pageManager.saveContentEntity(subPage, null);
//labelManager.addLabel((Labelable) subPage, new Label("NewPage"));


System.out.print("Done....................................................");
}

 

1 answer

0 votes
Christo Mastoroudes [Adaptavist]
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.
July 7, 2017

Hi Cliff,

 

I think you will need to inject PageManager and LabelManager by using Spring constructor injection or setter injection.

 

private PageManager pageManager;

 

//constructor 

public ClassName(PageManager pageManager) {

    this.pageManager = pageManager;

}

 

cliff kirkman July 7, 2017

Hi Christo,

The problem was @component import needed to be included in the constructor, ill post a snippet below for peoples future reference:

@Scanned
public class MyPageCreatorModule extends AbstractBlueprintContextProvider {

public PageManager pageManager;


public MyPageCreatorModule(@ComponentImport PageManager pageManager) {
this.pageManager = pageManager;
}

 

renzo September 4, 2020

Hey @cliff kirkman , does your code work?

Does it create random child-pages or can you do a template for the child-pages aswell?

If yes I would be super gratefull if you could explain to me how to implement it <3

Kind regards.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events