%@ include file="/util/setup_editlist_header.jsp" %>
xml
<%@ page import="java.util.*,revize.data.*, revize.servlet.*,
revize.db.*,revize.store.*,
idetix.util.StringUtils, revize.RevizeConstants, revize.*, java.net.*" %>
<%
/* * * * * * * * * * * * * LINK MANAGER PROCESSING * * * * * * * * * * * * *
This page is called from mainFrame.linkCreateLinkRecord() - step 2 with mode:
'linkrecord' or 'templaterecord'
(mode: 'url' if checking for template instance)
Its purpose is to create a record and return the recordid.
Depending on the scenario, it may be called multiple times.
A new link and/or dependent template module record will be created.
---------------------------------------------------------------------------*/
String mode = StringUtils.getParameter(request,"mode");
// these parameters only set when called from mainFrame.linkCreateLinkRecord
String webspace = StringUtils.getParameter(request,"webspace");
String template = StringUtils.getParameter(request,"template");
String module = StringUtils.getParameter(request,"module");
String linkid = StringUtils.getParameter(request,"linkid");
String filename = StringUtils.getParameter(request,"filename");
String set = StringUtils.getParameter(request,"set");
String rte = StringUtils.getParameter(request,"rte");
// these parameters only set after this calls itself
String url = StringUtils.getParameter(request,"url");
url = StringUtils.replaceAll(url,"\\","\\\\");
String overwrite_file= StringUtils.getParameter(request,"overwrite_file");
String absoluteurl = StringUtils.getParameter(request,"absoluteurl");
absoluteurl = StringUtils.replaceAll(absoluteurl,"\\","\\\\");
String reloadurl = "linkmanager_xml.jsp?"+"mode="+mode+"&webspace="+webspace+"&template="+template+"&module="+module+"&linkid="+linkid;
reloadurl=reloadurl+"&filename="+filename+"&set="+set+"&rte="+rte;
revize.publish.TemplateInstance ti = null;
DataStore ds = DataStoreFactory.createDefault(webspace);
Module m = null;
String templatename = "";
String linkfilename="";
int recordid = -1;
String tosectionid = "";
String revizeServerProtocol = "";
String revizeServerName = "";
String revizeServerPort= "";
String revizeServer = "";
boolean isRevizeServerUrl = false;
boolean isValidUrl = true;
boolean RevizePage = true;
boolean RevizeChannelUrl = false;
boolean isPoundInUrl = false;
String relativePath = "";
boolean fileExists = false;
String other = "";
String hashStr = "";
String my_revizechannelurl="";
revize.db.TemplateInstanceDB tiDB = new revize.db.TemplateInstanceDB(webspace);
if (filename.indexOf("/") == 0) filename = filename.substring(1);
//----- Create a link or dependent module record
if (mode.indexOf("record") != -1)
{
LinkManager lm = new LinkManager(webspace);
int linkidInt = Integer.valueOf(linkid).intValue();
//If Other template instances using this file
if(module.equals("links"))
{
fileExists = lm.fileNameExistsInLinksModule(module,filename);
}
else
{
fileExists = tiDB.fileNameExists(filename);
}
//----- Create new dependent module record; return linkid and url.
if (!fileExists && (overwrite_file.equals("yes")
|| !lm.fileNameExists(template,filename,linkidInt)))
{
lm.createDependentRecord( template, module, filename, linkidInt );
linkid = new Integer(lm.getRecordId()).toString();
url = lm.getUrl();
}
else if(!fileExists && !lm.fileNameExists( template, filename,
Integer.valueOf(linkid).intValue() ))
{
lm.createDependentRecord( template, module, filename,
Integer.valueOf(linkid).intValue());
linkid = new Integer(lm.getRecordId()).toString();
url = lm.getUrl();
}
else
{
linkid = "-1";
}
}
else if (mode.equals("url") || mode.equals("urltemplate"))
{
String otrUrl = "";
String chkUrl = url;
int pipe_idx = chkUrl.indexOf(" ");
/*
if (pipe_idx != -1){
otrUrl = chkUrl.substring(pipe_idx,chkUrl.length());
if(otrUrl.length()>0)
other = otrUrl.substring(1,otrUrl.length());
chkUrl = chkUrl.substring(0,pipe_idx);
}
*/
String url1= chkUrl;
//String url1= url;
int pound_idx = url1.indexOf("#");
if(url1.toLowerCase().indexOf("javascript:")==0
|| url1.toLowerCase().indexOf("mailto:") ==0
|| pound_idx == 0)
{
//linkfilename = url1;
RevizePage = false;
absoluteurl=url1;
}
else
{
if (pound_idx > 0 )
{
hashStr = url1.substring(pound_idx,url1.length());
url1 = url1.substring(0,pound_idx);
isPoundInUrl = true;
//System.out.println("is pound URL true");
}
// Check if relative url is entered
ti = tiDB.getTemplateInstanceForUrl(url1);
//Iterate over all the channels. Check if absolute url is entered
if(ti == null)
{
List channels = ds.readChannels();
Iterator itr = channels.iterator();
while(itr.hasNext())
{
Channel c = (Channel)itr.next();
String baseurl = c.getBaseUrl();
if(url.length() <= baseurl.length()) continue;
String desc = c.getDescription();
if(desc.equalsIgnoreCase("Revize Server Output Channel"))
my_revizechannelurl=baseurl;
if(baseurl != null && !baseurl.equals(""))
{
int idx = url.indexOf(baseurl);
if (idx == 0)
{
if(baseurl.endsWith("/"))
relativePath = url1.substring(baseurl.length());
else
relativePath = url1.substring(baseurl.length()+1);
ti=tiDB.getTemplateInstanceForUrl(relativePath);
if(ti != null)
{
System.out.println("TemplateInstance:" + ti.getTemplateId() + " mid:" + ti.getLinkedModuleId() + " rid:" + ti.getLinkedRecordId() );
tosectionid = "";
m = ds.readModule(ti.getLinkedModuleId());
templatename = ds.readTemplate(ti.getTemplateId()).getLabel();
recordid = ti.getLinkedRecordId();
url ="";
if (m != null)
{
String where = m.getLabel() + "._recordid=" + recordid;
String options = "report,recordid=" + recordid;
if (rz.isvalidfield(m.getLabel(),"linktosectionid"))
tosectionid = rz.fetch(m.getLabel(),"linktosectionid",options);//,where);
}
linkfilename = relativePath;
break;
}
}
}
}
}
else
{
linkfilename= url1;
templatename = ds.readTemplate(ti.getTemplateId()).getLabel();
recordid = ti.getLinkedRecordId();
}
if(!isPoundInUrl)
{
//System.out.println("TemplateInstance:" + ti.getTemplateId() + " mid:" + ti.getLinkedModuleId() + " rid:" + ti.getLinkedRecordId() );
if(ti != null)
{
tosectionid = "";
m = ds.readModule(ti.getLinkedModuleId());
templatename = ds.readTemplate(ti.getTemplateId()).getLabel();
recordid = ti.getLinkedRecordId();
url ="";
if (m != null)
{
String where = m.getLabel() + "._recordid=" + recordid;
String options = "report,recordid=" + recordid;
if (rz.isvalidfield(m.getLabel(),"linktosectionid"))
tosectionid = rz.fetch(m.getLabel(),"linktosectionid",options);//,where);
}
}
else
{
String new_absoluteurl = absoluteurl;
RevizePage = false;
revizeServerProtocol = System.getProperty(RevizeProperties.WEB_SERVER_PROTOCOL);
revizeServerName = System.getProperty(RevizeProperties.WEB_SERVER_NAME);
revizeServerPort = System.getProperty(RevizeProperties.WEB_SERVER_PORT);
revizeServer = revizeServerProtocol + "://" + revizeServerName;
if (revizeServerPort.equals("80") == false) revizeServer += ":" + revizeServerPort;
if (revizeServer.endsWith("/"))
revizeServer = revizeServer.substring(0,revizeServer.length()-1);
if((absoluteurl.endsWith(".html") || absoluteurl.endsWith(".htm")
|| absoluteurl.endsWith(".jsp") || absoluteurl.endsWith(".asp")
||absoluteurl.endsWith(".aspx") || absoluteurl.endsWith(".php")) && absoluteurl.indexOf(revizeServer) >= 0 )
{
int idx1= my_revizechannelurl.lastIndexOf("/");
if (idx1 >= 0)
{
url = absoluteurl.substring(idx1+1);
url = "../"+url;
}
isRevizeServerUrl = true;
}
try
{
URL thisurl = new URL(new_absoluteurl);
URLConnection urlConn = thisurl.openConnection();
urlConn.connect();
// below line needed to drop connections
java.io.InputStream stream = urlConn.getInputStream();
}
catch(Exception e)
{
isValidUrl = false;
}
}
}
else if(isPoundInUrl && ti == null) // if it's not a revize managed page
{
RevizePage = false;
//isRevizeServerUrl = true;
try
{
URL thisurl = new URL(absoluteurl);
URLConnection urlConn = thisurl.openConnection();
urlConn.connect();
// below line needed to drop connections
java.io.InputStream stream = urlConn.getInputStream();
}
catch(Exception e)
{
isValidUrl = false;
}
}
}
}
%>
<%= rz.tracestack %>