001: package org.tigris.scarab.screens.admin;
002:
003: /* ================================================================
004: * Copyright (c) 2000-2002 CollabNet. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions are
008: * met:
009: *
010: * 1. Redistributions of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * 2. Redistributions in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in the
015: * documentation and/or other materials provided with the distribution.
016: *
017: * 3. The end-user documentation included with the redistribution, if
018: * any, must include the following acknowlegement: "This product includes
019: * software developed by Collab.Net <http://www.Collab.Net/>."
020: * Alternately, this acknowlegement may appear in the software itself, if
021: * and wherever such third-party acknowlegements normally appear.
022: *
023: * 4. The hosted project names must not be used to endorse or promote
024: * products derived from this software without prior written
025: * permission. For written permission, please contact info@collab.net.
026: *
027: * 5. Products derived from this software may not use the "Tigris" or
028: * "Scarab" names nor may "Tigris" or "Scarab" appear in their names without
029: * prior written permission of Collab.Net.
030: *
031: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
032: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
033: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
034: * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
035: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
036: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
037: * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
038: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
039: * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
040: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
041: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
042: *
043: * ====================================================================
044: *
045: * This software consists of voluntary contributions made by many
046: * individuals on behalf of Collab.Net.
047: */
048:
049: // Java Stuff
050: import java.text.SimpleDateFormat;
051:
052: // Turbine Stuff
053: import org.apache.turbine.RunData;
054: import org.apache.turbine.TemplateContext;
055: import org.apache.turbine.modules.Module;
056:
057: // Scarab Stuff
058: import org.tigris.scarab.screens.Default;
059: import org.tigris.scarab.util.ScarabConstants;
060:
061: /**
062: * Sends XML Export settings contents directly to the output stream.
063: *
064: * @author <a href="mailto:jon@collab.net">Jon Scott Stevens</a>
065: * @version $Id: ViewXMLExportSettings.java 7063 2003-02-04 11:26:03Z jon $
066: */
067: public class ViewXMLExportSettings extends Default {
068: /**
069: * builds up the context for display of variables on the page.
070: */
071: public void doBuildTemplate(RunData data, TemplateContext context)
072: throws Exception {
073: super .doBuildTemplate(data, context);
074:
075: // probably should use intake, but i'm being lazy for now cause
076: // this is only three form variables and not worth the trouble...
077: String downloadType = data.getParameters().getString(
078: "downloadtype");
079: if (downloadType != null && downloadType.equals("1")) {
080: data.getResponse().setContentType("text/plain");
081: } else {
082: data.getResponse().setContentType(
083: "application/octet-stream");
084: String filename = data.getParameters()
085: .getString("filename");
086: if (filename == null || filename.length() == 0
087: || filename.indexOf('/') > 0
088: || filename.indexOf(':') > 0
089: || filename.indexOf(';') > 0) {
090: filename = "scarab-settings-export.xml";
091: }
092: data.getResponse().setHeader("Content-Disposition",
093: "attachment; filename=" + filename);
094: }
095:
096: String includeUsers = data.getParameters().getString(
097: "includeUsers");
098: if (includeUsers != null && includeUsers.equals("1")) {
099: context.put("includeUsers", Boolean.TRUE);
100: } else {
101: context.put("includeUsers", Boolean.FALSE);
102: }
103:
104: context.put("renderedFromScreen", Boolean.TRUE);
105: context.put("sdf", new SimpleDateFormat(
106: ScarabConstants.DATE_FORMAT));
107: String result = Module.handleRequest(context,
108: "macros/XMLExportSettingsMacro.vm");
109: data.getResponse().setContentLength(result.length());
110: data.getResponse().getOutputStream().print(result);
111: context.remove("renderedFromScreen");
112:
113: // we already sent the response, there is no target to render
114: data.setTarget(null);
115: }
116: }
|