Author: kwright
Date: Mon Mar  2 22:54:44 2015
New Revision: 1663458

URL: http://svn.apache.org/r1663458
Log:
Commit patch 1

Added:
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Body.html
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Header.js
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Body.html
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Header.js
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/viewConfiguration_Job.html
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/viewConfiguration_Repo.html
Modified:
    manifoldcf/branches/CONNECTORS-1160/CHANGES.txt
    
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java

Modified: manifoldcf/branches/CONNECTORS-1160/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1160/CHANGES.txt?rev=1663458&r1=1663457&r2=1663458&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1160/CHANGES.txt (original)
+++ manifoldcf/branches/CONNECTORS-1160/CHANGES.txt Mon Mar  2 22:54:44 2015
@@ -3,6 +3,9 @@ $Id$
 
 ======================= 2.1-dev =====================
 
+CONNECTORS-1160: Update Livelink Connector HTML String to Velocity Template
+(Kishore Kumar)
+
 CONNECTORS-1166: Delete link doesn't work on listtransformations
 UI page.
 (Shinichiro Abe, Karl Wright)

Modified: 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java?rev=1663458&r1=1663457&r2=1663458&view=diff
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
 (original)
+++ 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/livelink/LivelinkConnector.java
 Mon Mar  2 22:54:44 2015
