" + "Command: " + title + "\n
\n";
content += "
";
return content;
}
/**
* Execute search command
*
* @params (string) command parameters
*/
function commandSearch(params)
{
var store = "workspace://SpacesStore";
var query;
var subject = "Search result";
var type = "lucene";
var paramArray = params.split(";");
for (var i = 0; i < paramArray.length; i++)
{
var param = paramArray[i].split("=");
param[0] = param[0].toLowerCase();
switch (param[0])
{
case "store": store = param[1]; break;
case "query": query = param[1]; break;
case "subject": subject = param[1]; break;
case "type": type = param[1].toLowerCase(); break;
}
}
if (query == null)
{
createEmail(errorParameter, errorParameter, errorParameter);
return;
}
var nodes;
try
{
switch (type)
{
case "lucene":
nodes = search.luceneSearch(store, query);
break;
case "xpath":
var isValid = search.isValidXpathQuery(query);
if (isValid == true)
{
nodes = search.xpathSearch(store, query);
}
else
{
createEmail(errorXPathNotValid, errorXPathNotValid, errorXPathNotValid);
return;
}
break;
case "node":
var node = search.findNode(query);
if (node == null) break;
nodes = new Array(node);
break;
case "tag":
nodes = search.tagSearch(store, query);
break;
}
}
catch (exception)
{
createEmail(exception.message, exception.message, "Search Error");
return;
}
if (nodes == null || nodes.length == 0)
{
var message = "Nothing was found using query: '" + subject + "'.";
createEmail(message, message, subject);
return;
}
/*createEmail(createContentTextPlain(nodes), createResponseTextHtml(nodes), subject);*/
createEmail(createContentTextPlain(nodes), createContentTextHtml(nodes), subject);
}
/**
* Decode subject
*
* @subject (string) subject
*/
function decodeSubject(subject)
{
var s = new Array();
s[0] = new Array("\\", "%5c");
s[1] = new Array("/", "%2f");
s[2] = new Array("*", "%2a");
s[3] = new Array("|", "%7c");
s[4] = new Array(":", "%3a");
s[5] = new Array("\"", "%22");
s[6] = new Array("<", "%3c");
s[7] = new Array(">", "%3e");
s[8] = new Array("?", "%3f");
for (var i = 0; i < s.length; i++)
{
var re = new RegExp(s[i][1], 'g');
subject = subject.replace(re, s[i][0]);
}
return subject;
}
function main()
{
title = decodeSubject(document.properties["cm:title"]);
command = title.split("-");
if (command[0].toLowerCase() == "do")
{
if (command[1].toLowerCase() == "search")
{
commandSearch(title.substring(4 + command[1].length));
}
else
{
var message = unknownCommand + ": '" + title + "'";
createEmail(message, message, message);
}
}
else
{
var message = unknownCommand + ": '" + title + "'";
createEmail(message, message, message);
}
document.remove();
}
logger.log("Start search command.");
main();
logger.log("End search command.");