[Yanel-commits] rev 22826 -
public/yanel/trunk/src/core/java/org/wyona/yanel/servlet
michi at wyona.com
michi at wyona.com
Wed Feb 21 15:12:39 CET 2007
Author: michi
Date: 2007-02-21 15:12:37 +0100 (Wed, 21 Feb 2007)
New Revision: 22826
Modified:
public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
toolbar refactored
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java 2007-02-21 13:59:31 UTC (rev 22825)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java 2007-02-21 14:12:37 UTC (rev 22826)
@@ -93,6 +93,8 @@
private String sslPort = null;
private String toolbarMasterSwitch = "off";
+ private String reservedPrefix;
+ private String servletContextRealPath;
public static final String DEFAULT_ENCODING = "UTF-8";
@@ -104,8 +106,10 @@
public void init(ServletConfig config) throws ServletException {
this.config = config;
- xsltInfoAndException = org.wyona.commons.io.FileUtil.file(config.getServletContext().getRealPath("/"), config.getInitParameter("exception-and-info-screen-xslt"));
- xsltLoginScreen = org.wyona.commons.io.FileUtil.file(config.getServletContext().getRealPath("/"), config.getInitParameter("login-screen-xslt"));
+ servletContextRealPath = config.getServletContext().getRealPath("/");
+
+ xsltInfoAndException = org.wyona.commons.io.FileUtil.file(servletContextRealPath, config.getInitParameter("exception-and-info-screen-xslt"));
+ xsltLoginScreen = org.wyona.commons.io.FileUtil.file(servletContextRealPath, config.getInitParameter("login-screen-xslt"));
try {
yanel = Yanel.getInstance();
yanel.init();
@@ -118,7 +122,7 @@
sslPort = config.getInitParameter("ssl-port");
toolbarMasterSwitch = config.getInitParameter("toolbar-master-switch");
-
+ reservedPrefix = config.getInitParameter("reserved-prefix");
} catch (Exception e) {
log.error(e);
throw new ServletException(e.getMessage(), e);
@@ -173,6 +177,19 @@
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(true);
+ Resource resource = getResource(request, response);
+ String path = resource.getPath();
+ log.error("Realm path: " + path);
+ if (path.indexOf("/" + reservedPrefix + "/") == 0) {
+ log.error("Global data: " + path);
+ File globalFile = org.wyona.commons.io.FileUtil.file(servletContextRealPath, "htdocs" + File.separator + path.substring(reservedPrefix.length() + 2));
+ if (globalFile.exists()) {
+ log.error("Global data: " + globalFile);
+ } else {
+ log.error("No such file or directory: " + globalFile);
+ }
+ }
+
// Check for toolbar ...
String yanelToolbar = request.getParameter("yanel.toolbar");
if(yanelToolbar != null) {
@@ -189,16 +206,13 @@
String yanelWebDAV = request.getParameter("yanel.webdav");
if(yanelWebDAV != null && yanelWebDAV.equals("propfind1")) {
- Resource resource = getResource(request, response);
log.error("DEBUG: WebDAV client (" + request.getHeader("User-Agent") + ") requests to \"edit\" a resource: " + resource.getRealm() + ", " + resource.getPath());
//return;
}
String toolbar = (String) session.getAttribute(TOOLBAR_KEY);
- // TODO: Check mime-type and yanel.no-toolbar parameter
if (toolbar != null && toolbar.equals("on")) {
String mimeType = null;
- Resource resource = getResource(request, response);
if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Viewable", "2")) {
try {
mimeType = ((ViewableV2) resource).getMimeType(request.getParameter(VIEW_ID_PARAM_NAME));
@@ -207,47 +221,32 @@
}
}
if (mimeType != null && mimeType.indexOf("html") > 0) {
- if (toolbarMasterSwitch.equals("on")) {
- String noToolbar = request.getParameter("yanel.no-toolbar");
- // TODO: Check on the referer with getHeader("Referer") and check if the referer used the yanel.no-toolbar parameter ...
- log.error("DEBUG: Referer: " + request.getHeader("Referer"));
- if (noToolbar == null) {
- log.warn("TODO: Embed toolbar ...");
- StringBuffer tb = new StringBuffer("<html>");
- tb.append("<body style=\"padding: 0; margin: 0; overflow: hidden;\">");
- tb.append("<table>");
- tb.append("<tr>");
- tb.append("<td><a href=\"create-new-page.html\">New Page</a></td>");
- tb.append("<td> | </td>");
- tb.append("<td><a href=\"?yanel.toolbar=off\">Turn of toolbar</a></td>");
- tb.append("<td> | </td>");
- tb.append("<td><a href=\"?yanel.usecase=logout\">Logout</a></td>");
- Identity identity = (Identity) session.getAttribute(IDENTITY_KEY);
- if (identity != null) {
- tb.append("<td>    User: " + identity.getUsername() + " (Realm: ...)</td>");
- } else {
- tb.append("<td>    User: Not signed in!</td>");
- }
- tb.append("</tr>");
- tb.append("</table>");
- // TODO: Enhance/Patch all hypertext links with target="top"
- // TODO: Consider proxy and query-string ...
- //tb.append("<iframe src=\"http://127.0.0.1:8080/\" width=\"100%\" height=\"100%\"/>");
- tb.append("<iframe src=\"" + request.getRequestURI() + "?yanel.no-toolbar\" width=\"100%\" height=\"100%\"/>");
+ if (toolbarMasterSwitch.equals("on")) {
+ StringBuffer tb = new StringBuffer();
+ tb.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">");
+ tb.append("<html>");
+ tb.append("<head>");
+ // TODO: compute relative path ...
+ tb.append("<link type=\"text/css\" href=\""+reservedPrefix+"/toolbar.css\" rel=\"stylesheet\"/>");
+ tb.append("</head>");
+ tb.append("<body>");
+ tb.append("<div id=\"headerwrap\">");
+ tb.append("<div id=\"menu\">");
+ tb.append(getToolbarMenus());
+ tb.append("</div>");
+ tb.append("<img src=\""+reservedPrefix+"/yanel_toolbar_logo.png\" id=\"toolbar_logo\"/>");
+ tb.append("</div>");
+ tb.append("<div id=\"middlewrap\">");
+ tb.append("Hello Toolbar");
+ tb.append("</div>");
tb.append("</body>");
tb.append("</html>");
response.getWriter().print(tb);
return;
} else {
- // TODO: Enhance/Patch all hypertext links with yanel.no-toolbar
- log.error("DEBUG: Requested by iframe src ...");
- getContent(request, response);
- return;
+ log.info("Toolbar has been disabled. Please check web.xml!");
}
} else {
- log.info("Toolbar has been disabled. Please check web.xml!");
- }
- } else {
log.error("DEBUG: No HTML related mime type: " + mimeType);
}
} else {
@@ -278,7 +277,6 @@
Element rootElement = doc.getDocumentElement();
- String servletContextRealPath = config.getServletContext().getRealPath("/");
rootElement.setAttribute("servlet-context-real-path", servletContextRealPath);
Element requestElement = (Element) rootElement.appendChild(doc.createElementNS(NAMESPACE, "request"));
@@ -1605,4 +1603,11 @@
return;
}
}
+
+ /**
+ * Get toolbar menus
+ */
+ private String getToolbarMenus() {
+ return "<ul><li><h2>File</h2><ul><li>New</li></ul></li></ul> <ul><li><h2>Edit</h2><ul><li>Open</li></ul></li></ul>";
+ }
}
More information about the Yanel-commits
mailing list