1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.forum.app.availability;
35
36 import info.magnolia.cms.core.Content;
37 import info.magnolia.cms.util.ContentUtil;
38 import info.magnolia.jcr.util.NodeUtil;
39 import info.magnolia.module.forum.DefaultForumManager;
40 import info.magnolia.module.forum.ForumManager;
41 import info.magnolia.ui.api.availability.AbstractAvailabilityRule;
42
43 import javax.jcr.Item;
44 import javax.jcr.Node;
45 import javax.jcr.RepositoryException;
46
47
48
49
50 public class CanAddMessageRule extends AbstractAvailabilityRule {
51
52 @Override
53 protected boolean isAvailableForItem(Item item) {
54 if (item != null && item.isNode()) {
55 Node node = (Node) item;
56 try {
57 if (NodeUtil.isNodeType(node, DefaultForumManager.THREAD_NODETYPE)) {
58 return true;
59 } else if (NodeUtil.isNodeType(node, DefaultForumManager.MESSAGE_NODETYPE)) {
60 ForumManager forumManager = ForumManager.Factory.getInstance();
61 Content threadNode = forumManager.getThreadFromMessage(ContentUtil.asContent(node));
62 if (threadNode != null) {
63 Content forumNode = forumManager.getForumFromThread(threadNode);
64 if (forumNode != null) {
65 return forumNode.getNodeData(DefaultForumManager.ALLOWS_NESTING_MESSAGES).getBoolean();
66 }
67 }
68 }
69 } catch (RepositoryException repex) {
70 return false;
71 }
72 }
73 return false;
74 }
75 }