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....................................................");
}
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;
}
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;
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.