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.fckeditor.pages;
35
36 import info.magnolia.cms.beans.config.URI2RepositoryManager;
37 import info.magnolia.cms.core.Content;
38 import info.magnolia.cms.util.ContentUtil;
39 import info.magnolia.cms.util.NodeDataUtil;
40 import info.magnolia.context.MgnlContext;
41 import info.magnolia.module.ModuleRegistry;
42 import info.magnolia.module.admininterface.InvalidTreeHandlerException;
43 import info.magnolia.module.admininterface.TemplatedMVCHandler;
44 import info.magnolia.module.admininterface.TreeHandlerManager;
45 import info.magnolia.module.admininterface.AdminTreeMVCHandler;
46 import info.magnolia.module.fckeditor.FCKEditorModule;
47
48 import java.util.Collection;
49
50 import javax.servlet.http.HttpServletRequest;
51 import javax.servlet.http.HttpServletResponse;
52
53 import org.apache.commons.lang.StringUtils;
54
55
56
57
58
59
60
61
62 public class RepositoryBrowserPage extends TemplatedMVCHandler {
63
64 private final FCKEditorModule moduleConfig;
65 private String selectedPath;
66 private String selectedRepository;
67 private String absoluteURI;
68 private String imgAltText;
69
70 public RepositoryBrowserPage(String name, HttpServletRequest request, HttpServletResponse response) {
71 super(name, request, response);
72 moduleConfig = (FCKEditorModule) ModuleRegistry.Factory.getInstance().getModuleInstance(FCKEditorModule.MODULE_FCKEDITOR);
73 }
74
75 public String resolveAbsoluteURI() {
76 final String treeName = getSelectedRepository();
77 if (StringUtils.isNotEmpty(treeName) && StringUtils.isNotEmpty(getSelectedPath())) {
78 final URI2RepositoryManager manager = URI2RepositoryManager.getInstance();
79
80 String repoName;
81 try {
82 final AdminTreeMVCHandler treeHandler = TreeHandlerManager.getInstance().getTreeHandler(treeName, request, response);
83 repoName = treeHandler.getRepository();
84 } catch (InvalidTreeHandlerException e) {
85
86
87 repoName = treeName;
88 }
89
90
91 final String absoluteURI = manager.getURI(repoName, getSelectedPath());
92 setAbsoluteURI(MgnlContext.getContextPath() + absoluteURI);
93
94 final Content img = ContentUtil.getContent(getSelectedRepository(), getSelectedPath());
95 if (img != null) {
96 final String imgAltText = NodeDataUtil.getString(img, "subject");
97 setImgAltText(imgAltText);
98 }
99 } else {
100 setAbsoluteURI(StringUtils.EMPTY);
101 }
102
103 return "submit";
104 }
105
106 public String select() {
107 final URI2RepositoryManager manager = URI2RepositoryManager.getInstance();
108
109 if (StringUtils.isNotEmpty(absoluteURI)) {
110 String absoluteURIWithoutContextPath = StringUtils.removeStart(absoluteURI, MgnlContext.getContextPath());
111 final String repository = manager.getRepository(absoluteURIWithoutContextPath);
112 final String path = manager.getHandle(absoluteURIWithoutContextPath);
113
114 setSelectedRepository(repository);
115 setSelectedPath(path);
116 }
117
118 return "select";
119 }
120
121
122 public Collection getRepositories() {
123 return moduleConfig.getBrowsableRepositories();
124 }
125
126 public String getSelectedPath() {
127 return selectedPath;
128 }
129
130 public void setSelectedPath(String selectedPath) {
131 this.selectedPath = selectedPath;
132 }
133
134
135 public String getSelectedRepository() {
136 return selectedRepository;
137 }
138
139
140 public void setSelectedRepository(String selectedRepository) {
141 this.selectedRepository = selectedRepository;
142 }
143
144 public String getAbsoluteURI() {
145 return absoluteURI;
146 }
147
148 public void setAbsoluteURI(String absoluteURI) {
149 this.absoluteURI = absoluteURI;
150 }
151
152 public String getImgAltText() {
153 return this.imgAltText;
154 }
155
156 public void setImgAltText(String text) {
157 this.imgAltText = text;
158 }
159 }