Expand my Community achievements bar.

SOLVED

User generated content activation

Avatar

Level 2

While using a Blog component in SCF if i configure to use it in the author mode and wish to activate the page and send the content to publish what would be the best way to do that?

Activating the page does not activate the /content/usergenerated/asi/jcr/content path content (containing the post infos)

When I use activate  tree it fails as well. What is the way out?

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

one solution I could recommend is to write an event listener on page activation. If you have a generic pattern for the node where the content is saved; on activation of the page , just activate the node programatically.

This would be something like below

@Component

@Service

@Property(name = "event.topics", value = ReplicationAction.EVENT_TOPIC)

public class ReplicatonEventHandler implements Runnable, EventHandler {

private Logger LOG = LoggerFactory.getLogger(this.getClass());

private BundleContext bundleContext;

@Override

public void handleEvent(Event event) {

   

    ReplicationAction action = ReplicationAction.fromEvent(event);

if (action != null) {

  LOG.info("Replication action {} occured on {} ", action.getType().getName(), action.getPath());

     if ("Activate".equalsIgnoreCase(action.getType().getName())) {

//Your logic here

}

}

}

public void run() {

LOG.info("Running...");

}

protected void activate(ComponentContext ctx) {

this.bundleContext = ctx.getBundleContext();

}

protected void deactivate(ComponentContext ctx) {

this.bundleContext = null;

}

}

Let me know if this doesn't help you .

Thanks

Veena

View solution in original post

3 Replies

Avatar

Level 10

Please refer to the official documentation here: Blog Feature

Avatar

Level 2

I did go through the information. However my requirement is to write the content in the author environment and publish the page once done. Usually when u activate the page it works but here the content lying in a different location does not get published. That is the problem for which Im searching for a solution.

Avatar

Correct answer by
Community Advisor

one solution I could recommend is to write an event listener on page activation. If you have a generic pattern for the node where the content is saved; on activation of the page , just activate the node programatically.

This would be something like below

@Component

@Service

@Property(name = "event.topics", value = ReplicationAction.EVENT_TOPIC)

public class ReplicatonEventHandler implements Runnable, EventHandler {

private Logger LOG = LoggerFactory.getLogger(this.getClass());

private BundleContext bundleContext;

@Override

public void handleEvent(Event event) {

   

    ReplicationAction action = ReplicationAction.fromEvent(event);

if (action != null) {

  LOG.info("Replication action {} occured on {} ", action.getType().getName(), action.getPath());

     if ("Activate".equalsIgnoreCase(action.getType().getName())) {

//Your logic here

}

}

}

public void run() {

LOG.info("Running...");

}

protected void activate(ComponentContext ctx) {

this.bundleContext = ctx.getBundleContext();

}

protected void deactivate(ComponentContext ctx) {

this.bundleContext = null;

}

}

Let me know if this doesn't help you .

Thanks

Veena