libreccm-legacy/ccm-ldn-theme/src/com/arsdigita/london/theme/ui/ThemeXSLParameterGenerator....

94 lines
3.7 KiB
Java
Executable File

/*
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package com.arsdigita.london.theme.ui;
import com.arsdigita.london.theme.dispatcher.InternalThemePrefixerServlet;
import com.arsdigita.london.theme.ThemeConstants;
import com.arsdigita.london.theme.ThemeConfig;
import com.arsdigita.london.theme.ThemeApplication;
import com.arsdigita.templating.XSLParameterGenerator;
import javax.servlet.http.HttpServletRequest;
import com.arsdigita.web.Web;
import com.arsdigita.london.subsite.Subsite;
import com.arsdigita.london.subsite.SubsiteContext;
/**
* This looks at the request and is able to determine if it is
* production or preview as well as the theme that is in use.
* Then, it returns the appropriate prefix that will be something
* similar to /ccm-ldn-theme/__ccm__/themes-[dev|prod]/[theme-name]/
*
* @author Randy Graebner (randyg@redhat.com)
*/
public class ThemeXSLParameterGenerator implements XSLParameterGenerator,
ThemeConstants {
/**
* This returns the correct value for the parameter. This is the
* value that is added to the transformer and is available to all
* stylesheets
*/
public String generateValue(HttpServletRequest request) {
String themeURL =
InternalThemePrefixerServlet.getThemePreviewURL(request);
String baseDir = null;
if (themeURL != null) {
baseDir = DEV_DIR_STUB;
// we want to strip the final "/" and everything after it
int index = themeURL.lastIndexOf("/");
if (index > 0) {
themeURL = themeURL.substring(0, index);
}
} else {
baseDir = PROD_DIR_STUB;
SubsiteContext context = Subsite.getContext();
if (context.hasSite() &&
context.getSite().getStyleDirectory() != null) {
themeURL = "/" + context.getSite().getStyleDirectory();
}
if( null == themeURL ) {
String defaultThemeURL = ThemeConfig.getDefaultThemeURL( request );
if( null != defaultThemeURL ) themeURL = "/" + defaultThemeURL;
}
}
if (themeURL != null) {
// modified as ccm-ldn-theme is no longer installed in its own context
// return "/" + WEB_APP_NAME + "/" + CCM_PREFIX + "/" +
return "/" + CCM_PREFIX + "/" +
Web.getContext().getRequestURL().getContextPath() +
baseDir + themeURL;
} else {
// this means that there is not theme associated with the
// given subsite, so we return the default theme
themeURL =
ThemeApplication.getConfig().getDefaultThemeContext() +
ThemeApplication.getConfig().getDefaultThemePath();
if (themeURL.endsWith("/")) {
themeURL = themeURL.substring(0, themeURL.length()-1);
}
return themeURL;
}
}
}