1 package net.sourceforge.blogentis.modules.screens;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import net.sourceforge.blogentis.om.Blog;
26 import net.sourceforge.blogentis.storage.AbstractFileResource;
27 import net.sourceforge.blogentis.storage.FileResourceFilter;
28 import net.sourceforge.blogentis.storage.FileRetrieverService;
29 import net.sourceforge.blogentis.storage.TemplateFolder;
30 import net.sourceforge.blogentis.turbine.BlogParameterParser;
31 import net.sourceforge.blogentis.turbine.SecureBlogScreen;
32 import net.sourceforge.blogentis.utils.BlogConstants;
33 import net.sourceforge.blogentis.utils.StringUtils;
34
35 import org.apache.turbine.util.RunData;
36 import org.apache.turbine.util.template.SelectorBox;
37 import org.apache.velocity.context.Context;
38
39 public class BlogFiles
40 extends SecureBlogScreen {
41 public static class FileFilter
42 implements FileResourceFilter {
43 public boolean ignored(String path) {
44 return path.endsWith("/CVS") || path.startsWith("/media");
45 }
46
47 public boolean descendInto(String folder) {
48 return true;
49 }
50 }
51
52 public static final String[] folder_descriptions = {"Screen",
53 "Layout template", "Navigation template", "Style Sheet (css)",
54 "Fragment definition", "XML Transformation"};
55
56 public static final String[] folder_names = {"/screens", "/layouts",
57 "/navigations", "/css", "/fragments", "/xsl"};
58
59 private Object getSelectorBox() {
60 return new SelectorBox("dir", folder_descriptions, folder_names);
61 }
62
63 protected void doBuildTemplate(RunData data, Context context)
64 throws Exception {
65 super.doBuildTemplate(data, context);
66 BlogParameterParser pp = (BlogParameterParser)data.getParameters();
67 Blog blog = pp.getBlog();
68 String edittf = pp.getString("fileId", "");
69 context.put("editFileId", edittf);
70 if (edittf != "") {
71 AbstractFileResource file = FileRetrieverService.getInstance()
72 .getFile(blog, edittf);
73 String contents = file.getFileAsString();
74 context.put("editFileContents", StringUtils.escapeHTML(contents));
75 } else {
76 TemplateFolder tf = FileRetrieverService.getInstance()
77 .getTemplateList(data, blog, "", new FileFilter());
78 context.put("files", tf);
79 context.put("selectorBox", getSelectorBox());
80 context.put("state", pp.getIntObject("s", new Integer(0)));
81 }
82 }
83
84 protected String[] getPermissions() {
85 return new String[] {BlogConstants.PERM_ADMIN_BLOG};
86 }
87 }