94 lines
3.7 KiB
Java
Executable File
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;
|
|
}
|
|
}
|
|
}
|