1 package net.sourceforge.blogentis.turbine;
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
27 import org.apache.turbine.modules.screens.VelocityScreen;
28 import org.apache.turbine.util.RunData;
29 import org.apache.velocity.context.Context;
30
31 public abstract class BaseBlogScreen extends VelocityScreen {
32 private String fixTemplateName(Blog blog, String templateName) {
33 templateName = templateName.replaceFirst("^/+", "").replaceAll("//+",
34 "/");
35 return templateName;
36 }
37
38 protected void setTemplate(RunData data, Blog blog, String template) {
39 data.getParameters().setString("template",
40 fixTemplateName(blog, template));
41 }
42
43 protected String getLayoutTemplate(RunData data) {
44 return "Layout.vm";
45 }
46
47 protected void doBuildTemplate(RunData data, Context context)
48 throws Exception {
49 if (!isAuthorized(data, context)) {
50 this.doRedirect(data, "Default.vm");
51 super.doBuildTemplate(data, context);
52 data
53 .setMessage("You have insufficient access rights for this operation.");
54 return;
55 }
56 super.doBuildTemplate(data, context);
57 BlogParameterParser pp = (BlogParameterParser)data.getParameters();
58 Blog blog = pp.getBlog();
59 context.put("blog", blog);
60 context.put("section", pp.getSection());
61 context.put("post", pp.getPost());
62 context.put("date", pp.getDate());
63 if (blog != null) {
64 String templateName = data.getTemplateInfo().getScreenTemplate();
65 setTemplate(data, blog, templateName);
66 data.getTemplateInfo().setLayoutTemplate(
67 "/" + fixTemplateName(blog, "/" + getLayoutTemplate(data)));
68 } else {
69 data.getTemplateInfo().setLayoutTemplate(
70 "/" + getLayoutTemplate(data));
71 }
72 }
73
74 protected boolean isAuthorized(RunData data, Context context) {
75 return true;
76 }
77 }