if (context.getDesignContext().getTag() == null) {
context.setLastError("Cannot retrieve tag because this script does not run on a WebTML page");
return errorReturnContext;
}
BaseTagStatus refTag = context.getDesignContext().getTag().getTagStatusById(contextExpression);
if (refTag != null) {
TMLContext tagContext = refTag.tmlContext;
if (tagContext != null) {
return tagContext;
}
else {
context.setLastError("Context of this Tag could not be retrieved: " + contextExpression);
return errorReturnContext;
}
}
else {
context.setLastError("Tag could not be retrieved: " + contextExpression);
return errorReturnContext;
}
}
else if (contextFunction.equals("db") || contextFunction.equals("plugin")) {
if (contextFunction.equals("plugin")) {
WGAPlugin plugin = context.getwgacore().getPluginSet().getPluginByUniqueName(contextExpression);
if (plugin != null) {
contextExpression = plugin.buildDatabaseKey();
}
else {
context.setLastError("Unknown plugin unique name: " + contextExpression);
return errorReturnContext;
}
}
WGDatabase dbTarget = null;
try {
dbTarget = context.db(context.resolveDBKey(contextExpression));
}
catch (WGUnavailableException e1) {
context.setLastError("Database '" + contextExpression + "' is currently unavailable");
return errorReturnContext;
}
catch (WGException e) {
context.setLastError("Unable to open database '" + contextExpression + "'. Exception: " + e.getClass().getName() + " message: " + e.getMessage());
return errorReturnContext;
}
if (dbTarget == null) {
context.setLastError("No database with key " + contextExpression);
return errorReturnContext;
}
if (dbTarget.isSessionOpen() == false) {
context.setLastError("User cannot open database '" + contextExpression + "'");
return errorReturnContext;
}
if (dbTarget.getSessionContext().getAccessLevel() <= WGDatabase.ACCESSLEVEL_NOACCESS) {
context.setLastError("User has no access to database '" + contextExpression + "'");
return errorReturnContext;
}
TMLContext dbContext = context.dbContext(dbTarget);
if (dbContext == null) {
context.setLastError("Target database " + contextExpression + " does not support db context changes");
return errorReturnContext;
}
else {
return dbContext;
}
}
else if (contextFunction.equals("area")) {
WGArea area = db.getArea(contextExpression);
if (area == null) {
context.setLastError("No area of name '" + contextExpression + "'");
return errorReturnContext;
}
WGContent content = navigator.getRootContent(area);
if (content != null) {
return context.getTMLContextForDocument(content);
}
else {
context.setLastError("No root content in area '" + contextExpression + "'");
return errorReturnContext;
}
}
else if (contextFunction.equals("query")) {
if (context.getDesignContext().getTag() == null) {
context.setLastError("Cannot retrieve tag because this script does not run on a WebTML page");
return errorReturnContext;
}
BaseTagStatus tag = context.getDesignContext().getTag().getTagStatusById(contextExpression);
if (tag != null && tag instanceof Query.Status) {
Query.Status queryTag = (Query.Status) tag;
WGContent content = queryTag.getFirstContent();
if (content != null) {
return context.getTMLContextForDocument(queryTag.getFirstContent());