@@ -93,6 +93,21 @@ public class LivelinkConnector extends o
 {
   public static final String _rcsid = "@(#)$Id: LivelinkConnector.java 996524 
2010-09-13 13:38:01Z kwright $";
 
+  //Forward to the javascript to check the configuration parameters.
+  private static final String EDIT_CONFIG_JOB_HEADER_FORWARD = 
"editConfiguration_Job_Header.js";
+  private static final String EDIT_CONFIG_REPO_HEADER_FORWARD = 
"editConfiguration_Repo_Header.js";
+
+  //Forward to the HTML template to edit the configuration parameters.
+  private static final String EDIT_CONFIG_JOB_BODY_FORWARD = 
"editConfiguration_Job_Body.html";
+  private static final String EDIT_CONFIG_REPO_BODY_FORWARD = 
"editConfiguration_Repo_Body.html";
+
+  //Forward to the HTML template to view the configuration parameters.
+  private static final String VIEW_CONFIG_JOB_BODY_FORWARD = 
"viewConfiguration_Job.html";
+  private static final String VIEW_CONFIG_REPO_BODY_FORWARD = 
"viewConfiguration_Repo.html";
+
+  //Tab name parameter for managing the view of the Web UI.
+  private static final String TAB_NAME_PARAM = "TabName";
+
   // Activities we will report on
   private final static String ACTIVITY_SEED = "find documents";
   private final static String ACTIVITY_FETCH = "fetch document";
@@ -1528,138 +1543,10 @@ public class LivelinkConnector extends o
     tabsArray.add(Messages.getString(locale,"LivelinkConnector.Server"));
     
tabsArray.add(Messages.getString(locale,"LivelinkConnector.DocumentAccess"));
     tabsArray.add(Messages.getString(locale,"LivelinkConnector.DocumentView"));
-    out.print(
-"<script type=\"text/javascript\">\n"+
-"<!--\n"+
-"function ServerDeleteCertificate(aliasName)\n"+
-"{\n"+
-"  editconnection.serverkeystorealias.value = aliasName;\n"+
-"  editconnection.serverconfigop.value = \"Delete\";\n"+
-"  postForm();\n"+
-"}\n"+
-"\n"+
-"function ServerAddCertificate()\n"+
-"{\n"+
-"  if (editconnection.servercertificate.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.ChooseACertificateFile")+"\");\n"+
-"    editconnection.servercertificate.focus();\n"+
-"  }\n"+
-"  else\n"+
-"  {\n"+
-"    editconnection.serverconfigop.value = \"Add\";\n"+
-"    postForm();\n"+
-"  }\n"+
-"}\n"+
-"\n"+
-"function IngestDeleteCertificate(aliasName)\n"+
-"{\n"+
-"  editconnection.ingestkeystorealias.value = aliasName;\n"+
-"  editconnection.ingestconfigop.value = \"Delete\";\n"+
-"  postForm();\n"+
-"}\n"+
-"\n"+
-"function IngestAddCertificate()\n"+
-"{\n"+
-"  if (editconnection.ingestcertificate.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.ChooseACertificateFile")+"\");\n"+
-"    editconnection.ingestcertificate.focus();\n"+
-"  }\n"+
-"  else\n"+
-"  {\n"+
-"    editconnection.ingestconfigop.value = \"Add\";\n"+
-"    postForm();\n"+
-"  }\n"+
-"}\n"+
-"\n"+
-"function checkConfig()\n"+
-"{\n"+
-"  if (editconnection.serverport.value != \"\" && 
!isInteger(editconnection.serverport.value))\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.AValidNumberIsRequired")+"\");\n"+
-"    editconnection.serverport.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  if (editconnection.ingestport.value != \"\" && 
!isInteger(editconnection.ingestport.value))\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.AValidNumberOrBlankIsRequired")+"\");\n"+
-"    editconnection.ingestport.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  if (editconnection.viewport.value != \"\" && 
!isInteger(editconnection.viewport.value))\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.AValidNumberOrBlankIsRequired")+"\");\n"+
-"    editconnection.viewport.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  return true;\n"+
-"}\n"+
-"\n"+
-"function checkConfigForSave()\n"+
-"{\n"+
-"  if (editconnection.servername.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.EnterALivelinkServerName")+"\");\n"+
-"    SelectTab(\"" + 
Messages.getBodyJavascriptString(locale,"LivelinkConnector.Server") + "\");\n"+
-"    editconnection.servername.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  if (editconnection.serverport.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.AServerPortNumberIsRequired")+"\");\n"+
-"    SelectTab(\"" + 
Messages.getBodyJavascriptString(locale,"LivelinkConnector.Server") + "\");\n"+
-"    editconnection.serverport.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  if (editconnection.serverhttpcgipath.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.EnterTheServerCgiPathToLivelink")+"\");\n"+
-"    SelectTab(\"" + 
Messages.getBodyJavascriptString(locale,"LivelinkConnector.Server") + "\");\n"+
-"    editconnection.serverhttpcgipath.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  if (editconnection.serverhttpcgipath.value.substring(0,1) != \"/\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.TheServerCgiPathMustBeginWithACharacter")+"\");\n"+
-"    SelectTab(\"" + 
Messages.getBodyJavascriptString(locale,"LivelinkConnector.Server") + "\");\n"+
-"    editconnection.serverhttpcgipath.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  if (editconnection.viewprotocol.value == \"\" && 
editconnection.ingestprotocol.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.SelectAViewProtocol")+"\");\n"+
-"    SelectTab(\"" + 
Messages.getBodyJavascriptString(locale,"LivelinkConnector.DocumentView") + 
"\");\n"+
-"    editconnection.viewprotocol.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  if (editconnection.viewcgipath.value == \"\" && 
editconnection.ingestcgipath.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.EnterTheViewCgiPathToLivelink")+"\");\n"+
-"    SelectTab(\"" + 
Messages.getBodyJavascriptString(locale,"LivelinkConnector.DocumentView") + 
"\");\n"+
-"    editconnection.viewcgipath.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  if (editconnection.ingestcgipath.value != \"\" && 
editconnection.ingestcgipath.value.substring(0,1) != \"/\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.TheIngestCgiPathMustBeBlankOrBeginWithACharacter")+"\");\n"+
-"    SelectTab(\"" + 
Messages.getBodyJavascriptString(locale,"LivelinkConnector.DocumentAccess") + 
"\");\n"+
-"    editconnection.ingestcgipath.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  if (editconnection.viewcgipath.value != \"\" && 
editconnection.viewcgipath.value.substring(0,1) != \"/\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.TheViewCgiPathMustBeBlankOrBeginWithACharacter")+"\");\n"+
-"    SelectTab(\"" + 
Messages.getBodyJavascriptString(locale,"LivelinkConnector.DocumentView") + 
"\");\n"+
-"    editconnection.viewcgipath.focus();\n"+
-"    return false;\n"+
-"  }\n"+
-"  return true;\n"+
-"}\n"+
-"\n"+
-"//-->\n"+
-"</script>\n"
-    );
+
+    Map<String, String> paramMap = new HashMap<>();
+
+    Messages.outputResourceWithVelocity(out, locale, 
EDIT_CONFIG_REPO_HEADER_FORWARD, paramMap, true);
   }
   
   /** Output the configuration body section.
@@ -1675,288 +1562,119 @@ public class LivelinkConnector extends o
   public void outputConfigurationBody(IThreadContext threadContext, 
IHTTPOutput out,
     Locale locale, ConfigParams parameters, String tabName)
     throws ManifoldCFException, IOException
-  {
-    
+  {    
+    Map<String, Object> paramMap = new HashMap<>();
+    paramMap.put(TAB_NAME_PARAM,tabName);
+
     // LAPI parameters
     String serverProtocol = 
parameters.getParameter(LiveLinkParameters.serverProtocol);
     if (serverProtocol == null)
       serverProtocol = "internal";
+    paramMap.put("serverProtocol",serverProtocol);
     String serverName = parameters.getParameter(LiveLinkParameters.serverName);
     if (serverName == null)
       serverName = "localhost";
+    paramMap.put("serverName",serverName);
     String serverPort = parameters.getParameter(LiveLinkParameters.serverPort);
     if (serverPort == null)
       serverPort = "2099";
+    paramMap.put("serverPort",serverPort);
     String serverUserName = 
parameters.getParameter(LiveLinkParameters.serverUsername);
-    if (serverUserName == null)
-      serverUserName = "";
+    paramMap.put("serverUserName",serverUserName);
     String serverPassword = 
parameters.getObfuscatedParameter(LiveLinkParameters.serverPassword);
-    if (serverPassword == null)
-      serverPassword = "";
-    else
+    if (serverPassword != null)
       serverPassword = out.mapPasswordToKey(serverPassword);
+    paramMap.put("serverPassword",serverPassword);
     String serverHTTPCgiPath = 
parameters.getParameter(LiveLinkParameters.serverHTTPCgiPath);
     if (serverHTTPCgiPath == null)
       serverHTTPCgiPath = "/livelink/livelink.exe";
+    paramMap.put("serverHTTPCgiPath",serverHTTPCgiPath);
     String serverHTTPNTLMDomain = 
parameters.getParameter(LiveLinkParameters.serverHTTPNTLMDomain);
-    if (serverHTTPNTLMDomain == null)
-      serverHTTPNTLMDomain = "";
+    paramMap.put("serverHTTPNTLMDomain",serverHTTPNTLMDomain);
     String serverHTTPNTLMUserName = 
parameters.getParameter(LiveLinkParameters.serverHTTPNTLMUsername);
-    if (serverHTTPNTLMUserName == null)
-      serverHTTPNTLMUserName = "";
+    paramMap.put("serverHTTPNTLMUserName",serverHTTPNTLMUserName);
     String serverHTTPNTLMPassword = 
parameters.getObfuscatedParameter(LiveLinkParameters.serverHTTPNTLMPassword);
-    if (serverHTTPNTLMPassword == null)
-      serverHTTPNTLMPassword = "";
-    else
+    if (serverHTTPNTLMPassword != null)
       serverHTTPNTLMPassword = out.mapPasswordToKey(serverHTTPNTLMPassword);
+    paramMap.put("serverHTTPNTLMPassword",serverHTTPNTLMPassword);
     String serverHTTPSKeystore = 
parameters.getParameter(LiveLinkParameters.serverHTTPSKeystore);
     IKeystoreManager localServerHTTPSKeystore;
     if (serverHTTPSKeystore == null)
       localServerHTTPSKeystore = KeystoreManagerFactory.make("");
     else
       localServerHTTPSKeystore = 
KeystoreManagerFactory.make("",serverHTTPSKeystore);
+    paramMap.put("serverHTTPSKeystore",serverHTTPSKeystore);
 
     // Document access parameters
     String ingestProtocol = 
parameters.getParameter(LiveLinkParameters.ingestProtocol);
-    if (ingestProtocol == null)
-      ingestProtocol = "";
+    paramMap.put("ingestProtocol",ingestProtocol);
     String ingestPort = parameters.getParameter(LiveLinkParameters.ingestPort);
-    if (ingestPort == null)
-      ingestPort = "";
+    paramMap.put("ingestPort",ingestPort);
     String ingestCgiPath = 
parameters.getParameter(LiveLinkParameters.ingestCgiPath);
-    if (ingestCgiPath == null)
-      ingestCgiPath = "";
+    paramMap.put("ingestCgiPath",ingestCgiPath);
     String ingestNtlmUsername = 
parameters.getParameter(LiveLinkParameters.ingestNtlmUsername);
-    if (ingestNtlmUsername == null)
-      ingestNtlmUsername = "";
+    paramMap.put("ingestNtlmUsername",ingestNtlmUsername);
     String ingestNtlmPassword = 
parameters.getObfuscatedParameter(LiveLinkParameters.ingestNtlmPassword);
-    if (ingestNtlmPassword == null)
-      ingestNtlmPassword = "";
-    else
+    if (ingestNtlmPassword != null)
       ingestNtlmPassword = out.mapPasswordToKey(ingestNtlmPassword);
+    paramMap.put("ingestNtlmPassword",ingestNtlmPassword);
     String ingestNtlmDomain = 
parameters.getParameter(LiveLinkParameters.ingestNtlmDomain);
-    if (ingestNtlmDomain == null)
-      ingestNtlmDomain = "";
+    paramMap.put("ingestNtlmDomain",ingestNtlmDomain);
     String ingestKeystore = 
parameters.getParameter(LiveLinkParameters.ingestKeystore);
     IKeystoreManager localIngestKeystore;
     if (ingestKeystore == null)
       localIngestKeystore = KeystoreManagerFactory.make("");
     else
       localIngestKeystore = KeystoreManagerFactory.make("",ingestKeystore);
-    
+    paramMap.put("localIngestKeystore",ingestKeystore);
+
     // Document view parameters
     String viewProtocol = 
parameters.getParameter(LiveLinkParameters.viewProtocol);
     if (viewProtocol == null)
       viewProtocol = "http";
+    paramMap.put("viewProtocol",viewProtocol);
     String viewServerName = 
parameters.getParameter(LiveLinkParameters.viewServerName);
-    if (viewServerName == null)
-      viewServerName = "";
+    paramMap.put("viewServerName",viewServerName);
     String viewPort = parameters.getParameter(LiveLinkParameters.viewPort);
-    if (viewPort == null)
-      viewPort = "";
+    paramMap.put("viewPort",viewPort);
     String viewCgiPath = 
parameters.getParameter(LiveLinkParameters.viewCgiPath);
     if (viewCgiPath == null)
       viewCgiPath = "/livelink/livelink.exe";
+    paramMap.put("viewCgiPath",viewCgiPath);
 
-    // The "Server" tab
-    // Always pass the whole keystore as a hidden.
-    out.print(
-"<input name=\"serverconfigop\" type=\"hidden\" value=\"Continue\"/>\n"
-    );
-    if (serverHTTPSKeystore != null)
-    {
-      out.print(
-"<input type=\"hidden\" name=\"serverhttpskeystoredata\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverHTTPSKeystore)+"\"/>\n"
-      );
-    }
     if (tabName.equals(Messages.getString(locale,"LivelinkConnector.Server")))
     {
-      out.print(
-"<table class=\"displaytable\">\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.ServerProtocol")+"</td>\n"+
-"    <td class=\"value\">\n"+
-"      <select name=\"serverprotocol\" size=\"2\">\n"+
-"        <option value=\"internal\" 
"+((serverProtocol.equals("internal"))?"selected=\"selected\"":"")+">"+Messages.getBodyString(locale,"LivelinkConnector.internal")+"</option>\n"+
-"        <option value=\"http\" 
"+((serverProtocol.equals("http"))?"selected=\"selected\"":"")+">http</option>\n"+
-"        <option value=\"https\" 
"+((serverProtocol.equals("https"))?"selected=\"selected\"":"")+">https</option>\n"+
-"      </select>\n"+
-"    </td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.ServerName")+"</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"text\" size=\"64\" name=\"servername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverName)+"\"/></td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.ServerPort")+"</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"text\" size=\"5\" name=\"serverport\" 
value=\""+serverPort+"\"/></td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.ServerUserName")+"</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"text\" size=\"32\" 
name=\"serverusername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverUserName)+"\"/></td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.ServerPassword")+"</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"password\" size=\"32\" 
name=\"serverpassword\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverPassword)+"\"/></td>\n"+
-"  </tr>\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.ServerHTTPCGIPath")+"</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"text\" size=\"32\" 
name=\"serverhttpcgipath\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverHTTPCgiPath)+"\"/></td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.ServerHTTPNTLMDomain")+"</nobr><br/><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.SetIfNTLMAuthDesired")+"</nobr></td>\n"+
-"    <td class=\"value\">\n"+
-"      <input type=\"text\" size=\"32\" name=\"serverhttpntlmdomain\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverHTTPNTLMDomain)+"\"/>\n"+
-"    </td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.ServerHTTPNTLMUserName")+"</nobr></td>\n"+
-"    <td class=\"value\">\n"+
-"      <input type=\"text\" size=\"32\" name=\"serverhttpntlmusername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverHTTPNTLMUserName)+"\"/>\n"+
-"    </td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.ServerHTTPNTLMPassword")+"</nobr></td>\n"+
-"    <td class=\"value\">\n"+
-"      <input type=\"password\" size=\"32\" name=\"serverhttpntlmpassword\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverHTTPNTLMPassword)+"\"/>\n"+
-"    </td>\n"+
-"  </tr>\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"
-      );
-      out.print(
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.ServerSSLCertificateList")+"</nobr></td>\n"+
-"    <td class=\"value\">\n"+
-"      <input type=\"hidden\" name=\"serverkeystorealias\" value=\"\"/>\n"+
-"      <table class=\"displaytable\">\n"
-      );
+      Boolean hasServerCertificates = false;
       // List the individual certificates in the store, with a delete button 
for each
       String[] contents = localServerHTTPSKeystore.getContents();
-      if (contents.length == 0)
-      {
-        out.print(
-"        <tr><td class=\"message\" 
colspan=\"2\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.NoCertificatesPresent")+"</nobr></td></tr>\n"
-        );
-      }
-      else
+      if (contents.length > 0)
       {
+        hasServerCertificates = true;
         int i = 0;
+        Map<String,String> serverCertificatesMap = new HashMap<>();
         while (i < contents.length)
         {
           String alias = contents[i];
           String description = localServerHTTPSKeystore.getDescription(alias);
           if (description.length() > 128)
             description = description.substring(0,125) + "...";
-          out.print(
-"        <tr>\n"+
-"          <td class=\"value\"><input type=\"button\" 
onclick='Javascript:ServerDeleteCertificate(\""+org.apache.manifoldcf.ui.util.Encoder.attributeJavascriptEscape(alias)+"\")'
 
alt=\""+Messages.getAttributeString(locale,"LivelinkConnector.DeleteCert")+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(alias)+"\"
 
value=\""+Messages.getAttributeString(locale,"LivelinkConnector.Delete")+"\"/></td>\n"+
-"          
<td>"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(description)+"</td>\n"+
-"        </tr>\n"
-          );
+          serverCertificatesMap.put(alias, description);
           i++;
         }
+        paramMap.put("serverCertificatesMap", serverCertificatesMap);
       }
-      out.print(
-"      </table>\n"+
-"      <input type=\"button\" onclick='Javascript:ServerAddCertificate()' 
alt=\""+Messages.getAttributeString(locale,"LivelinkConnector.AddCert")+"\" 
value=\""+Messages.getAttributeString(locale,"LivelinkConnector.Add")+"\"/>&nbsp;\n"+
-"      
"+Messages.getBodyString(locale,"LivelinkConnector.Certificate")+"<input 
name=\"servercertificate\" size=\"50\" type=\"file\"/>\n"+
-"    </td>\n"+
-"  </tr>\n"
-      );
-      out.print(
-"</table>\n"
-      );
-    }
-    else
-    {
-      // Hiddens for Server tab
-      out.print(
-"<input type=\"hidden\" name=\"serverprotocol\" 
value=\""+serverProtocol+"\"/>\n"+
-"<input type=\"hidden\" name=\"servername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverName)+"\"/>\n"+
-"<input type=\"hidden\" name=\"serverport\" value=\""+serverPort+"\"/>\n"+
-"<input type=\"hidden\" name=\"serverusername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverUserName)+"\"/>\n"+
-"<input type=\"hidden\" name=\"serverpassword\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverPassword)+"\"/>\n"+
-"<input type=\"hidden\" name=\"serverhttpcgipath\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverHTTPCgiPath)+"\"/>\n"+
-"<input type=\"hidden\" name=\"serverhttpntlmdomain\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverHTTPNTLMDomain)+"\"/>\n"+
-"<input type=\"hidden\" name=\"serverhttpntlmusername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverHTTPNTLMUserName)+"\"/>\n"+
-"<input type=\"hidden\" name=\"serverhttpntlmpassword\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(serverHTTPNTLMPassword)+"\"/>\n"
-      );
+      paramMap.put("hasServerCertificates", hasServerCertificates);
     }
 
     // The "Document Access" tab
-    // Always pass the whole keystore as a hidden.
-    out.print(
-"<input name=\"ingestconfigop\" type=\"hidden\" value=\"Continue\"/>\n"
-    );
-    if (ingestKeystore != null)
-    {
-      out.print(
-"<input type=\"hidden\" name=\"ingestkeystoredata\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(ingestKeystore)+"\"/>\n"
-      );
-    }
     if 
(tabName.equals(Messages.getString(locale,"LivelinkConnector.DocumentAccess")))
     {
-      out.print(
-"<table class=\"displaytable\">\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.DocumentFetchProtocol")+"</td>\n"+
-"    <td class=\"value\">\n"+
-"      <select name=\"ingestprotocol\" size=\"3\">\n"+
-"        <option value=\"\" 
"+((ingestProtocol.equals(""))?"selected=\"selected\"":"")+">"+Messages.getBodyString(locale,"LivelinkConnector.UseLAPI")+"</option>\n"+
-"        <option value=\"http\" 
"+((ingestProtocol.equals("http"))?"selected=\"selected\"":"")+">http</option>\n"+
-"        <option value=\"https\" 
"+((ingestProtocol.equals("https"))?"selected=\"selected\"":"")+">https</option>\n"+
-"      </select>\n"+
-"    </td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.DocumentFetchPort")+"</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"text\" size=\"5\" name=\"ingestport\" 
value=\""+ingestPort+"\"/></td>\n"+
-"  </tr>\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.DocumentFetchCGIPath")+"</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"text\" size=\"32\" 
name=\"ingestcgipath\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(ingestCgiPath)+"\"/></td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.DocumentFetchNTLMDomain")+"</nobr><br/><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.SetIfNTLMAuthDesired")+"</nobr></td>\n"+
-"    <td class=\"value\">\n"+
-"      <input type=\"text\" size=\"32\" name=\"ingestntlmdomain\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(ingestNtlmDomain)+"\"/>\n"+
-"    </td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.DocumentFetchNTLMUserName")+"</nobr><br/><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.SetIfDifferentFromServerUserName")+"</nobr></td>\n"+
-"    <td class=\"value\">\n"+
-"      <input type=\"text\" size=\"32\" name=\"ingestntlmusername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(ingestNtlmUsername)+"\"/>\n"+
-"    </td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.DocumentFetchNTLMPassword")+"</nobr><br/><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.SetIfDifferentFromServerPassword")+"</nobr></td>\n"+
-"    <td class=\"value\">\n"+
-"      <input type=\"password\" size=\"32\" name=\"ingestntlmpassword\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(ingestNtlmPassword)+"\"/>\n"+
-"    </td>\n"+
-"  </tr>\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"
-      );
-      out.print(
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.DocumentFetchSSLCertificateList")+"</nobr></td>\n"+
-"    <td class=\"value\">\n"+
-"      <input type=\"hidden\" name=\"ingestkeystorealias\" value=\"\"/>\n"+
-"      <table class=\"displaytable\">\n"
-      );
-      // List the individual certificates in the store, with a delete button 
for each
+      Boolean hasIngestCertificates = false;
       String[] contents = localIngestKeystore.getContents();
-      if (contents.length == 0)
-      {
-        out.print(
-"        <tr><td class=\"message\" 
colspan=\"2\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.NoCertificatesPresent")+"</nobr></td></tr>\n"
-        );
-      }
-      else
+      if (contents.length > 0)
       {
+        hasIngestCertificates = true;
+        Map<String,String> ingestCertificatesMap = new HashMap<>();
         int i = 0;
         while (i < contents.length)
         {
@@ -1964,80 +1682,15 @@ public class LivelinkConnector extends o
           String description = localIngestKeystore.getDescription(alias);
           if (description.length() > 128)
             description = description.substring(0,125) + "...";
-          out.print(
-"        <tr>\n"+
-"          <td class=\"value\"><input type=\"button\" 
onclick='Javascript:IngestDeleteCertificate(\""+org.apache.manifoldcf.ui.util.Encoder.attributeJavascriptEscape(alias)+"\")'
 
alt=\""+Messages.getAttributeString(locale,"LivelinkConnector.DeleteCert")+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(alias)+"\"
 
value=\""+Messages.getAttributeString(locale,"LivelinkConnector.Delete")+"\"/></td>\n"+
-"          
<td>"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(description)+"</td>\n"+
-"        </tr>\n"
-          );
+          ingestCertificatesMap.put(alias,description);
           i++;
         }
+        paramMap.put("ingestCertificatesMap", ingestCertificatesMap);
       }
-      out.print(
-"      </table>\n"+
-"      <input type=\"button\" onclick='Javascript:IngestAddCertificate()' 
alt=\""+Messages.getAttributeString(locale,"LivelinkConnector.AddCert")+"\" 
value=\""+Messages.getAttributeString(locale,"LivelinkConnector.Add")+"\"/>&nbsp;\n"+
-"      
"+Messages.getBodyString(locale,"LivelinkConnector.Certificate")+"<input 
name=\"ingestcertificate\" size=\"50\" type=\"file\"/>\n"+
-"    </td>\n"+
-"  </tr>\n"
-      );
-      out.print(
-"</table>\n"
-      );
+      paramMap.put("hasIngestCertificates", hasIngestCertificates);
     }
-    else
-    {
-      // Hiddens for Document Access tab
-      out.print(
-"<input type=\"hidden\" name=\"ingestprotocol\" 
value=\""+ingestProtocol+"\"/>\n"+
-"<input type=\"hidden\" name=\"ingestport\" value=\""+ingestPort+"\"/>\n"+
-"<input type=\"hidden\" name=\"ingestcgipath\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(ingestCgiPath)+"\"/>\n"+
-"<input type=\"hidden\" name=\"ingestntlmusername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(ingestNtlmUsername)+"\"/>\n"+
-"<input type=\"hidden\" name=\"ingestntlmpassword\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(ingestNtlmPassword)+"\"/>\n"+
-"<input type=\"hidden\" name=\"ingestntlmdomain\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(ingestNtlmDomain)+"\"/>\n"
-      );
-  }
 
-    // Document View tab
-    if 
(tabName.equals(Messages.getString(locale,"LivelinkConnector.DocumentView")))
-    {
-      out.print(
-"<table class=\"displaytable\">\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.DocumentViewProtocol")+"</td>\n"+
-"    <td class=\"value\">\n"+
-"      <select name=\"viewprotocol\" size=\"3\">\n"+
-"        <option value=\"\" 
"+((viewProtocol.equals(""))?"selected=\"selected\"":"")+">"+Messages.getBodyString(locale,"LivelinkConnector.SameAsFetchProtocol")+"</option>\n"+
-"        <option value=\"http\" 
"+((viewProtocol.equals("http"))?"selected=\"selected\"":"")+">http</option>\n"+
-"        <option value=\"https\" 
"+((viewProtocol.equals("https"))?"selected=\"selected\"":"")+">https</option>\n"+
-"      </select>\n"+
-"    </td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.DocumentViewServerName")+"</nobr><br/><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.BlankSameAsFetchServer")+"</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"text\" size=\"64\" 
name=\"viewservername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(viewServerName)+"\"/></td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.DocumentViewPort")+"</nobr><br/><nobr>(blank
 = same as fetch port)</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"text\" size=\"5\" name=\"viewport\" 
value=\""+viewPort+"\"/></td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.DocumentViewCGIPath")+"</nobr><br/><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.BlankSameAsFetchServer")+"</nobr></td>\n"+
-"    <td class=\"value\"><input type=\"text\" size=\"32\" name=\"viewcgipath\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(viewCgiPath)+"\"/></td>\n"+
-"  </tr>\n"+
-"</table>\n"
-      );
-    }
-    else
-    {
-      // Hiddens for Document View tab
-      out.print(
-"<input type=\"hidden\" name=\"viewprotocol\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(viewProtocol)+"\"/>\n"+
-"<input type=\"hidden\" name=\"viewservername\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(viewServerName)+"\"/>\n"+
-"<input type=\"hidden\" name=\"viewport\" value=\""+viewPort+"\"/>\n"+
-"<input type=\"hidden\" name=\"viewcgipath\" 
value=\""+org.apache.manifoldcf.ui.util.Encoder.attributeEscape(viewCgiPath)+"\"/>\n"
-      );
-    }
+    Messages.outputResourceWithVelocity(out, locale, 
EDIT_CONFIG_REPO_BODY_FORWARD, paramMap);    
   }
   
   /** Process a configuration post.
@@ -2248,12 +1901,9 @@ public class LivelinkConnector extends o
     Locale locale, ConfigParams parameters)
     throws ManifoldCFException, IOException
   {
-    out.print(
-"<table class=\"displaytable\">\n"+
-"  <tr>\n"+
-"    <td class=\"description\" 
colspan=\"1\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.Parameters")+"</nobr></td>\n"+
-"    <td class=\"value\" colspan=\"3\">\n"
-    );
+    Map<String, Object> paramMap = new HashMap<>();
+    Map<String,String> configMap = new HashMap<>();
+
     Iterator iter = parameters.listParameters();
     while (iter.hasNext())
     {
@@ -2261,30 +1911,22 @@ public class LivelinkConnector extends o
       String value = parameters.getParameter(param);
       if (param.length() >= "password".length() && 
param.substring(param.length()-"password".length()).equalsIgnoreCase("password"))
       {
-        out.print(
-"      
<nobr>"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(param)+"=********</nobr><br/>\n"
-        );
+        
configMap.put(org.apache.manifoldcf.ui.util.Encoder.bodyEscape(param),"********");
       }
       else if (param.length() >="keystore".length() && 
param.substring(param.length()-"keystore".length()).equalsIgnoreCase("keystore")
 ||
-        param.length() > "truststore".length() && 
param.substring(param.length()-"truststore".length()).equalsIgnoreCase("truststore"))
+              param.length() > "truststore".length() && 
param.substring(param.length()-"truststore".length()).equalsIgnoreCase("truststore"))
       {
         IKeystoreManager kmanager = KeystoreManagerFactory.make("",value);
-        out.print(
-"      
<nobr>"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(param)+"=&lt;"+Integer.toString(kmanager.getContents().length)+Messages.getBodyString(locale,"LivelinkConnector.certificates")+"&gt;</nobr><br/>\n"
-        );
+        
configMap.put(org.apache.manifoldcf.ui.util.Encoder.bodyEscape(param),"=&lt;"+Integer.toString(kmanager.getContents().length)+Messages.getBodyString(locale,"LivelinkConnector.certificates")+"&gt;");
       }
       else
       {
-        out.print(
-"      
<nobr>"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(param)+"="+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(value)+"</nobr><br/>\n"
-        );
+        configMap.put(org.apache.manifoldcf.ui.util.Encoder.bodyEscape(param), 
org.apache.manifoldcf.ui.util.Encoder.bodyEscape(value));
       }
     }
-    out.print(
-"    </td>\n"+
-"  </tr>\n"+
-"</table>\n"
-    );
+
+    paramMap.put("configMap",configMap);
+    Messages.outputResourceWithVelocity(out, locale, 
VIEW_CONFIG_REPO_BODY_FORWARD, paramMap);
   }
   
   /** Output the specification header section.
@@ -2308,115 +1950,12 @@ public class LivelinkConnector extends o
     tabsArray.add(Messages.getString(locale,"LivelinkConnector.Security"));
     tabsArray.add(Messages.getString(locale,"LivelinkConnector.Metadata"));
     
-    String seqPrefix = "s"+connectionSequenceNumber+"_";
+    String seqPrefixParam = "s" + connectionSequenceNumber + "_";
 
-    out.print(
-"<script type=\"text/javascript\">\n"+
-"<!--\n"+
-"\n"+
-"function "+seqPrefix+"SpecOp(n, opValue, anchorvalue)\n"+
-"{\n"+
-"  eval(\"editjob.\"+n+\".value = \\\"\"+opValue+\"\\\"\");\n"+
-"  postFormSetAnchor(anchorvalue);\n"+
-"}\n"+
-"\n"+
-"function "+seqPrefix+"SpecAddToPath(anchorvalue)\n"+
-"{\n"+
-"  if (editjob."+seqPrefix+"pathaddon.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.SelectAFolderFirst")+"\");\n"+
-"    editjob."+seqPrefix+"pathaddon.focus();\n"+
-"    return;\n"+
-"  }\n"+
-"\n"+
-"  "+seqPrefix+"SpecOp(\""+seqPrefix+"pathop\",\"AddToPath\",anchorvalue);\n"+
-"}\n"+
-"\n"+
-"function "+seqPrefix+"SpecAddFilespec(anchorvalue)\n"+
-"{\n"+
-"  if (editjob."+seqPrefix+"specfile.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.TypeInAFileSpecification")+"\");\n"+
-"    editjob."+seqPrefix+"specfile.focus();\n"+
-"    return;\n"+
-"  }\n"+
-"  "+seqPrefix+"SpecOp(\""+seqPrefix+"fileop\",\"Add\",anchorvalue);\n"+
-"}\n"+
-"\n"+
-"function "+seqPrefix+"SpecAddToken(anchorvalue)\n"+
-"{\n"+
-"  if (editjob."+seqPrefix+"spectoken.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.TypeInAnAccessToken")+"\");\n"+
-"    editjob."+seqPrefix+"spectoken.focus();\n"+
-"    return;\n"+
-"  }\n"+
-"  "+seqPrefix+"SpecOp(\""+seqPrefix+"accessop\",\"Add\",anchorvalue);\n"+
-"}\n"+
-"\n"+
-"function "+seqPrefix+"SpecAddToMetadata(anchorvalue)\n"+
-"{\n"+
-"  if (editjob."+seqPrefix+"metadataaddon.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.SelectAFolderFirst")+"\");\n"+
-"    editjob."+seqPrefix+"metadataaddon.focus();\n"+
-"    return;\n"+
-"  }\n"+
-"  
"+seqPrefix+"SpecOp(\""+seqPrefix+"metadataop\",\"AddToPath\",anchorvalue);\n"+
-"}\n"+
-"\n"+
-"function "+seqPrefix+"SpecSetWorkspace(anchorvalue)\n"+
-"{\n"+
-"  if (editjob."+seqPrefix+"metadataaddon.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.SelectAWorkspaceFirst")+"\");\n"+
-"    editjob."+seqPrefix+"metadataaddon.focus();\n"+
-"    return;\n"+
-"  }\n"+
-"  
"+seqPrefix+"SpecOp(\""+seqPrefix+"metadataop\",\"SetWorkspace\",anchorvalue);\n"+
-"}\n"+
-"\n"+
-"function "+seqPrefix+"SpecAddCategory(anchorvalue)\n"+
-"{\n"+
-"  if (editjob."+seqPrefix+"categoryaddon.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.SelectACategoryFirst")+"\");\n"+
-"    editjob."+seqPrefix+"categoryaddon.focus();\n"+
-"    return;\n"+
-"  }\n"+
-"  
"+seqPrefix+"SpecOp(\""+seqPrefix+"metadataop\",\"AddCategory\",anchorvalue);\n"+
-"}\n"+
-"\n"+
-"function "+seqPrefix+"SpecAddMetadata(anchorvalue)\n"+
-"{\n"+
-"  if (editjob."+seqPrefix+"attributeselect.value == \"\" && 
editjob."+seqPrefix+"attributeall.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.SelectAtLeastOneAttributeFirst")+"\");\n"+
-"    editjob."+seqPrefix+"attributeselect.focus();\n"+
-"    return;\n"+
-"  }\n"+
-"  "+seqPrefix+"SpecOp(\""+seqPrefix+"metadataop\",\"Add\",anchorvalue);\n"+
-"}\n"+
-"\n"+
-"function "+seqPrefix+"SpecAddMapping(anchorvalue)\n"+
-"{\n"+
-"  if (editjob."+seqPrefix+"specmatch.value == \"\")\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.MatchStringCannotBeEmpty")+"\");\n"+
-"    editjob."+seqPrefix+"specmatch.focus();\n"+
-"    return;\n"+
-"  }\n"+
-"  if (!isRegularExpression(editjob."+seqPrefix+"specmatch.value))\n"+
-"  {\n"+
-"    
alert(\""+Messages.getBodyJavascriptString(locale,"LivelinkConnector.MatchStringMustBeValidRegularExpression")+"\");\n"+
-"    editjob."+seqPrefix+"specmatch.focus();\n"+
-"    return;\n"+
-"  }\n"+
-"  "+seqPrefix+"SpecOp(\""+seqPrefix+"specmappingop\",\"Add\",anchorvalue);\n"+
-"}\n"+
-"//-->\n"+
-"</script>\n"
-    );
+    Map<String, String> paramMap = new HashMap<String, String>();  
+    paramMap.put("seqPrefix", seqPrefixParam);
+
+    Messages.outputResourceWithVelocity(out, locale, 
EDIT_CONFIG_JOB_HEADER_FORWARD, paramMap, true);
   }
   
   /** Output the specification body section.
@@ -3716,10 +3255,8 @@ public class LivelinkConnector extends o
     int connectionSequenceNumber)
     throws ManifoldCFException, IOException
   {
-    out.print(
-"<table class=\"displaytable\">\n"+
-"  <tr>\n"
-    );
+    Map<String, Object> paramMap = new HashMap<>();
+
     int i = 0;
     boolean userWorkspaces = false;
     while (i < ds.getChildCount())
@@ -3733,21 +3270,8 @@ public class LivelinkConnector extends o
       }
     }
 
-    out.print(
-"    <td class=\"description\"/>\n"+
-"      
<nobr>"+Messages.getBodyString(locale,"LivelinkConnector.CrawlUserWorkspaces")+"</nobr>\n"+
-"    </td>\n"+
-"    <td class=\"value\"/>\n"+
-"      
"+(userWorkspaces?Messages.getBodyString(locale,"LivelinkConnector.Yes"):Messages.getBodyString(locale,"LivelinkConnector.No"))+"\n"+
-"    </td>\n"+
-"  </tr>"
-    );
-    out.print(
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"
-    );
-    out.print(
-"  <tr>"
-    );
+    paramMap.put("userWorkspaces",userWorkspaces);
+    List<String> paths = new ArrayList<>();
 
     i = 0;
     boolean seenAny = false;
@@ -3758,35 +3282,16 @@ public class LivelinkConnector extends o
       {
         if (seenAny == false)
         {
-          out.print(
-"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.Roots")+"</td>\n"+
-"    <td class=\"value\">\n"
-          );
           seenAny = true;
         }
-        out.print(
-"      
"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(sn.getAttributeValue("path"))+"<br/>\n"
-        );
+        
paths.add(org.apache.manifoldcf.ui.util.Encoder.bodyEscape(sn.getAttributeValue("path")));
       }
     }
 
-    if (seenAny)
-    {
-      out.print(
-"    </td>\n"+
-"  </tr>\n"
-      );
-    }
-    else
-    {
-      out.print(
-"  <tr><td class=\"message\" 
colspan=\"2\">"+Messages.getBodyString(locale,"LivelinkConnector.NoStartPointsSpecified")+"</td></tr>\n"
-      );
-    }
-    out.print(
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"
-    );
+    paramMap.put("hasPath",seenAny);
+    paramMap.put("paths",paths);
 
+    List<String> fileSpecs = new ArrayList<>();
     seenAny = false;
     // Go through looking for include or exclude file specs
     i = 0;
@@ -3797,37 +3302,16 @@ public class LivelinkConnector extends o
       {
         if (seenAny == false)
         {
-          out.print(
-"  <tr><td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.FileSpecs")+"</td>\n"+
-"    <td class=\"value\">\n"
-          );
           seenAny = true;
         }
         String filespec = sn.getAttributeValue("filespec");
-        out.print(
-"      "+(sn.getType().equals("include")?"Include file:":"")+"\n"+
-"      "+(sn.getType().equals("exclude")?"Exclude file:":"")+"\n"+
-"      "+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(filespec)+"<br/>\n"
-        );
+        fileSpecs.add((sn.getType().equals("include")?"Include file: ":"") + 
(sn.getType().equals("exclude")?"Exclude file: ":"") + 
org.apache.manifoldcf.ui.util.Encoder.bodyEscape(filespec));
       }
     }
 
-    if (seenAny)
-    {
-      out.print(
-"    </td>\n"+
-"  </tr>\n"
-      );
-    }
-    else
-    {
-      out.print(
-"  <tr><td class=\"message\" 
colspan=\"2\">"+Messages.getBodyString(locale,"LivelinkConnector.NoFileSpecsSpecified")+"</td></tr>\n"
-      );
-    }
-    out.print(
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"
-    );
+    paramMap.put("hasFileSpecs",seenAny);
+    paramMap.put("fileSpecs",fileSpecs);
+
     // Find whether security is on or off
     i = 0;
     boolean securityOn = true;
@@ -3843,15 +3327,11 @@ public class LivelinkConnector extends o
           securityOn = true;
       }
     }
-    out.print(
-"  <tr>\n"+
-"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.SecurityColon")+"</td>\n"+
-"    <td 
class=\"value\">"+(securityOn?Messages.getBodyString(locale,"LivelinkConnector.Enabled2"):Messages.getBodyString(locale,"LivelinkConnector.Disabled"))+"</td>\n"+
-"  </tr>\n"+
-"\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"
-    );
+
+    paramMap.put("securityOn",securityOn);
+
     // Go through looking for access tokens
+    List<String> accessTokens = new ArrayList<>();
     seenAny = false;
     i = 0;
     while (i < ds.getChildCount())
@@ -3861,37 +3341,18 @@ public class LivelinkConnector extends o
       {
         if (seenAny == false)
         {
-          out.print(
-"  <tr><td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.AccessTokens")+"</td>\n"+
-"    <td class=\"value\">\n"
-          );
           seenAny = true;
         }
         String token = sn.getAttributeValue("token");
-        out.print(
-"      "+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(token)+"<br/>\n"
-        );
+        
accessTokens.add(org.apache.manifoldcf.ui.util.Encoder.bodyEscape(token));
       }
     }
 
-    if (seenAny)
-    {
-      out.print(
-"    </td>\n"+
-"  </tr>\n"
-      );
-    }
-    else
-    {
-      out.print(
-"  <tr><td class=\"message\" colspan=\"2\">" + 
Messages.getBodyString(locale,"LivelinkConnector.NoAccessTokensSpecified") + 
"</td></tr>\n"
-      );
-    }
-    out.print(
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"
-    );
+    paramMap.put("hasAccessTokens",seenAny);
+    paramMap.put("accessTokens",accessTokens);
+
     i = 0;
-    String allMetadata = 
Messages.getBodyString(locale,"LivelinkConnector.OnlySpecifiedMetadataWillBeIngested");
+    Boolean allMetadata = false;
     while (i < ds.getChildCount())
     {
       SpecificationNode sn = ds.getChild(i++);
@@ -3900,18 +3361,15 @@ public class LivelinkConnector extends o
         String value = sn.getAttributeValue("all");
         if (value != null && value.equals("true"))
         {
-          
allMetadata=Messages.getBodyString(locale,"LivelinkConnector.AllDocumentMetadataWillBeIngested");
+          allMetadata=true;
         }
       }
     }
-    out.print(
-"  <tr>\n"+
-"    <td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.MetadataSpecification")+"</nobr></td>\n"+
-"    <td class=\"value\"><nobr>"+allMetadata+"</nobr></td>\n"+
-"  </tr>\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"
-    );
+
+    paramMap.put("allMetadata",allMetadata);
+
     // Go through looking for metadata spec
+    List<String> metadata = new ArrayList<>();
     seenAny = false;
     i = 0;
     while (i < ds.getChildCount())
@@ -3921,37 +3379,18 @@ public class LivelinkConnector extends o
       {
         if (seenAny == false)
         {
-          out.print(
-"  <tr><td 
class=\"description\"><nobr>"+Messages.getBodyString(locale,"LivelinkConnector.SpecificMetadata")+"</nobr></td>\n"+
-"    <td class=\"value\">\n"
-          );
           seenAny = true;
         }
         String category = sn.getAttributeValue("category");
         String attribute = sn.getAttributeValue("attribute");
         String isAll = sn.getAttributeValue("all");
-        out.print(
-"      
"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(category)+":"+((isAll!=null&&isAll.equals("true"))?"(All
 metadata 
attributes)":org.apache.manifoldcf.ui.util.Encoder.bodyEscape(attribute))+"<br/>\n"
-        );
+        metadata.add(category+":"+((isAll!=null&&isAll.equals("true"))?"(All 
metadata attributes)":attribute));
       }
     }
 
-    if (seenAny)
-    {
-      out.print(
-"    </td>\n"+
-"  </tr>\n"
-      );
-    }
-    else
-    {
-      out.print(
-"  <tr><td class=\"message\" 
colspan=\"2\">"+Messages.getBodyString(locale,"LivelinkConnector.NoMetadataSpecified")+"</td></tr>\n"
-      );
-    }
-    out.print(
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"
-    );
+    paramMap.put("hasMetadata",seenAny);
+    paramMap.put("metadata",metadata);
+
     // Find the path-name metadata attribute name
     i = 0;
     String pathNameAttribute = "";
@@ -3966,34 +3405,19 @@ public class LivelinkConnector extends o
           pathSeparator = sn.getAttributeValue("separator");
       }
     }
+
+    Boolean hasPathNameAttribute = false;
     if (pathNameAttribute.length() > 0)
     {
-      out.print(
-"  <tr>\n"+
-"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.PathNameMetadataAttribute")+"</td>\n"+
-"    <td 
class=\"value\">"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(pathNameAttribute)+"</td>\n"+
-"  </tr>\n"+
-"  <tr>\n"+
-"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.PathSeparatorString")+"</td>\n"+
-"    <td 
class=\"value\">"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(pathSeparator)+"</td>\n"+
-"  </tr>\n"
-      );
+      hasPathNameAttribute = true;
+      paramMap.put("pathNameAttribute",pathNameAttribute);
+      paramMap.put("pathSeparator",pathSeparator);
     }
-    else
-    {
-      out.print(
-"  <tr>\n"+
-"    <td class=\"message\" 
colspan=\"2\">"+Messages.getBodyString(locale,"LivelinkConnector.NoPathNameMetadataAttributeSpecified")+"</td>\n"+
-"  </tr>\n"
-      );
-    }
-    out.print(
-"\n"+
-"  <tr><td class=\"separator\" colspan=\"2\"><hr/></td></tr>\n"+
-"\n"+
-"  <tr>\n"
-    );
+
+    paramMap.put("hasPathNameAttribute",hasPathNameAttribute);
+
     // Find the path-value mapping data
+    Boolean hasPathValueMapping = false;
     i = 0;
     MatchMap matchMap = new MatchMap();
     while (i < ds.getChildCount())
@@ -4006,42 +3430,23 @@ public class LivelinkConnector extends o
         matchMap.appendMatchPair(pathMatch,pathReplace);
       }
     }
+
     if (matchMap.getMatchCount() > 0)
     {
-      out.print(
-"    <td 
class=\"description\">"+Messages.getBodyString(locale,"LivelinkConnector.PathValueMapping")+"</td>\n"+
-"    <td class=\"value\">\n"+
-"      <table class=\"displaytable\">\n"
-      );
+      hasPathValueMapping = true;
+      Map<String,String> matchReplaceMap = new HashMap<>();
       i = 0;
       while (i < matchMap.getMatchCount())
       {
-        String matchString = matchMap.getMatchString(i);
-        String replaceString = matchMap.getReplaceString(i);
-        out.print(
-"        <tr>\n"+
-"          <td 
class=\"value\">"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(matchString)+"</td>\n"+
-"          <td class=\"value\">--></td>\n"+
-"          <td 
class=\"value\">"+org.apache.manifoldcf.ui.util.Encoder.bodyEscape(replaceString)+"</td>\n"+
-"        </tr>\n"
-        );
+        
matchReplaceMap.put(matchMap.getMatchString(i),matchMap.getReplaceString(i));
         i++;
       }
-      out.print(
-"      </table>\n"+
-"    </td>\n"
-      );
+      paramMap.put("matchReplaceMap",matchReplaceMap);
     }
-    else
-    {
-      out.print(
-"    <td class=\"message\" 
colspan=\"2\">"+Messages.getBodyString(locale,"LivelinkConnector.NoMappingsSpecified")+"</td>\n"
-      );
-    }
-    out.print(
-"  </tr>\n"+
-"</table>\n"
-    );
+
+    paramMap.put("hasPathValueMapping",hasPathValueMapping);
+
+    Messages.outputResourceWithVelocity(out, locale, 
VIEW_CONFIG_JOB_BODY_FORWARD, paramMap);
   }
 
   // The following public methods are NOT part of the interface.  They are 
here so that the UI can present information

Added: 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Body.html
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Body.html?rev=1663458&view=auto
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Body.html
 (added)
+++ 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Body.html
 Mon Mar  2 22:54:44 2015
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<!--
+Copyright 2014 The Apache Software Foundation.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->

Added: 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Header.js
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Header.js?rev=1663458&view=auto
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Header.js
 (added)
+++ 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Job_Header.js
 Mon Mar  2 22:54:44 2015
@@ -0,0 +1,106 @@
+<script type="text/javascript">
+    <!--
+
+    function ${SEQPREFIX}SpecOp(n, opValue, anchorvalue)
+    {
+      eval("editjob."+n+".value = \""+opValue+"\"");
+      postFormSetAnchor(anchorvalue);
+    }
+
+    function ${SEQPREFIX}SpecAddToPath(anchorvalue)
+    {
+    console.log(anchorvalue);
+      if (editjob.${SEQPREFIX}pathaddon.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.SelectAFolderFirst'))");
+        editjob.${SEQPREFIX}pathaddon.focus();
+        return;
+      }
+
+      ${SEQPREFIX}SpecOp("${SEQPREFIX}pathop","AddToPath",anchorvalue);
+    }
+
+    function ${SEQPREFIX}SpecAddFilespec(anchorvalue)
+    {
+      if (editjob.${SEQPREFIX}specfile.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.TypeInAFileSpecification'))");
+        editjob.${SEQPREFIX}specfile.focus();
+        return;
+      }
+      ${SEQPREFIX}SpecOp("${SEQPREFIX}fileop","Add",anchorvalue);
+    }
+
+    function ${SEQPREFIX}SpecAddToken(anchorvalue)
+    {
+      if (editjob.${SEQPREFIX}spectoken.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.TypeInAnAccessToken'))");
+        editjob.${SEQPREFIX}spectoken.focus();
+        return;
+      }
+      ${SEQPREFIX}SpecOp("${SEQPREFIX}accessop","Add",anchorvalue);
+    }
+
+    function ${SEQPREFIX}SpecAddToMetadata(anchorvalue)
+    {
+      if (editjob.${SEQPREFIX}metadataaddon.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.SelectAFolderFirst'))");
+        editjob.${SEQPREFIX}metadataaddon.focus();
+        return;
+      }
+      ${SEQPREFIX}SpecOp("${SEQPREFIX}metadataop","AddToPath",anchorvalue);
+    }
+
+    function ${SEQPREFIX}SpecSetWorkspace(anchorvalue)
+    {
+      if (editjob.${SEQPREFIX}metadataaddon.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.SelectAWorkspaceFirst'))");
+        editjob.${SEQPREFIX}metadataaddon.focus();
+        return;
+      }
+      ${SEQPREFIX}SpecOp("${SEQPREFIX}metadataop","SetWorkspace",anchorvalue);
+    }
+
+    function ${SEQPREFIX}SpecAddCategory(anchorvalue)
+    {
+      if (editjob.${SEQPREFIX}categoryaddon.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.SelectACategoryFirst'))");
+        editjob.${SEQPREFIX}categoryaddon.focus();
+        return;
+      }
+      ${SEQPREFIX}SpecOp("${SEQPREFIX}metadataop","AddCategory",anchorvalue);
+    }
+
+    function ${SEQPREFIX}SpecAddMetadata(anchorvalue)
+    {
+      if (editjob.${SEQPREFIX}attributeselect.value == "" && 
editjob.${SEQPREFIX}attributeall.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.SelectAtLeastOneAttributeFirst'))");
+        editjob.${SEQPREFIX}attributeselect.focus();
+        return;
+      }
+      ${SEQPREFIX}SpecOp("${SEQPREFIX}metadataop","Add",anchorvalue);
+    }
+
+    function ${SEQPREFIX}SpecAddMapping(anchorvalue)
+    {
+      if (editjob.${SEQPREFIX}specmatch.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.MatchStringCannotBeEmpty'))");
+        editjob.${SEQPREFIX}specmatch.focus();
+        return;
+      }
+      if (!isRegularExpression(editjob.${SEQPREFIX}specmatch.value))
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.MatchStringMustBeValidRegularExpression'))");
+        editjob.${SEQPREFIX}specmatch.focus();
+        return;
+      }
+      ${SEQPREFIX}SpecOp("${SEQPREFIX}specmappingop","Add",anchorvalue);
+    }
+    //-->
+</script>
\ No newline at end of file

Added: 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Body.html
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Body.html?rev=1663458&view=auto
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Body.html
 (added)
+++ 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Body.html
 Mon Mar  2 22:54:44 2015
@@ -0,0 +1,303 @@
+<!DOCTYPE html>
+<!--
+Copyright 2014 The Apache Software Foundation.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<input name="serverconfigop" type="hidden" value="Continue"/>
+#if(!(! $serverHTTPSKeystore) && ("$!serverHTTPSKeystore" == ""))
+<input type="hidden" name="serverhttpskeystoredata" 
value="$Encoder.attributeEscape($serverHTTPSKeystore)"/>
+#end
+#if($TabName == $ResourceBundle.getString('LivelinkConnector.Server'))
+<table class="displaytable">
+  <tr><td class="separator" colspan="2"><hr/></td></tr>
+  <tr>
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerProtocol'))</td>
+    <td class="value">
+      <select name="serverprotocol" size="2">
+        <option value="internal" #if($serverProtocol == 'internal') 
selected="selected" #{else} "" #end 
>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.internal'))</option>
+        <option value="http"     #if($serverProtocol == 'http')     
selected="selected" #{else} "" #end >http</option>
+        <option value="https"    #if($serverProtocol == 'https')    
selected="selected" #{else} "" #end >https</option>
+       </select>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerName'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="64" name="servername" 
value="$Encoder.attributeEscape($serverName)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerPort'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="5" name="serverport" value="$serverPort"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerUserName'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="32" name="serverusername" 
value="$Encoder.attributeEscape($serverUserName)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerPassword'))</nobr>
+    </td>
+    <td class="value">
+      <input type="password" size="32" name="serverpassword" 
value="$Encoder.attributeEscape($serverPassword)"/>
+    </td>
+  </tr>
+  <tr><td class="separator" colspan="2"><hr/></td></tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerHTTPCGIPath'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="32" name="serverhttpcgipath" 
value="$Encoder.attributeEscape($serverHTTPCgiPath)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerHTTPNTLMDomain'))</nobr>
+      <br/>
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.SetIfNTLMAuthDesired'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="32" name="serverhttpntlmdomain" 
value="$Encoder.attributeEscape($serverHTTPNTLMDomain)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerHTTPNTLMUserName'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="32" name="serverhttpntlmusername" 
value="$Encoder.attributeEscape($serverHTTPNTLMUserName)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerHTTPNTLMPassword'))</nobr>
+    </td>
+    <td class="value">
+      <input type="password" size="32" name="serverhttpntlmpassword" 
value="$Encoder.attributeEscape($serverHTTPNTLMPassword)"/>
+    </td>
+  </tr>
+  <tr><td class="separator" colspan="2"><hr/></td></tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.ServerSSLCertificateList'))</nobr>
+    </td>
+    <td class="value">
+      <input type="hidden" name="serverkeystorealias" value=""/>
+      <table class="displaytable">
+        #if($hasServerCertificates)
+          #foreach($cert in $serverCertificatesMap.entrySet())
+        <tr>
+          <td class="value">
+            <input type="button" 
onclick='Javascript:ServerDeleteCertificate($Encoder.attributeJavascriptEscape($cert.Key))'
+                   
alt="$Encoder.attributeEscape($ResourceBundle.getString('LivelinkConnector.DeleteCert'))
 + $Encoder.attributeEscape($cert.Key)"
+                   
value="$Encoder.attributeEscape($ResourceBundle.getString('LivelinkConnector.Delete'))"/>
+          <td>$Encoder.bodyEscape($cert.Value)</td>
+          </td>
+        </tr>
+          #end
+        #else
+        <tr>
+          <td class="message" colspan="2">
+            
<nobr>$ResourceBundle.getString('LivelinkConnector.NoCertificatesPresent')</nobr>
+          </td>
+        </tr>
+        #end
+      </table>
+      <input type="button" onclick='Javascript:ServerAddCertificate()' 
alt="$Encoder.attributeEscape($ResourceBundle.getString('LivelinkConnector.AddCert'))"
+             
value="$Encoder.attributeEscape($ResourceBundle.getString('LivelinkConnector.Add'))"/>&nbsp;
+      
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.Certificate'))
+      <input name="servercertificate" size="50" type="file"/>
+    </td>
+  </tr>
+</table>
+#else
+<input type="hidden" name="serverprotocol"          value="$!serverProtocol"/>
+<input type="hidden" name="servername"              
value="$Encoder.attributeEscape($!serverName)"/>
+<input type="hidden" name="serverport"              value="$!serverPort"/>
+<input type="hidden" name="serverusername"          
value="$Encoder.attributeEscape($!serverUserName)"/>
+<input type="hidden" name="serverpassword"          
value="$Encoder.attributeEscape($!serverPassword)"/>
+<input type="hidden" name="serverhttpcgipath"       
value="$Encoder.attributeEscape($!serverHTTPCgiPath)"/>
+<input type="hidden" name="serverhttpntlmdomain"    
value="$Encoder.attributeEscape($!serverHTTPNTLMDomain)"/>
+<input type="hidden" name="serverhttpntlmusername"  
value="$Encoder.attributeEscape($!serverHTTPNTLMUserName)"/>
+<input type="hidden" name="serverhttpntlmpassword"  
value="$Encoder.attributeEscape($!serverHTTPNTLMPassword)"/>
+#end
+<input name="ingestconfigop" type="hidden" value="Continue"/>
+#if(!(! $ingestKeystore) && ("$!ingestKeystore" == ""))
+<input type="hidden" name="ingestkeystoredata" 
value="$Encoder.attributeEscape($ingestKeystore)"/>
+#end
+#if($TabName == $ResourceBundle.getString('LivelinkConnector.DocumentAccess'))
+<table class="displaytable">
+  <tr><td class="separator" colspan="2"><hr/></td></tr>
+  <tr>
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentFetchProtocol'))</td>
+    <td class="value">
+      <select name="ingestprotocol" size="3">
+        <option value="" #if($ingestProtocol == '') selected="selected" 
#{else} "" #end 
>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.UseLAPI'))</option>
+        <option value="http"     #if($ingestProtocol == 'http')     
selected="selected" #{else} "" #end >http</option>
+        <option value="https"    #if($ingestProtocol == 'https')    
selected="selected" #{else} "" #end >https</option>
+      </select>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentFetchPort'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="5" name="ingestport" value="$!ingestPort"/>
+    </td>
+  </tr>
+  <tr><td class="separator" colspan="2"><hr/></td></tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentFetchCGIPath'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="32" name="ingestcgipath" 
value="$Encoder.attributeEscape($!ingestCgiPath)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentFetchNTLMDomain'))</nobr>
+      <br/>
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.SetIfNTLMAuthDesired'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="32" name="ingestntlmdomain" 
value="$Encoder.attributeEscape($!ingestNtlmDomain)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentFetchNTLMUserName'))</nobr>
+      <br/>
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.SetIfDifferentFromServerUserName'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="32" name="ingestntlmusername" 
value="$Encoder.attributeEscape($!ingestNtlmUsername)"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentFetchNTLMPassword'))</nobr>
+      <br/>
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.SetIfDifferentFromServerPassword'))</nobr>
+    </td>
+    <td class="value">
+      <input type="password" size="32" name="ingestntlmpassword" 
value="$Encoder.attributeEscape($!ingestNtlmPassword)"/>
+    </td>
+  </tr>
+  <tr><td class="separator" colspan="2"><hr/></td></tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentFetchSSLCertificateList'))</nobr>
+    </td>
+    <td class="value">
+      <input type="hidden" name="ingestkeystorealias" value=""/>
+      <table class="displaytable">
+        #if($hasIngestCertificates)
+          #foreach($cert in $ingestCertificatesMap.entrySet())
+        <tr>
+          <td class="value">
+            <input type="button" 
onclick='Javascript:IngestDeleteCertificate($Encoder.attributeJavascriptEscape($cert.Key))'
+                   
alt="$Encoder.attributeEscape($ResourceBundle.getString('LivelinkConnector.DeleteCert'))
 + $Encoder.attributeEscape($cert.Key)"
+                   
value="$Encoder.attributeEscape($ResourceBundle.getString('LivelinkConnector.Delete'))"/>
+          <td>$Encoder.bodyEscape($cert.Value)</td>
+          </td>
+        </tr>
+          #end
+        #else
+        <tr>
+          <td class="message" colspan="2">
+            
<nobr>$ResourceBundle.getString('LivelinkConnector.NoCertificatesPresent')</nobr>
+          </td>
+        </tr>
+        #end
+      </table>
+      <input type="button" onclick='Javascript:IngestAddCertificate()' 
alt="$Encoder.attributeEscape($ResourceBundle.getString('LivelinkConnector.AddCert'))"
+             
value="$Encoder.attributeEscape($ResourceBundle.getString('LivelinkConnector.Add'))"/>&nbsp;
+      
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.Certificate'))
+      <input name="ingestcertificate" size="50" type="file"/>
+    </td>
+  </tr>
+</table>
+#else
+<input type="hidden" name="ingestprotocol"      value="$!ingestProtocol"/>
+<input type="hidden" name="ingestport"          value="$!ingestPort"/>
+<input type="hidden" name="ingestcgipath"       
value="$Encoder.attributeEscape($!ingestCgiPath)"/>
+<input type="hidden" name="ingestntlmusername"  
value="$Encoder.attributeEscape($!ingestNtlmUsername)"/>
+<input type="hidden" name="ingestntlmpassword"  
value="$Encoder.attributeEscape($!ingestNtlmPassword)"/>
+<input type="hidden" name="ingestntlmdomain"    
value="$Encoder.attributeEscape($!ingestNtlmDomain)"/>
+#end
+
+#if($TabName == $ResourceBundle.getString('LivelinkConnector.DocumentView'))
+<table class="displaytable">
+  <tr><td class="separator" colspan="2"><hr/></td></tr>
+  <tr>
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentViewProtocol'))</td>
+    <td class="value">
+      <select name="viewprotocol" size="3">
+        <option value="" #if($viewProtocol == '') selected="selected" #{else} 
"" #end 
>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.SameAsFetchProtocol'))</option>
+        <option value="http"     #if($viewProtocol == 'http')     
selected="selected" #{else} "" #end >http</option>
+        <option value="https"    #if($viewProtocol == 'https')    
selected="selected" #{else} "" #end >https</option>
+      </select>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentViewServerName'))</nobr>
+      <br/>
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.BlankSameAsFetchServer'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="64" name="viewservername" 
value="$Encoder.attributeEscape($!viewServerName)"/>
+    </td>
+  </tr>
+  <tr><td class="separator" colspan="2"><hr/></td></tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentViewPort'))</nobr>
+      <br/>
+      <nobr>(blank = same as fetch port)</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="5" name="viewport" value="$!viewPort"/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.DocumentViewCGIPath'))</nobr>
+      <br/>
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.BlankSameAsFetchServer'))</nobr>
+    </td>
+    <td class="value">
+      <input type="text" size="32" name="viewcgipath" 
value="$Encoder.attributeEscape($!viewCgiPath)"/>
+    </td>
+  </tr>
+</table>
+#else
+<input type="hidden" name="viewprotocol"      value="$!viewProtocol"/>
+<input type="hidden" name="viewservername"          value="$!viewServerName"/>
+<input type="hidden" name="viewport"       value="$!viewPort"/>
+<input type="hidden" name="viewcgipath"  
value="$Encoder.attributeEscape($!viewCgiPath)"/>
+#end
\ No newline at end of file

Added: 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Header.js
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Header.js?rev=1663458&view=auto
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Header.js
 (added)
+++ 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/editConfiguration_Repo_Header.js
 Mon Mar  2 22:54:44 2015
@@ -0,0 +1,130 @@
+<script type="text/javascript">
+    <!--
+    function ServerDeleteCertificate(aliasName)
+    {
+      editconnection.serverkeystorealias.value = aliasName;
+      editconnection.serverconfigop.value = "Delete";
+      postForm();
+    }
+
+    function ServerAddCertificate()
+    {
+      if (editconnection.servercertificate.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.ChooseACertificateFile'))");
+        editconnection.servercertificate.focus();
+      }
+      else
+      {
+        editconnection.serverconfigop.value = "Add";
+        postForm();
+      }
+    }
+
+    function IngestDeleteCertificate(aliasName)
+    {
+      editconnection.ingestkeystorealias.value = aliasName;
+      editconnection.ingestconfigop.value = "Delete";
+      postForm();
+    }
+
+    function IngestAddCertificate()
+    {
+      if (editconnection.ingestcertificate.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.ChooseACertificateFile'))");
+        editconnection.ingestcertificate.focus();
+      }
+      else
+      {
+        editconnection.ingestconfigop.value = "Add";
+        postForm();
+      }
+    }
+
+    function checkConfig()
+    {
+      if (editconnection.serverport.value != "" && 
!isInteger(editconnection.serverport.value))
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.AValidNumberIsRequired'))");
+        editconnection.serverport.focus();
+        return false;
+      }
+      if (editconnection.ingestport.value != "" && 
!isInteger(editconnection.ingestport.value))
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.AValidNumberOrBlankIsRequired'))");
+        editconnection.ingestport.focus();
+        return false;
+      }
+      if (editconnection.viewport.value != "" && 
!isInteger(editconnection.viewport.value))
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.AValidNumberOrBlankIsRequired'))");
+        editconnection.viewport.focus();
+        return false;
+      }
+      return true;
+    }
+
+    function checkConfigForSave()
+    {
+      if (editconnection.servername.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.EnterALivelinkServerName'))");
+        
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.Server'))");
+        editconnection.servername.focus();
+        return false;
+      }
+      if (editconnection.serverport.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.AServerPortNumberIsRequired'))");
+        
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.Server'))");
+        editconnection.serverport.focus();
+        return false;
+      }
+      if (editconnection.serverhttpcgipath.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.EnterTheServerCgiPathToLivelink'))");
+        
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.Server'))");
+        editconnection.serverhttpcgipath.focus();
+        return false;
+      }
+      if (editconnection.serverhttpcgipath.value.substring(0,1) != "/")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.TheServerCgiPathMustBeginWithACharacter'))");
+        
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.Server'))");
+        editconnection.serverhttpcgipath.focus();
+        return false;
+      }
+      if (editconnection.viewprotocol.value == "" && 
editconnection.ingestprotocol.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.SelectAViewProtocol'))");
+        
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.DocumentView'))");
+        editconnection.viewprotocol.focus();
+        return false;
+      }
+      if (editconnection.viewcgipath.value == "" && 
editconnection.ingestcgipath.value == "")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.EnterTheViewCgiPathToLivelink'))");
+        
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.DocumentView'))");
+        editconnection.viewcgipath.focus();
+        return false;
+      }
+      if (editconnection.ingestcgipath.value != "" && 
editconnection.ingestcgipath.value.substring(0,1) != "/")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.TheIngestCgiPathMustBeBlankOrBeginWithACharacter'))");
+        
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.DocumentAccess'))");
+        editconnection.ingestcgipath.focus();
+        return false;
+      }
+      if (editconnection.viewcgipath.value != "" && 
editconnection.viewcgipath.value.substring(0,1) != "/")
+      {
+        
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.TheViewCgiPathMustBeBlankOrBeginWithACharacter'))");
+        
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('LivelinkConnector.DocumentView'))");
+        editconnection.viewcgipath.focus();
+        return false;
+      }
+      return true;
+    }
+
+    //-->
+</script>
\ No newline at end of file

Added: 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/viewConfiguration_Job.html
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/viewConfiguration_Job.html?rev=1663458&view=auto
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/viewConfiguration_Job.html
 (added)
+++ 
manifoldcf/branches/CONNECTORS-1160/connectors/livelink/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/livelink/viewConfiguration_Job.html
 Mon Mar  2 22:54:44 2015
@@ -0,0 +1,185 @@
+<!DOCTYPE html>
+<!--
+Copyright 2014 The Apache Software Foundation.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<table class="displaytable">
+  <tr>
+    <td class="description"/>
+    
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.CrawlUserWorkspaces'))</nobr>
+    </td>
+    <td class="value"/>
+    
#if($userWorkspaces)$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.Yes'))#{else}$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.No'))#end
+    </td>
+  </tr>
+  <tr>
+    <td class="separator" colspan="2">
+      <hr/>
+    </td>
+  </tr>
+  <tr>
+    #if($hasPath)
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.Roots'))</td>
+    <td class="value">
+      #foreach($path in $paths)
+      $path
+      <br/>
+      #end
+    </td>
+    #else
+    <td class="message" colspan="2">
+      
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.NoStartPointsSpecified'))
+    </td>
+    #end
+  </tr>
+  <tr>
+    <td class="separator" colspan="2">
+      <hr/>
+    </td>
+  </tr>
+  <tr>
+    #if($hasFileSpecs)
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.FileSpecs'))</td>
+    <td class="value">
+      #foreach($fileSpec in $fileSpecs)
+      $fileSpec
+      <br/>
+      #end
+    </td>
+    #else
+    <td class="message" colspan="2">
+      
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.NoFileSpecsSpecified'))
+    </td>
+    #end
+  </tr>
+  <tr>
+    <td class="separator" colspan="2">
+      <hr/>
+    </td>
+  </tr>
+  <tr>
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.SecurityColon'))</td>
+    <td class="value">
+      
#if($securityOn)$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.Enabled2'))#{else}$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.Disabled'))#end
+    </td>
+  </tr>
+  <tr>
+    <td class="separator" colspan="2">
+      <hr/>
+    </td>
+  </tr>
+  <tr>
+    #if($hasAccessTokens)
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.AccessTokens'))</td>
+    <td class="value">
+      #foreach($accessToken in $accessTokens)
+      $accessToken
+      <br/>
+      #end
+    </td>
+    #else
+    <td class="message" colspan="2">
+      
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.NoAccessTokensSpecified'))
+    </td>
+    #end
+  </tr>
+  <tr>
+    <td class="separator" colspan="2">
+      <hr/>
+    </td>
+  </tr>
+  <tr>
+    <td class="description">
+      
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.MetadataSpecification'))</nobr>
+    </td>
+    <td class="value">
+      <nobr>
+        #if($allMetadata)
+        
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.AllDocumentMetadataWillBeIngested'))
+        #else
+        
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.OnlySpecifiedMetadataWillBeIngested'))
+        #end
+      </nobr>
+    </td>
+  </tr>
+  <tr>
+    <td class="separator" colspan="2">
+      <hr/>
+    </td>
+  </tr>
+  <tr>
+    #if($hasMetadata)
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.SpecificMetadata'))</td>
+    <td class="value">
+      #foreach($metadatum in $metadata)
+      $Encoder.bodyEscape($metadatum)
+      <br/>
+      #end
+    </td>
+    #else
+    <td class="message" colspan="2">
+      
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.NoMetadataSpecified'))
+    </td>
+    #end
+  </tr>
+  <tr>
+    <td class="separator" colspan="2">
+      <hr/>
+    </td>
+  </tr>
+  #if($hasPathNameAttribute)
+  <tr>
+    <td class="description">
+      
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.PathNameMetadataAttribute'))
+    </td>
+    <td class="value">$Encoder.bodyEscape($pathNameAttribute)</td>
+  </tr>
+  <tr>
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.PathSeparatorString'))</td>
+    <td class="value">$Encoder.bodyEscape($pathSeparator)</td>
+  </tr>
+  #else
+  <tr>
+    <td class="message" colspan="2">
+      
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.NoPathNameMetadataAttributeSpecified'))
+    </td>
+  </tr>
+  #end
+  <tr>
+    <td class="separator" colspan="2">
+      <hr/>
+    </td>
+  </tr>
+  <tr>
+    #if($hasPathValueMapping)
+    <td 
class="description">$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.PathValueMapping'))</td>
+    <td class="value">
+      <table class="displaytable">
+        #foreach($entry in $matchReplaceMap.entrySet())
+        <tr>
+          <td colspan="2">$Encoder.bodyEscape($entry.Key)</td>
+          <td colspan="1">--</td>
+          <td colspan="2">$Encoder.bodyEscape($entry.Value)</td>
+        </tr>
+        #end
+      </table>
+    </td>
+    #else
+    <td class="message" colspan="2">
+      
$Encoder.bodyEscape($ResourceBundle.getString('LivelinkConnector.NoMappingsSpecified'))
+    </td>
+    #end
+  </tr>
+</table>


Reply via email to