ALF-19863 Partially revert r49154: Enterprise overlay had been wrongly committed where it shouldn't

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@54630 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Samuel Langlois
2013-08-29 11:25:37 +00:00
parent e8627b539f
commit ad8b19e173
2 changed files with 600 additions and 572 deletions

View File

@@ -1,380 +1,392 @@
/* /*
* Copyright (C) 2005-2013 Alfresco Software Limited. * Copyright (C) 2005-2013 Alfresco Software Limited.
* *
* This file is part of Alfresco * This file is part of Alfresco
* *
* Alfresco is free software: you can redistribute it and/or modify * Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* Alfresco is distributed in the hope that it will be useful, * Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details. * GNU Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* Enterprise overlay */ /*
* There is an Enterprise overlay for this file
package org.alfresco.web.ui.repo.tag; */
import java.io.IOException; package org.alfresco.web.ui.repo.tag;
import java.io.Writer;
import java.io.IOException;
import javax.faces.context.FacesContext; import java.io.Writer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException; import javax.faces.context.FacesContext;
import javax.servlet.jsp.tagext.TagSupport; import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import org.alfresco.web.app.Application; import javax.servlet.jsp.tagext.TagSupport;
import org.alfresco.web.app.servlet.FacesHelper;
import org.alfresco.web.bean.coci.CCProperties; import org.alfresco.web.app.Application;
import org.alfresco.web.config.ClientConfigElement; import org.alfresco.web.app.servlet.FacesHelper;
import org.alfresco.web.ui.common.Utils; import org.alfresco.web.bean.coci.CCProperties;
import org.apache.commons.logging.Log; import org.alfresco.web.config.ClientConfigElement;
import org.apache.commons.logging.LogFactory; import org.alfresco.web.ui.common.Utils;
import org.apache.commons.logging.Log;
/** import org.apache.commons.logging.LogFactory;
* A non-JSF tag library that adds the HTML begin and end tags if running in servlet mode
* /**
* @author gavinc * A non-JSF tag library that adds the HTML begin and end tags if running in servlet mode
*/ *
public class PageTag extends TagSupport * @author gavinc
{ */
private static final long serialVersionUID = 8142765393181557228L; public class PageTag extends TagSupport
{
private final static String SCRIPTS_START = "<script type=\"text/javascript\" src=\""; private static final long serialVersionUID = 8142765393181557228L;
private final static String SCRIPTS_END = "\"></script>\n";
private final static String STYLES_START = "<link rel=\"stylesheet\" href=\""; private final static String SCRIPTS_START = "<script type=\"text/javascript\" src=\"";
private final static String STYLES_MAIN = "\" type=\"text/css\">\n"; private final static String SCRIPTS_END = "\"></script>\n";
private final static String STYLES_START = "<link rel=\"stylesheet\" href=\"";
private final static String[] SCRIPTS = private final static String STYLES_MAIN = "\" type=\"text/css\">\n";
{
// menu javascript private final static String[] SCRIPTS =
"/scripts/menu.js", {
// webdav javascript // menu javascript
"/scripts/webdav.js", "/scripts/menu.js",
// base yahoo file // webdav javascript
"/scripts/ajax/yahoo/yahoo/yahoo-min.js", "/scripts/webdav.js",
// io handling (AJAX) // base yahoo file
"/scripts/ajax/yahoo/connection/connection-min.js", "/scripts/ajax/yahoo/yahoo/yahoo-min.js",
// event handling // io handling (AJAX)
"/scripts/ajax/yahoo/event/event-min.js", "/scripts/ajax/yahoo/connection/connection-min.js",
// mootools // event handling
"/scripts/ajax/mootools.v1.11.js", "/scripts/ajax/yahoo/event/event-min.js",
// common Alfresco util methods // mootools
"/scripts/ajax/common.js", "/scripts/ajax/mootools.v1.11.js",
// pop-up panel helper objects // common Alfresco util methods
"/scripts/ajax/summary-info.js", "/scripts/ajax/common.js",
// ajax pickers // pop-up panel helper objects
"/scripts/ajax/picker.js", "/scripts/ajax/summary-info.js",
"/scripts/ajax/tagger.js", // ajax pickers
// validation handling "/scripts/ajax/picker.js",
"/scripts/validation.js" "/scripts/ajax/tagger.js",
}; // validation handling
"/scripts/validation.js"
private final static String[] CSS = };
{
"/css/main.css", private final static String[] CSS =
"/css/picker.css" {
}; "/css/main.css",
"/css/picker.css"
/** };
* Please ensure you understand the terms of the license before changing the contents of this file.
*/ /**
* Please ensure you understand the terms of the license before changing the contents of this file.
private final static String ALF_URL = "http://www.alfresco.com"; */
private final static String ALF_LOGO = "/images/logo/alfresco_enterprise.gif";
private final static String ALF_TEXT = "Alfresco Enterprise"; private final static String ALF_LOGO_HTTP = "http://www.alfresco.com/assets/images/logos/community-4.2.png";
private final static String ALF_COPY = "Certified and supported. Alfresco Software Inc. &copy; 2005-2013 All rights reserved."; private final static String ALF_LOGO_HTTPS = "https://www.alfresco.com/assets/images/logos/community-4.2.png";
private final static String ALF_URL = "http://www.alfresco.com";
private final static Log logger = LogFactory.getLog(PageTag.class); private final static String ALF_TEXT = "Alfresco Community";
private static String alfresco = null; private final static String ALF_COPY = "Supplied free of charge with " +
private static String loginPage = null; "<a class='footer' href='http://www.alfresco.com/services/support/communityterms/#support'>no support</a>, " +
"<a class='footer' href='http://www.alfresco.com/services/support/communityterms/#certification'>no certification</a>, " +
private long startTime = 0; "<a class='footer' href='http://www.alfresco.com/services/support/communityterms/#maintenance'>no maintenance</a>, " +
private String title; "<a class='footer' href='http://www.alfresco.com/services/support/communityterms/#warranty'>no warranty</a> and " +
private String titleId; "<a class='footer' href='http://www.alfresco.com/services/support/communityterms/#indemnity'>no indemnity</a> by " +
private String doctypeRootElement; "<a class='footer' href='http://www.alfresco.com'>Alfresco</a> or its " +
private String doctypePublic; "<a class='footer' href='http://www.alfresco.com/partners/'>Certified Partners</a>. " +
private String doctypeSystem; "<a class='footer' href='http://www.alfresco.com/services/support/'>Click here for support</a>. " +
"Alfresco Software Inc. &copy; 2005-2013 All rights reserved.";
/**
* @return The title for the page private final static Log logger = LogFactory.getLog(PageTag.class);
*/ private static String alfresco = null;
public String getTitle() private static String loginPage = null;
{
return title; private long startTime = 0;
} private String title;
private String titleId;
/** private String doctypeRootElement;
* @param title Sets the page title private String doctypePublic;
*/ private String doctypeSystem;
public void setTitle(String title)
{ /**
this.title = title; * @return The title for the page
} */
public String getTitle()
/** {
* @return The title message Id for the page return title;
*/ }
public String getTitleId()
{ /**
return titleId; * @param title Sets the page title
} */
public void setTitle(String title)
/** {
* @param titleId Sets the page title message Id this.title = title;
*/ }
public void setTitleId(String titleId)
{ /**
this.titleId = titleId; * @return The title message Id for the page
} */
public String getTitleId()
public String getDoctypeRootElement() {
{ return titleId;
return this.doctypeRootElement; }
}
/**
public void setDoctypeRootElement(final String doctypeRootElement) * @param titleId Sets the page title message Id
{ */
this.doctypeRootElement = doctypeRootElement; public void setTitleId(String titleId)
} {
this.titleId = titleId;
public String getDoctypePublic() }
{
return this.doctypePublic; public String getDoctypeRootElement()
} {
return this.doctypeRootElement;
public void setDoctypePublic(final String doctypePublic) }
{
this.doctypePublic = doctypePublic; public void setDoctypeRootElement(final String doctypeRootElement)
} {
this.doctypeRootElement = doctypeRootElement;
public String getDoctypeSystem() }
{
return this.doctypeSystem; public String getDoctypePublic()
} {
return this.doctypePublic;
public void setDoctypeSystem(final String doctypeSystem) }
{
this.doctypeSystem = doctypeSystem; public void setDoctypePublic(final String doctypePublic)
} {
this.doctypePublic = doctypePublic;
public void release() }
{
super.release(); public String getDoctypeSystem()
this.title = null; {
this.titleId = null; return this.doctypeSystem;
this.doctypeRootElement = null; }
this.doctypeSystem = null;
this.doctypePublic = null; public void setDoctypeSystem(final String doctypeSystem)
} {
this.doctypeSystem = doctypeSystem;
/** }
* @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
*/ public void release()
public int doStartTag() throws JspException {
{ super.release();
if (logger.isDebugEnabled()) this.title = null;
startTime = System.currentTimeMillis(); this.titleId = null;
this.doctypeRootElement = null;
try this.doctypeSystem = null;
{ this.doctypePublic = null;
String reqPath = ((HttpServletRequest)pageContext.getRequest()).getContextPath(); }
Writer out = pageContext.getOut();
/**
if (!Application.inPortalServer()) * @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
{ */
if (this.getDoctypeRootElement() != null && public int doStartTag() throws JspException
this.getDoctypePublic() != null) {
{ if (logger.isDebugEnabled())
out.write("<!DOCTYPE "); startTime = System.currentTimeMillis();
out.write(this.getDoctypeRootElement().toLowerCase());
out.write(" PUBLIC \"" + this.getDoctypePublic() + "\""); try
if (this.getDoctypeSystem() != null) {
{ String reqPath = ((HttpServletRequest)pageContext.getRequest()).getContextPath();
out.write(" \"" + this.getDoctypeSystem() + "\""); Writer out = pageContext.getOut();
}
out.write(">\n"); if (!Application.inPortalServer())
} {
else if (this.getDoctypeRootElement() != null &&
{ this.getDoctypePublic() != null)
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n"); {
out.write(" \"http://www.w3.org/TR/html4/loose.dtd\">\n"); out.write("<!DOCTYPE ");
} out.write(this.getDoctypeRootElement().toLowerCase());
out.write("<html><head>"); out.write(" PUBLIC \"" + this.getDoctypePublic() + "\"");
out.write("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\" />\n"); if (this.getDoctypeSystem() != null)
out.write("<title>"); {
if (this.titleId != null && this.titleId.length() != 0) out.write(" \"" + this.getDoctypeSystem() + "\"");
{ }
out.write(Utils.encode(Application.getMessage(pageContext.getSession(), this.titleId))); out.write(">\n");
} }
else if (this.title != null && this.title.length() != 0) else
{ {
out.write(Utils.encode(this.title)); out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n");
} out.write(" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
else }
{ out.write("<html><head>");
out.write("Alfresco Web Client"); out.write("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\" />\n");
} out.write("<title>");
out.write("</title>\n"); if (this.titleId != null && this.titleId.length() != 0)
out.write("<link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"" + reqPath + {
"/wcservice/api/search/keyword/description.xml\" title=\"Alfresco Keyword Search\">\n"); out.write(Utils.encode(Application.getMessage(pageContext.getSession(), this.titleId)));
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"); }
} else if (this.title != null && this.title.length() != 0)
{
// CSS style includes out.write(Utils.encode(this.title));
for (final String css : PageTag.CSS) }
{ else
out.write(STYLES_START); {
out.write(reqPath); out.write("Alfresco Web Client");
out.write(css); }
out.write(STYLES_MAIN); out.write("</title>\n");
} out.write("<link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"" + reqPath +
"/wcservice/api/search/keyword/description.xml\" title=\"Alfresco Keyword Search\">\n");
// JavaScript includes out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n");
for (final String s : PageTag.SCRIPTS) }
{
out.write(SCRIPTS_START); // CSS style includes
out.write(reqPath); for (final String css : PageTag.CSS)
out.write(s); {
out.write(SCRIPTS_END); out.write(STYLES_START);
} out.write(reqPath);
out.write(css);
out.write("<script type=\"text/javascript\">"); // start - generate naked javascript code out.write(STYLES_MAIN);
}
// get client config to determine how the JavaScript setContextPath should behave
ClientConfigElement clientConfig = Application.getClientConfig(pageContext.getServletContext()); // JavaScript includes
for (final String s : PageTag.SCRIPTS)
// set the context path used by some Alfresco script objects {
if (clientConfig != null && clientConfig.getCheckContextAgainstPath()) out.write(SCRIPTS_START);
{ out.write(reqPath);
out.write("setCheckContextAgainstPath(true);"); out.write(s);
} out.write(SCRIPTS_END);
out.write("setContextPath('"); }
out.write(reqPath);
out.write("');"); out.write("<script type=\"text/javascript\">"); // start - generate naked javascript code
// generate window onload code // get client config to determine how the JavaScript setContextPath should behave
generateWindowOnloadCode(out); ClientConfigElement clientConfig = Application.getClientConfig(pageContext.getServletContext());
out.write("</script>\n"); // end - generate naked javascript code // set the context path used by some Alfresco script objects
if (clientConfig != null && clientConfig.getCheckContextAgainstPath())
if (!Application.inPortalServer()) {
{ out.write("setCheckContextAgainstPath(true);");
out.write("</head>"); }
out.write("<body>\n"); out.write("setContextPath('");
} out.write(reqPath);
} out.write("');");
catch (IOException ioe)
{ // generate window onload code
throw new JspException(ioe.toString()); generateWindowOnloadCode(out);
}
out.write("</script>\n"); // end - generate naked javascript code
return EVAL_BODY_INCLUDE;
} if (!Application.inPortalServer())
{
/** out.write("</head>");
* @see javax.servlet.jsp.tagext.TagSupport#doEndTag() out.write("<body>\n");
*/ }
public int doEndTag() throws JspException }
{ catch (IOException ioe)
try {
{ throw new JspException(ioe.toString());
HttpServletRequest req = (HttpServletRequest)pageContext.getRequest(); }
if (req.getRequestURI().endsWith(getLoginPage()) == false)
{ return EVAL_BODY_INCLUDE;
pageContext.getOut().write(getAlfrescoButton()); }
}
/**
if (!Application.inPortalServer()) * @see javax.servlet.jsp.tagext.TagSupport#doEndTag()
{ */
pageContext.getOut().write("\n</body></html>"); public int doEndTag() throws JspException
} {
} try
catch (IOException ioe) {
{ HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
throw new JspException(ioe.toString()); if (req.getRequestURI().endsWith(getLoginPage()) == false)
} {
pageContext.getOut().write(getAlfrescoButton());
if (logger.isDebugEnabled()) }
{
long endTime = System.currentTimeMillis(); if (!Application.inPortalServer())
logger.debug("Time to generate page: " + (endTime - startTime) + "ms"); {
} pageContext.getOut().write("\n</body></html>");
}
return super.doEndTag(); }
} catch (IOException ioe)
{
private String getLoginPage() throw new JspException(ioe.toString());
{ }
if (PageTag.loginPage == null)
{ if (logger.isDebugEnabled())
PageTag.loginPage = Application.getLoginPage(pageContext.getServletContext()); {
} long endTime = System.currentTimeMillis();
logger.debug("Time to generate page: " + (endTime - startTime) + "ms");
return PageTag.loginPage; }
}
return super.doEndTag();
/** }
* Please ensure you understand the terms of the license before changing the contents of this file.
*/ private String getLoginPage()
{
private String getAlfrescoButton() if (PageTag.loginPage == null)
{ {
if (PageTag.alfresco == null) PageTag.loginPage = Application.getLoginPage(pageContext.getServletContext());
{ }
final String reqPath = ((HttpServletRequest)pageContext.getRequest()).getContextPath();
PageTag.alfresco = ("<center><table style='margin: 0px auto;'><tr><td>" + return PageTag.loginPage;
"<a href='" + ALF_URL + "'>" + }
"<img style='vertical-align:middle;border-width:0px;' width='164' height='26' alt='' title='" + ALF_TEXT +
"' src='" + reqPath + ALF_LOGO + "'/>" + /**
"</a></td><td align='center'>" + * Please ensure you understand the terms of the license before changing the contents of this file.
"<span class='footer'>" + ALF_COPY + */
"</span></td><td></td></tr></table></center>");
} private String getAlfrescoButton()
return PageTag.alfresco; {
} if (PageTag.alfresco == null)
{
/** final HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
* This method generate code for setting window.onload reference as PageTag.alfresco = ("<center><table style='margin: 0px auto;'><tr><td>" +
* we need to open WebDav or CIFS URL in a new window. "<a href='" + ALF_URL + "'>" +
* "<img style='vertical-align:middle;border-width:0px;' width='176' height='26' alt='' title='" + ALF_TEXT +
* Executes via javascript code(function onloadFunc()) in "onload.js" include file. "' src='" + ("http".equals(req.getScheme()) ? ALF_LOGO_HTTP : ALF_LOGO_HTTPS) +
* "'>" +"</a></td><td align='center'>" +
* @return Returns window.onload javascript code "<span class='footer'>" + ALF_COPY +
*/ "</span></td><td></td></tr></table></center>");
private static void generateWindowOnloadCode(Writer out) }
throws IOException return PageTag.alfresco;
{ }
FacesContext fc = FacesContext.getCurrentInstance();
if (fc != null) /**
{ * This method generate code for setting window.onload reference as
CCProperties ccProps = (CCProperties)FacesHelper.getManagedBean(fc, "CCProperties"); * we need to open WebDav or CIFS URL in a new window.
if (ccProps.getWebdavUrl() != null || ccProps.getCifsPath() != null) *
{ * Executes via javascript code(function onloadFunc()) in "onload.js" include file.
out.write("window.onload=function(){onloadFunc(\""); *
if (ccProps.getWebdavUrl() != null) * @return Returns window.onload javascript code
{ */
out.write(ccProps.getWebdavUrl()); private static void generateWindowOnloadCode(Writer out)
} throws IOException
out.write("\",\""); {
if (ccProps.getCifsPath() != null) FacesContext fc = FacesContext.getCurrentInstance();
{ if (fc != null)
String val = ccProps.getCifsPath(); {
val = Utils.replace(val, "\\", "\\\\"); // encode escape character CCProperties ccProps = (CCProperties)FacesHelper.getManagedBean(fc, "CCProperties");
out.write(val); if (ccProps.getWebdavUrl() != null || ccProps.getCifsPath() != null)
} {
out.write("\");};"); out.write("window.onload=function(){onloadFunc(\"");
if (ccProps.getWebdavUrl() != null)
// reset session bean state {
ccProps.setCifsPath(null); out.write(ccProps.getWebdavUrl());
ccProps.setWebdavUrl(null); }
} out.write("\",\"");
} if (ccProps.getCifsPath() != null)
} {
} String val = ccProps.getCifsPath();
val = Utils.replace(val, "\\", "\\\\"); // encode escape character
out.write(val);
}
out.write("\");};");
// reset session bean state
ccProps.setCifsPath(null);
ccProps.setWebdavUrl(null);
}
}
}
}

