Page History
...
Creating normal users and the correct roles
We create a new role for teh the mobile authors who submit the restosrestaurants, add a new user and give him the correct roles and basic groups for only accessing the addrsto appaddresto app.
First create the role:
Then create add the access rights:
Create a group and add the following roles to it:
Finally create a user and assign the preceding group to it.
Giving correct access rights to the app
We give the correct rights to the app. We want our user to be able to open the app but only the app, so we add the role we created to the app's security.
Adding a messageView
We need to register a messageView so that the pulse can find it and open it. So we add a messageview to the addresto app as follows.
Adding a "Request for activation action"
...
We want to show a notification so we need the Shell.
Adding a messageView
...
The API is quite well designed actually, creating those notifications requires us to write a minimum of code.
First we create the definition of the action, this definition will be used as parameter object for the implemented action, when fired it looks for the implemented action class instantiates it and executes the action. (RequestForActivation.class) .
Info |
---|
Action definitions are configured in the jcr on the sub app, read by node2bean, node2bean looks at the class property in jcr and creates the instance using the component provider (guice), if no class property is set it uses the type-mapping. |
Code Block | ||
---|---|---|
| ||
/**
* Created with IntelliJ IDEA.
* User: kdewitte
* Date: 7/1/13
* Time: 2:39 PM
*
* This class contains the definition of the action we would like to create.
*
*/
public class RequestForActivationActionDefinition extends ConfiguredActionDefinition {
public RequestForActivationActionDefinition() {
setImplementationClass(RequestForActivationAction.class);
}
} |
We define it in the module descriptor.
Code Block | ||
---|---|---|
| ||
<type-mapping>
<type>info.magnolia.ui.api.action.ConfiguredActionDefinition</type>
<implementation>info.magnolia.m5.apps.actions.RequestForActivationActionDefinition</implementation>
</type-mapping> |
Now we can implement the action:
Code Block | ||
---|---|---|
| ||
public class RequestForActivationAction extends AbstractAction<RequestForActivationActionDefinition> {
private final Shell shell;
private final SubAppContext subAppContext;
@Inject
public RequestForActivationAction(RequestForActivationActionDefinition definition,SubAppContext subAppContext, Shell shell) {
super(definition);
this.shell = shell;
this.subAppContext = subAppContext;
}
@Override
public void execute() throws ActionExecutionException {
MessageStyleTypeEnum messageStyleType;
messageStyleType = MessageStyleTypeEnum.INFO;
Message message = new Message();
message.setMessage("User "+MgnlContext.getUser().getName()+ " would like to activate the following ");
message.setSubject("request for activation");
message.setType(MessageType.WORKITEM);
//give it the messageView we want to display on opening the message
message.put(Message.MESSAGE_VIEW, "addresto:restoView");
//we need the location to travel back to the contentview and approve or reject
message.put("location",subAppContext.getLocation().toString());
subAppContext.getAppContext().sendUserMessage("superuser", message);
shell.openNotification(messageStyleType, true, "Your request for activation has been sent !");
}
} |
Adding a review action to the messageView.
...