mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
@@ -1,380 +1,392 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2013 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* 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
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco 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 Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* Enterprise overlay */
|
||||
|
||||
package org.alfresco.web.ui.repo.tag;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
import javax.faces.context.FacesContext;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
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.bean.coci.CCProperties;
|
||||
import org.alfresco.web.config.ClientConfigElement;
|
||||
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
|
||||
*/
|
||||
public class PageTag extends TagSupport
|
||||
{
|
||||
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 STYLES_START = "<link rel=\"stylesheet\" href=\"";
|
||||
private final static String STYLES_MAIN = "\" type=\"text/css\">\n";
|
||||
|
||||
private final static String[] SCRIPTS =
|
||||
{
|
||||
// menu javascript
|
||||
"/scripts/menu.js",
|
||||
// webdav javascript
|
||||
"/scripts/webdav.js",
|
||||
// base yahoo file
|
||||
"/scripts/ajax/yahoo/yahoo/yahoo-min.js",
|
||||
// io handling (AJAX)
|
||||
"/scripts/ajax/yahoo/connection/connection-min.js",
|
||||
// event handling
|
||||
"/scripts/ajax/yahoo/event/event-min.js",
|
||||
// mootools
|
||||
"/scripts/ajax/mootools.v1.11.js",
|
||||
// common Alfresco util methods
|
||||
"/scripts/ajax/common.js",
|
||||
// pop-up panel helper objects
|
||||
"/scripts/ajax/summary-info.js",
|
||||
// ajax pickers
|
||||
"/scripts/ajax/picker.js",
|
||||
"/scripts/ajax/tagger.js",
|
||||
// validation handling
|
||||
"/scripts/validation.js"
|
||||
};
|
||||
|
||||
private final static String[] CSS =
|
||||
{
|
||||
"/css/main.css",
|
||||
"/css/picker.css"
|
||||
};
|
||||
|
||||
/**
|
||||
* 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_COPY = "Certified and supported. Alfresco Software Inc. © 2005-2013 All rights reserved.";
|
||||
|
||||
private final static Log logger = LogFactory.getLog(PageTag.class);
|
||||
private static String alfresco = null;
|
||||
private static String loginPage = null;
|
||||
|
||||
private long startTime = 0;
|
||||
private String title;
|
||||
private String titleId;
|
||||
private String doctypeRootElement;
|
||||
private String doctypePublic;
|
||||
private String doctypeSystem;
|
||||
|
||||
/**
|
||||
* @return The title for the page
|
||||
*/
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param title Sets the page title
|
||||
*/
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The title message Id for the page
|
||||
*/
|
||||
public String getTitleId()
|
||||
{
|
||||
return titleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param titleId Sets the page title message Id
|
||||
*/
|
||||
public void setTitleId(String titleId)
|
||||
{
|
||||
this.titleId = titleId;
|
||||
}
|
||||
|
||||
public String getDoctypeRootElement()
|
||||
{
|
||||
return this.doctypeRootElement;
|
||||
}
|
||||
|
||||
public void setDoctypeRootElement(final String doctypeRootElement)
|
||||
{
|
||||
this.doctypeRootElement = doctypeRootElement;
|
||||
}
|
||||
|
||||
public String getDoctypePublic()
|
||||
{
|
||||
return this.doctypePublic;
|
||||
}
|
||||
|
||||
public void setDoctypePublic(final String doctypePublic)
|
||||
{
|
||||
this.doctypePublic = doctypePublic;
|
||||
}
|
||||
|
||||
public String getDoctypeSystem()
|
||||
{
|
||||
return this.doctypeSystem;
|
||||
}
|
||||
|
||||
public void setDoctypeSystem(final String doctypeSystem)
|
||||
{
|
||||
this.doctypeSystem = doctypeSystem;
|
||||
}
|
||||
|
||||
public void release()
|
||||
{
|
||||
super.release();
|
||||
this.title = null;
|
||||
this.titleId = null;
|
||||
this.doctypeRootElement = null;
|
||||
this.doctypeSystem = null;
|
||||
this.doctypePublic = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
|
||||
*/
|
||||
public int doStartTag() throws JspException
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
startTime = System.currentTimeMillis();
|
||||
|
||||
try
|
||||
{
|
||||
String reqPath = ((HttpServletRequest)pageContext.getRequest()).getContextPath();
|
||||
Writer out = pageContext.getOut();
|
||||
|
||||
if (!Application.inPortalServer())
|
||||
{
|
||||
if (this.getDoctypeRootElement() != null &&
|
||||
this.getDoctypePublic() != null)
|
||||
{
|
||||
out.write("<!DOCTYPE ");
|
||||
out.write(this.getDoctypeRootElement().toLowerCase());
|
||||
out.write(" PUBLIC \"" + this.getDoctypePublic() + "\"");
|
||||
if (this.getDoctypeSystem() != null)
|
||||
{
|
||||
out.write(" \"" + this.getDoctypeSystem() + "\"");
|
||||
}
|
||||
out.write(">\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
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("<html><head>");
|
||||
out.write("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\" />\n");
|
||||
out.write("<title>");
|
||||
if (this.titleId != null && this.titleId.length() != 0)
|
||||
{
|
||||
out.write(Utils.encode(Application.getMessage(pageContext.getSession(), this.titleId)));
|
||||
}
|
||||
else if (this.title != null && this.title.length() != 0)
|
||||
{
|
||||
out.write(Utils.encode(this.title));
|
||||
}
|
||||
else
|
||||
{
|
||||
out.write("Alfresco Web Client");
|
||||
}
|
||||
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");
|
||||
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n");
|
||||
}
|
||||
|
||||
// CSS style includes
|
||||
for (final String css : PageTag.CSS)
|
||||
{
|
||||
out.write(STYLES_START);
|
||||
out.write(reqPath);
|
||||
out.write(css);
|
||||
out.write(STYLES_MAIN);
|
||||
}
|
||||
|
||||
// JavaScript includes
|
||||
for (final String s : PageTag.SCRIPTS)
|
||||
{
|
||||
out.write(SCRIPTS_START);
|
||||
out.write(reqPath);
|
||||
out.write(s);
|
||||
out.write(SCRIPTS_END);
|
||||
}
|
||||
|
||||
out.write("<script type=\"text/javascript\">"); // start - generate naked javascript code
|
||||
|
||||
// get client config to determine how the JavaScript setContextPath should behave
|
||||
ClientConfigElement clientConfig = Application.getClientConfig(pageContext.getServletContext());
|
||||
|
||||
// set the context path used by some Alfresco script objects
|
||||
if (clientConfig != null && clientConfig.getCheckContextAgainstPath())
|
||||
{
|
||||
out.write("setCheckContextAgainstPath(true);");
|
||||
}
|
||||
out.write("setContextPath('");
|
||||
out.write(reqPath);
|
||||
out.write("');");
|
||||
|
||||
// generate window onload code
|
||||
generateWindowOnloadCode(out);
|
||||
|
||||
out.write("</script>\n"); // end - generate naked javascript code
|
||||
|
||||
if (!Application.inPortalServer())
|
||||
{
|
||||
out.write("</head>");
|
||||
out.write("<body>\n");
|
||||
}
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
throw new JspException(ioe.toString());
|
||||
}
|
||||
|
||||
return EVAL_BODY_INCLUDE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see javax.servlet.jsp.tagext.TagSupport#doEndTag()
|
||||
*/
|
||||
public int doEndTag() throws JspException
|
||||
{
|
||||
try
|
||||
{
|
||||
HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
|
||||
if (req.getRequestURI().endsWith(getLoginPage()) == false)
|
||||
{
|
||||
pageContext.getOut().write(getAlfrescoButton());
|
||||
}
|
||||
|
||||
if (!Application.inPortalServer())
|
||||
{
|
||||
pageContext.getOut().write("\n</body></html>");
|
||||
}
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
throw new JspException(ioe.toString());
|
||||
}
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
long endTime = System.currentTimeMillis();
|
||||
logger.debug("Time to generate page: " + (endTime - startTime) + "ms");
|
||||
}
|
||||
|
||||
return super.doEndTag();
|
||||
}
|
||||
|
||||
private String getLoginPage()
|
||||
{
|
||||
if (PageTag.loginPage == null)
|
||||
{
|
||||
PageTag.loginPage = Application.getLoginPage(pageContext.getServletContext());
|
||||
}
|
||||
|
||||
return PageTag.loginPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Please ensure you understand the terms of the license before changing the contents of this file.
|
||||
*/
|
||||
|
||||
private String getAlfrescoButton()
|
||||
{
|
||||
if (PageTag.alfresco == null)
|
||||
{
|
||||
final String reqPath = ((HttpServletRequest)pageContext.getRequest()).getContextPath();
|
||||
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 + "'/>" +
|
||||
"</a></td><td align='center'>" +
|
||||
"<span class='footer'>" + ALF_COPY +
|
||||
"</span></td><td></td></tr></table></center>");
|
||||
}
|
||||
return PageTag.alfresco;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method generate code for setting window.onload reference as
|
||||
* we need to open WebDav or CIFS URL in a new window.
|
||||
*
|
||||
* Executes via javascript code(function onloadFunc()) in "onload.js" include file.
|
||||
*
|
||||
* @return Returns window.onload javascript code
|
||||
*/
|
||||
private static void generateWindowOnloadCode(Writer out)
|
||||
throws IOException
|
||||
{
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
if (fc != null)
|
||||
{
|
||||
CCProperties ccProps = (CCProperties)FacesHelper.getManagedBean(fc, "CCProperties");
|
||||
if (ccProps.getWebdavUrl() != null || ccProps.getCifsPath() != null)
|
||||
{
|
||||
out.write("window.onload=function(){onloadFunc(\"");
|
||||
if (ccProps.getWebdavUrl() != null)
|
||||
{
|
||||
out.write(ccProps.getWebdavUrl());
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2005-2013 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* 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
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco 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 Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* There is an Enterprise overlay for this file
|
||||
*/
|
||||
|
||||
package org.alfresco.web.ui.repo.tag;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
import javax.faces.context.FacesContext;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
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.bean.coci.CCProperties;
|
||||
import org.alfresco.web.config.ClientConfigElement;
|
||||
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
|
||||
*/
|
||||
public class PageTag extends TagSupport
|
||||
{
|
||||
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 STYLES_START = "<link rel=\"stylesheet\" href=\"";
|
||||
private final static String STYLES_MAIN = "\" type=\"text/css\">\n";
|
||||
|
||||
private final static String[] SCRIPTS =
|
||||
{
|
||||
// menu javascript
|
||||
"/scripts/menu.js",
|
||||
// webdav javascript
|
||||
"/scripts/webdav.js",
|
||||
// base yahoo file
|
||||
"/scripts/ajax/yahoo/yahoo/yahoo-min.js",
|
||||
// io handling (AJAX)
|
||||
"/scripts/ajax/yahoo/connection/connection-min.js",
|
||||
// event handling
|
||||
"/scripts/ajax/yahoo/event/event-min.js",
|
||||
// mootools
|
||||
"/scripts/ajax/mootools.v1.11.js",
|
||||
// common Alfresco util methods
|
||||
"/scripts/ajax/common.js",
|
||||
// pop-up panel helper objects
|
||||
"/scripts/ajax/summary-info.js",
|
||||
// ajax pickers
|
||||
"/scripts/ajax/picker.js",
|
||||
"/scripts/ajax/tagger.js",
|
||||
// validation handling
|
||||
"/scripts/validation.js"
|
||||
};
|
||||
|
||||
private final static String[] CSS =
|
||||
{
|
||||
"/css/main.css",
|
||||
"/css/picker.css"
|
||||
};
|
||||
|
||||
/**
|
||||
* Please ensure you understand the terms of the license before changing the contents of this file.
|
||||
*/
|
||||
|
||||
private final static String ALF_LOGO_HTTP = "http://www.alfresco.com/assets/images/logos/community-4.2.png";
|
||||
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 String ALF_TEXT = "Alfresco Community";
|
||||
private final static String ALF_COPY = "Supplied free of charge with " +
|
||||
"<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>, " +
|
||||
"<a class='footer' href='http://www.alfresco.com/services/support/communityterms/#maintenance'>no maintenance</a>, " +
|
||||
"<a class='footer' href='http://www.alfresco.com/services/support/communityterms/#warranty'>no warranty</a> and " +
|
||||
"<a class='footer' href='http://www.alfresco.com/services/support/communityterms/#indemnity'>no indemnity</a> by " +
|
||||
"<a class='footer' href='http://www.alfresco.com'>Alfresco</a> or its " +
|
||||
"<a class='footer' href='http://www.alfresco.com/partners/'>Certified Partners</a>. " +
|
||||
"<a class='footer' href='http://www.alfresco.com/services/support/'>Click here for support</a>. " +
|
||||
"Alfresco Software Inc. © 2005-2013 All rights reserved.";
|
||||
|
||||
private final static Log logger = LogFactory.getLog(PageTag.class);
|
||||
private static String alfresco = null;
|
||||
private static String loginPage = null;
|
||||
|
||||
private long startTime = 0;
|
||||
private String title;
|
||||
private String titleId;
|
||||
private String doctypeRootElement;
|
||||
private String doctypePublic;
|
||||
private String doctypeSystem;
|
||||
|
||||
/**
|
||||
* @return The title for the page
|
||||
*/
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param title Sets the page title
|
||||
*/
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The title message Id for the page
|
||||
*/
|
||||
public String getTitleId()
|
||||
{
|
||||
return titleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param titleId Sets the page title message Id
|
||||
*/
|
||||
public void setTitleId(String titleId)
|
||||
{
|
||||
this.titleId = titleId;
|
||||
}
|
||||
|
||||
public String getDoctypeRootElement()
|
||||
{
|
||||
return this.doctypeRootElement;
|
||||
}
|
||||
|
||||
public void setDoctypeRootElement(final String doctypeRootElement)
|
||||
{
|
||||
this.doctypeRootElement = doctypeRootElement;
|
||||
}
|
||||
|
||||
public String getDoctypePublic()
|
||||
{
|
||||
return this.doctypePublic;
|
||||
}
|
||||
|
||||
public void setDoctypePublic(final String doctypePublic)
|
||||
{
|
||||
this.doctypePublic = doctypePublic;
|
||||
}
|
||||
|
||||
public String getDoctypeSystem()
|
||||
{
|
||||
return this.doctypeSystem;
|
||||
}
|
||||
|
||||
public void setDoctypeSystem(final String doctypeSystem)
|
||||
{
|
||||
this.doctypeSystem = doctypeSystem;
|
||||
}
|
||||
|
||||
public void release()
|
||||
{
|
||||
super.release();
|
||||
this.title = null;
|
||||
this.titleId = null;
|
||||
this.doctypeRootElement = null;
|
||||
this.doctypeSystem = null;
|
||||
this.doctypePublic = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
|
||||
*/
|
||||
public int doStartTag() throws JspException
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
startTime = System.currentTimeMillis();
|
||||
|
||||
try
|
||||
{
|
||||
String reqPath = ((HttpServletRequest)pageContext.getRequest()).getContextPath();
|
||||
Writer out = pageContext.getOut();
|
||||
|
||||
if (!Application.inPortalServer())
|
||||
{
|
||||
if (this.getDoctypeRootElement() != null &&
|
||||
this.getDoctypePublic() != null)
|
||||
{
|
||||
out.write("<!DOCTYPE ");
|
||||
out.write(this.getDoctypeRootElement().toLowerCase());
|
||||
out.write(" PUBLIC \"" + this.getDoctypePublic() + "\"");
|
||||
if (this.getDoctypeSystem() != null)
|
||||
{
|
||||
out.write(" \"" + this.getDoctypeSystem() + "\"");
|
||||
}
|
||||
out.write(">\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
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("<html><head>");
|
||||
out.write("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\" />\n");
|
||||
out.write("<title>");
|
||||
if (this.titleId != null && this.titleId.length() != 0)
|
||||
{
|
||||
out.write(Utils.encode(Application.getMessage(pageContext.getSession(), this.titleId)));
|
||||
}
|
||||
else if (this.title != null && this.title.length() != 0)
|
||||
{
|
||||
out.write(Utils.encode(this.title));
|
||||
}
|
||||
else
|
||||
{
|
||||
out.write("Alfresco Web Client");
|
||||
}
|
||||
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");
|
||||
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n");
|
||||
}
|
||||
|
||||
// CSS style includes
|
||||
for (final String css : PageTag.CSS)
|
||||
{
|
||||
out.write(STYLES_START);
|
||||
out.write(reqPath);
|
||||
out.write(css);
|
||||
out.write(STYLES_MAIN);
|
||||
}
|
||||
|
||||
// JavaScript includes
|
||||
for (final String s : PageTag.SCRIPTS)
|
||||
{
|
||||
out.write(SCRIPTS_START);
|
||||
out.write(reqPath);
|
||||
out.write(s);
|
||||
out.write(SCRIPTS_END);
|
||||
}
|
||||
|
||||
out.write("<script type=\"text/javascript\">"); // start - generate naked javascript code
|
||||
|
||||
// get client config to determine how the JavaScript setContextPath should behave
|
||||
ClientConfigElement clientConfig = Application.getClientConfig(pageContext.getServletContext());
|
||||
|
||||
// set the context path used by some Alfresco script objects
|
||||
if (clientConfig != null && clientConfig.getCheckContextAgainstPath())
|
||||
{
|
||||
out.write("setCheckContextAgainstPath(true);");
|
||||
}
|
||||
out.write("setContextPath('");
|
||||
out.write(reqPath);
|
||||
out.write("');");
|
||||
|
||||
// generate window onload code
|
||||
generateWindowOnloadCode(out);
|
||||
|
||||
out.write("</script>\n"); // end - generate naked javascript code
|
||||
|
||||
if (!Application.inPortalServer())
|
||||
{
|
||||
out.write("</head>");
|
||||
out.write("<body>\n");
|
||||
}
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
throw new JspException(ioe.toString());
|
||||
}
|
||||
|
||||
return EVAL_BODY_INCLUDE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see javax.servlet.jsp.tagext.TagSupport#doEndTag()
|
||||
*/
|
||||
public int doEndTag() throws JspException
|
||||
{
|
||||
try
|
||||
{
|
||||
HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
|
||||
if (req.getRequestURI().endsWith(getLoginPage()) == false)
|
||||
{
|
||||
pageContext.getOut().write(getAlfrescoButton());
|
||||
}
|
||||
|
||||
if (!Application.inPortalServer())
|
||||
{
|
||||
pageContext.getOut().write("\n</body></html>");
|
||||
}
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
throw new JspException(ioe.toString());
|
||||
}
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
long endTime = System.currentTimeMillis();
|
||||
logger.debug("Time to generate page: " + (endTime - startTime) + "ms");
|
||||
}
|
||||
|
||||
return super.doEndTag();
|
||||
}
|
||||
|
||||
private String getLoginPage()
|
||||
{
|
||||
if (PageTag.loginPage == null)
|
||||
{
|
||||
PageTag.loginPage = Application.getLoginPage(pageContext.getServletContext());
|
||||
}
|
||||
|
||||
return PageTag.loginPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Please ensure you understand the terms of the license before changing the contents of this file.
|
||||
*/
|
||||
|
||||
private String getAlfrescoButton()
|
||||
{
|
||||
if (PageTag.alfresco == null)
|
||||
{
|
||||
final HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
|
||||
PageTag.alfresco = ("<center><table style='margin: 0px auto;'><tr><td>" +
|
||||
"<a href='" + ALF_URL + "'>" +
|
||||
"<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) +
|
||||
"'>" +"</a></td><td align='center'>" +
|
||||
"<span class='footer'>" + ALF_COPY +
|
||||
"</span></td><td></td></tr></table></center>");
|
||||
}
|
||||
return PageTag.alfresco;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method generate code for setting window.onload reference as
|
||||
* we need to open WebDav or CIFS URL in a new window.
|
||||
*
|
||||
* Executes via javascript code(function onloadFunc()) in "onload.js" include file.
|
||||
*
|
||||
* @return Returns window.onload javascript code
|
||||
*/
|
||||
private static void generateWindowOnloadCode(Writer out)
|
||||
throws IOException
|
||||
{
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
if (fc != null)
|
||||
{
|
||||
CCProperties ccProps = (CCProperties)FacesHelper.getManagedBean(fc, "CCProperties");
|
||||
if (ccProps.getWebdavUrl() != null || ccProps.getCifsPath() != null)
|
||||
{
|
||||
out.write("window.onload=function(){onloadFunc(\"");
|
||||
if (ccProps.getWebdavUrl() != null)
|
||||
{
|
||||
out.write(ccProps.getWebdavUrl());
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,193 +1,209 @@
|
||||
<%--
|
||||
* Copyright (C) 2005-2013 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* 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
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco 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 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/core" prefix="f" %>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||
<%@ taglib uri="/WEB-INF/alfresco.tld" prefix="a" %>
|
||||
<%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %>
|
||||
|
||||
<%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %>
|
||||
<%@ page isELIgnored="false" %>
|
||||
<%@ page import="org.alfresco.web.ui.common.PanelGenerator" %>
|
||||
|
||||
<f:verbatim>
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tr>
|
||||
<td width="100%" align="center">
|
||||
|
||||
<div style="padding:8px">
|
||||
<img src="<%=request.getContextPath()%>/images/logo/alfresco3d.jpg" alt="Alfresco" width="520" height="168">
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<a href="http://www.alfresco.com/" class="title" target="new">http://www.alfresco.com</a>
|
||||
<p>
|
||||
Alfresco Software Inc. © 2005-2013 All rights reserved. <a href="http://www.alfresco.com/legal/" target="new">Legal and License</a>
|
||||
</div>
|
||||
|
||||
<div style="padding:4px" class="mainSubTitle">
|
||||
Alfresco Software utilises components or libraries from the following software vendors and companies
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
<div style="padding:4px" class="mainSubTitle">
|
||||
Alfresco Development tools:
|
||||
</div>
|
||||
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
<div style="padding:4px" class="mainSubTitle">
|
||||
Alfresco Software contributors
|
||||
</div>
|
||||
|
||||
<table border="0" cellspacing="2" cellpadding="2">
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Meta Data Extraction Framework and PDF/Open Office Format meta data extraction:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
Jesper Steen Møller
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Open Document Format meta data extraction:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
Antti Jokipii
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Multilingual Document Management:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
CEC
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Category Browsing:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
Atol Conseils et Développements
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Fixes and improvements:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
Ray Gauss II,
|
||||
Dave Gillen,
|
||||
Michael Kriske,
|
||||
Carina Lansing,
|
||||
DMC.de,
|
||||
Optaros
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Supported language packs:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
French, German, Italian, (European) Spanish and Japanese.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</f:verbatim>
|
||||
<%--
|
||||
* Copyright (C) 2005-2013 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* 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
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco 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 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/core" prefix="f" %>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||||
<%@ taglib uri="/WEB-INF/alfresco.tld" prefix="a" %>
|
||||
<%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %>
|
||||
|
||||
<%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %>
|
||||
<%@ page isELIgnored="false" %>
|
||||
<%@ page import="org.alfresco.web.ui.common.PanelGenerator" %>
|
||||
|
||||
<f:verbatim>
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tr>
|
||||
<td width="100%" align="center">
|
||||
|
||||
<div style="padding:8px">
|
||||
<img src="<%=request.getContextPath()%>/images/logo/alfresco3d.jpg" alt="Alfresco" width="520" height="168">
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<a href="http://www.alfresco.com/" class="title" target="new">http://www.alfresco.com</a>
|
||||
<p>
|
||||
Alfresco Software Inc. © 2005-2013 All rights reserved. <a href="http://www.alfresco.com/legal/" target="new">Legal and License</a>
|
||||
</div>
|
||||
|
||||
<div style="padding:4px" class="mainSubTitle">
|
||||
Alfresco Software utilises components or libraries from the following software vendors and companies
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
<div style="padding:4px" class="mainSubTitle">
|
||||
Alfresco Development tools:
|
||||
</div>
|
||||
|
||||
<div style="padding:4px">
|
||||
<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>
|
||||
</span>
|
||||
<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>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
<div style="padding:4px" class="mainSubTitle">
|
||||
Alfresco Software contributors
|
||||
</div>
|
||||
|
||||
<table border="0" cellspacing="2" cellpadding="2">
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Meta Data Extraction Framework and PDF/Open Office Format meta data extraction:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
Jesper Steen Møller
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Open Document Format meta data extraction:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
Antti Jokipii
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Multilingual Document Management:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
CEC
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Category Browsing:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
Atol Conseils et Développements
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Fixes and improvements:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
Ray Gauss II,
|
||||
Dave Gillen,
|
||||
Michael Kriske,
|
||||
Carina Lansing,
|
||||
DMC.de,
|
||||
Optaros
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" align="right">
|
||||
Language and translation packs:
|
||||
</td>
|
||||
<td> • </td>
|
||||
<td width="50%">
|
||||
Camille Bégnis,
|
||||
Andrejus Chaliapinas,
|
||||
Laurent Genier,
|
||||
Antti Jokipii,
|
||||
Henning Kristensen,
|
||||
Betty Mai,
|
||||
Fabian Mandelbaum,
|
||||
Theodoros Papageorgiou,
|
||||
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>
|
||||
|
Reference in New Issue
Block a user