View File

@@ -1,193 +1,209 @@
<%-- <%--
* Copyright (C) 2005-2013 Alfresco Software Limited. * Copyright (C) 2005-2013 Alfresco Software Limited.
* *
* This file is part of Alfresco * This file is part of Alfresco
* *
* Alfresco is free software: you can redistribute it and/or modify * Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by * it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* Alfresco is distributed in the hope that it will be useful, * Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details. * GNU Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
--%> --%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="/WEB-INF/alfresco.tld" prefix="a" %> <%@ taglib uri="/WEB-INF/alfresco.tld" prefix="a" %>
<%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %> <%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %>
<%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %> <%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %>
<%@ page isELIgnored="false" %> <%@ page isELIgnored="false" %>
<%@ page import="org.alfresco.web.ui.common.PanelGenerator" %> <%@ page import="org.alfresco.web.ui.common.PanelGenerator" %>
<f:verbatim> <f:verbatim>
<table cellspacing="0" cellpadding="0" border="0" width="100%"> <table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr> <tr>
<td width="100%" align="center"> <td width="100%" align="center">
<div style="padding:8px"> <div style="padding:8px">
<img src="<%=request.getContextPath()%>/images/logo/alfresco3d.jpg" alt="Alfresco" width="520" height="168"> <img src="<%=request.getContextPath()%>/images/logo/alfresco3d.jpg" alt="Alfresco" width="520" height="168">
</div> </div>
<div style="padding:4px"> <div style="padding:4px">
<a href="http://www.alfresco.com/" class="title" target="new">http://www.alfresco.com</a> <a href="http://www.alfresco.com/" class="title" target="new">http://www.alfresco.com</a>
<p> <p>
Alfresco Software Inc. &copy; 2005-2013 All rights reserved. <a href="http://www.alfresco.com/legal/" target="new">Legal and License</a> Alfresco Software Inc. &copy; 2005-2013 All rights reserved. <a href="http://www.alfresco.com/legal/" target="new">Legal and License</a>
</div> </div>
<div style="padding:4px" class="mainSubTitle"> <div style="padding:4px" class="mainSubTitle">
Alfresco Software utilises components or libraries from the following software vendors and companies Alfresco Software utilises components or libraries from the following software vendors and companies
</div> </div>
<p>&nbsp;</p> <p>&nbsp;</p>
<div style="padding:4px"> <div style="padding:4px">
<span style="text-align:center"> <span style="text-align:center">
<a href="http://www.springframework.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/spring_logo.jpg" alt="Spring Framework" width="355" height="73" border="0"></a> <a href="http://www.springframework.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/spring_logo.jpg" alt="Spring Framework" width="355" height="73" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://www.hibernate.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/hibernate_logo.gif" alt="Hibernate" width="249" height="78" border="0"></a> <a href="http://www.hibernate.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/hibernate_logo.gif" alt="Hibernate" width="249" height="78" border="0"></a>
</span> </span>
</div> </div>
<div style="padding:4px"> <div style="padding:4px">
<span style="text-align:center"> <span style="text-align:center">
<a href="http://www.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/asf_logo_wide.gif" alt="The Apache Software Foundation" width="537" height="51" border="0"></a> <a href="http://www.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/asf_logo_wide.gif" alt="The Apache Software Foundation" width="537" height="51" border="0"></a>
</span> </span>
</div> </div>
<div style="padding:4px"> <div style="padding:4px">
<span style="text-align:center"> <span style="text-align:center">
<a href="http://jakarta.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/jakarta-logo.gif" alt="The Apache Jakarta Project" width="505" height="48" border="0"></a> <a href="http://jakarta.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/jakarta-logo.gif" alt="The Apache Jakarta Project" width="505" height="48" border="0"></a>
</span> </span>
</div> </div>
<div style="padding:4px"> <div style="padding:4px">
<span style="text-align:center"> <span style="text-align:center">
<a href="http://www.java.com/" target="new"><img src="<%=request.getContextPath()%>/images/logo/java.gif" alt="Java" width="52" height="108" border="0"></a> <a href="http://www.java.com/" target="new"><img src="<%=request.getContextPath()%>/images/logo/java.gif" alt="Java" width="52" height="108" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://www.jboss.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/jbosslogo.gif" alt="JBoss" width="249" height="78" border="0"></a> <a href="http://www.jboss.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/jbosslogo.gif" alt="JBoss" width="249" height="78" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://myfaces.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/myfaces.png" alt="My Faces" width="106" height="100" border="0"></a> <a href="http://myfaces.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/myfaces.png" alt="My Faces" width="106" height="100" border="0"></a>
</span> </span>
</div> </div>
<div style="padding:4px"> <div style="padding:4px">
<span style="text-align:center"> <span style="text-align:center">
<a href="http://lucene.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/lucene.gif" alt="Lucene" width="300" height="46" border="0"></a> <a href="http://lucene.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/lucene.gif" alt="Lucene" width="300" height="46" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://cglib.sourceforge.net/" target="new"><img src="<%=request.getContextPath()%>/images/logo/cglib.png" alt="Code Generation Library" width="228" height="35" border="0"></a> <a href="http://cglib.sourceforge.net/" target="new"><img src="<%=request.getContextPath()%>/images/logo/cglib.png" alt="Code Generation Library" width="228" height="35" border="0"></a>
</span> </span>
</div> </div>
<div style="padding:4px"> <div style="padding:4px">
<span style="text-align:center"> <span style="text-align:center">
<a href="http://www.pdfbox.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/pdfbox.gif" alt="PDFBox" width="200" height="38" border="0"></a> <a href="http://www.pdfbox.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/pdfbox.gif" alt="PDFBox" width="200" height="38" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://tinymce.moxiecode.com/" target="new"><img src="<%=request.getContextPath()%>/images/logo/tinymce.png" alt="TinyMCE" width="88" height="32" border="0"></a> <a href="http://tinymce.moxiecode.com/" target="new"><img src="<%=request.getContextPath()%>/images/logo/tinymce.png" alt="TinyMCE" width="88" height="32" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://www.openoffice.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/open-office.gif" alt="OpenOffice.org" width="122" height="40" border="0"></a> <a href="http://www.openoffice.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/open-office.gif" alt="OpenOffice.org" width="122" height="40" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://jooreports.sourceforge.net/" target="new"><img src="<%=request.getContextPath()%>/images/logo/jooreports.png" alt="JooReports" width="125" height="24" border="0"></a> <a href="http://jooreports.sourceforge.net/" target="new"><img src="<%=request.getContextPath()%>/images/logo/jooreports.png" alt="JooReports" width="125" height="24" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://freemarker.sourceforge.net/" target="new"><img src="<%=request.getContextPath()%>/images/logo/freemarker.png" alt="FreeMarker" width="165" height="26" border="0"></a> <a href="http://freemarker.sourceforge.net/" target="new"><img src="<%=request.getContextPath()%>/images/logo/freemarker.png" alt="FreeMarker" width="165" height="26" border="0"></a>
</span> </span>
</div> </div>
<p>&nbsp;</p> <p>&nbsp;</p>
<p>&nbsp;</p> <p>&nbsp;</p>
<div style="padding:4px" class="mainSubTitle"> <div style="padding:4px" class="mainSubTitle">
Alfresco Development tools: Alfresco Development tools:
</div> </div>
<div style="padding:4px"> <div style="padding:4px">
<span style="text-align:center"> <span style="text-align:center">
<a href="http://subversion.tigris.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/subversion_logo.png" alt="Subversion" width="200" height="27" border="0"></a> <a href="http://subversion.tigris.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/subversion_logo.png" alt="Subversion" width="200" height="27" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://www.eclipse.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/eclipse_logo.jpg" alt="eclipse" width="143" height="49" border="0"></a> <a href="http://www.eclipse.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/eclipse_logo.jpg" alt="eclipse" width="143" height="49" border="0"></a>
</span> </span>
</div> </div>
<p>&nbsp;</p> <p>&nbsp;</p>
<p>&nbsp;</p> <p>&nbsp;</p>
<div style="padding:4px" class="mainSubTitle"> <div style="padding:4px" class="mainSubTitle">
Alfresco Software contributors Alfresco Software contributors
</div> </div>
<table border="0" cellspacing="2" cellpadding="2"> <table border="0" cellspacing="2" cellpadding="2">
<tr> <tr>
<td width="50%" align="right"> <td width="50%" align="right">
Meta Data Extraction Framework and PDF/Open Office Format meta data extraction: Meta Data Extraction Framework and PDF/Open Office Format meta data extraction:
</td> </td>
<td>&nbsp;&#8226;&nbsp;</td> <td>&nbsp;&#8226;&nbsp;</td>
<td width="50%"> <td width="50%">
Jesper Steen M&oslash;ller Jesper Steen M&oslash;ller
</td> </td>
</tr> </tr>
<tr> <tr>
<td width="50%" align="right"> <td width="50%" align="right">
Open Document Format meta data extraction: Open Document Format meta data extraction:
</td> </td>
<td>&nbsp;&#8226;&nbsp;</td> <td>&nbsp;&#8226;&nbsp;</td>
<td width="50%"> <td width="50%">
Antti Jokipii Antti Jokipii
</td> </td>
</tr> </tr>
<tr> <tr>
<td width="50%" align="right"> <td width="50%" align="right">
Multilingual Document Management: Multilingual Document Management:
</td> </td>
<td>&nbsp;&#8226;&nbsp;</td> <td>&nbsp;&#8226;&nbsp;</td>
<td width="50%"> <td width="50%">
CEC CEC
</td> </td>
</tr> </tr>
<tr> <tr>
<td width="50%" align="right"> <td width="50%" align="right">
Category Browsing: Category Browsing:
</td> </td>
<td>&nbsp;&#8226;&nbsp;</td> <td>&nbsp;&#8226;&nbsp;</td>
<td width="50%"> <td width="50%">
Atol Conseils et D&eacute;veloppements Atol Conseils et D&eacute;veloppements
</td> </td>
</tr> </tr>
<tr> <tr>
<td width="50%" align="right"> <td width="50%" align="right">
Fixes and improvements: Fixes and improvements:
</td> </td>
<td>&nbsp;&#8226;&nbsp;</td> <td>&nbsp;&#8226;&nbsp;</td>
<td width="50%"> <td width="50%">
Ray Gauss II, Ray Gauss II,
Dave Gillen, Dave Gillen,
Michael Kriske, Michael Kriske,
Carina Lansing, Carina Lansing,
DMC.de, DMC.de,
Optaros Optaros
</td> </td>
</tr> </tr>
<tr> <tr>
<td width="50%" align="right"> <td width="50%" align="right">
Supported language packs: Language and translation packs:
</td> </td>
<td>&nbsp;&#8226;&nbsp;</td> <td>&nbsp;&#8226;&nbsp;</td>
<td width="50%"> <td width="50%">
French, German, Italian, (European) Spanish and Japanese. Camille B&eacute;gnis,
</td> Andrejus Chaliapinas,
</tr> Laurent Genier,
</table> Antti Jokipii,
Henning Kristensen,
</td> Betty Mai,
</tr> Fabian Mandelbaum,
</table> Theodoros Papageorgiou,
</f:verbatim> Helio Silvio Piccinatto,
Gian Luca Farina Perseu,
Alex Revesz,
Christian Roy,
Philippe Seillier,
Frank Shipley,
Michiel Steltman,
Gert Thiel,
cnalfresco
</td>
</tr>
</table>
</td>
</tr>
</table>
</f:verbatim>