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.dam.app.availability;
35
36 import info.magnolia.dam.api.AssetProvider;
37 import info.magnolia.dam.api.AssetProviderRegistry;
38 import info.magnolia.dam.jcr.AbstractJcrItem;
39 import info.magnolia.dam.jcr.DamConstants;
40 import info.magnolia.objectfactory.ComponentProvider;
41 import info.magnolia.ui.api.availability.AvailabilityDefinition;
42 import info.magnolia.ui.availability.rule.AbstractAvailabilityRule;
43 import info.magnolia.ui.availability.rule.JcrWritePermissionRule;
44 import info.magnolia.ui.availability.rule.JcrWritePermissionRuleDefinition;
45
46 import java.util.Collection;
47 import java.util.Collections;
48
49 import javax.inject.Inject;
50
51
52
53
54 public class JcrAssetWritePermissionRule extends AbstractAvailabilityRule<AbstractJcrItem, JcrAssetWritePermissionRule.Definition> {
55
56 private final JcrWritePermissionRule jcrWritePermissionRule;
57 private final AssetProvider assetProvider;
58
59 @Inject
60 JcrAssetWritePermissionRule(AvailabilityDefinition availabilityDefinition, Definition ruleDefinition, ComponentProvider componentProvider, AssetProviderRegistry assetProviderRegistry) {
61 super(availabilityDefinition, ruleDefinition);
62 this.jcrWritePermissionRule = componentProvider.newInstance(JcrWritePermissionRule.class, availabilityDefinition, ruleDefinition);
63 this.assetProvider = assetProviderRegistry.getProviderById(DamConstants.DEFAULT_JCR_PROVIDER_ID);;
64 }
65
66 @Override
67 public boolean isAvailable(Collection<?> items) {
68 items = items.isEmpty() ? Collections.singleton(assetProvider.getRootFolder()) : items;
69 return super.isAvailable(items);
70 }
71
72 @Override
73 protected boolean isAvailableFor(AbstractJcrItem item) {
74 return jcrWritePermissionRule.isAvailable(Collections.singleton(item.getNode()));
75 }
76
77
78
79
80 public static class Definition extends JcrWritePermissionRuleDefinition {
81 public Definition() {
82 this.setImplementationClass(JcrAssetWritePermissionRule.class);
83 }
84 }
85
86 }