Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)

59732: Merged V4.2-BUG-FIX (4.2.2) to HEAD-BUG-FIX (Cloud/4.3)
      59504: MNT-10255: Merged DEV to V4.2-BUG-FIX (4.2.1).
          59393: MNT-10255 Mac OS -CIFS: Collaborator/editor can delete content created by other site members after editing.
                 - In ScenarioTempDeleteShuffle.createInstance() was added check: (operation instanceof MoveFileOperation).


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@62175 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2014-02-12 02:13:58 +00:00
parent 538e468caf
commit 1ac86d0d45
3 changed files with 586 additions and 613 deletions

View File

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

@@ -100,7 +100,7 @@
<param-value>false</param-value> <param-value>false</param-value>
</context-param> </context-param>
<!-- Activiti context param placeholder --> <context-param><param-name>productionMode</param-name><param-value>true</param-value><description>Vaadin production mode</description></context-param>
<filter> <filter>
<filter-name>CMIS security context cleaning filter</filter-name> <filter-name>CMIS security context cleaning filter</filter-name>
@@ -380,7 +380,7 @@
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener> </listener>
<!-- Activiti listener placeholder --> <listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener>
<!-- Faces Servlet --> <!-- Faces Servlet -->
@@ -631,7 +631,7 @@
</init-param> </init-param>
</servlet> </servlet>
<!-- Activiti servlet placeholder --> <servlet><servlet-name>Vaadin Application Servlet</servlet-name><servlet-class>org.activiti.explorer.servlet.ExplorerApplicationServlet</servlet-class></servlet>
<servlet-mapping> <servlet-mapping>
<servlet-name>Faces Servlet</servlet-name> <servlet-name>Faces Servlet</servlet-name>
@@ -831,7 +831,8 @@
</servlet-mapping> </servlet-mapping>
CMISTCK --> CMISTCK -->
<!-- Activiti servlet mapping placeholder --> <servlet-mapping><servlet-name>Vaadin Application Servlet</servlet-name><url-pattern>/activiti-admin/*</url-pattern></servlet-mapping>
<servlet-mapping><servlet-name>Vaadin Application Servlet</servlet-name><url-pattern>/VAADIN/*</url-pattern></servlet-mapping>
<session-config> <session-config>
<session-timeout>60</session-timeout> <session-timeout>60</session-timeout>

View File

@@ -1,218 +1,202 @@
<%-- <%--
* Copyright (C) 2005-2014 Alfresco Software Limited. * Copyright (C) 2005-2014 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-2014 All rights reserved. <a href="http://www.alfresco.com/legal/" target="new">Legal and License</a> Alfresco Software Inc. &copy; 2005-2014 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://mybatis.github.io/" target="new"><img src="<%=request.getContextPath()%>/images/logo/mybatis.png" alt="Mybatis" width="250" height="63" border="0"></a> <a href="http://mybatis.github.io/" target="new"><img src="<%=request.getContextPath()%>/images/logo/mybatis.png" alt="Mybatis" width="250" height="63" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://ibatis.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/ibatis.png" alt="Ibatis" width="183" height="87" border="0"></a> <a href="http://ibatis.apache.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/ibatis.png" alt="Ibatis" width="183" height="87" 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://lucene.apache.org/solr/" target="new"><img src="<%=request.getContextPath()%>/images/logo/solr.png" alt="Solr" width="182" height="100" border="0"></a> <a href="http://lucene.apache.org/solr/" target="new"><img src="<%=request.getContextPath()%>/images/logo/solr.png" alt="Solr" width="182" height="100" border="0"></a>
</span> </span>
<span style="text-align:center"> <span style="text-align:center">
<a href="http://www.hazelcast.com/" target="new"><img src="<%=request.getContextPath()%>/images/logo/hazelcast.png" alt="Hazelcast" width="241" height="72" border="0"></a> <a href="http://www.hazelcast.com/" target="new"><img src="<%=request.getContextPath()%>/images/logo/hazelcast.png" alt="Hazelcast" width="241" height="72" 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.libreoffice.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/libreoffice.png" alt="LibreOffice" width="256" height="56" border="0"></a> <a href="http://www.libreoffice.org/" target="new"><img src="<%=request.getContextPath()%>/images/logo/libreoffice.png" alt="LibreOffice" width="256" height="56" 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">
Language and translation packs: Supported language packs:
</td> </td>
<td>&nbsp;&#8226;&nbsp;</td> <td>&nbsp;&#8226;&nbsp;</td>
<td width="50%"> <td width="50%">
Camille B&eacute;gnis, French, German, Italian, (European) Spanish and Japanese.
Andrejus Chaliapinas, </td>
Laurent Genier, </tr>
Antti Jokipii, </table>
Henning Kristensen,
Betty Mai, </td>
Fabian Mandelbaum, </tr>
Theodoros Papageorgiou, </table>
Helio Silvio Piccinatto, </f:verbatim>
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>