%-- #RevizeProperties USE REVIZE MENU (DOCUMENT PROPERTIES) TO EDIT DATA BELOW:
status=edit
options=notranslate
server=localhost:8080
projectName=plugins
label=sitemap
location=menus/menus.sitemap.include.jsp
version=
docType=include
subType=include
moduleName=
fieldName=
channels=revize|
description=
--%>
<%@ include file="/plugins/setup/setup_include_header.jsp" %>
<%--
__________________________________________________________________________________________
menus.sitemap
Code used to include plugin on Revize page:
Create site map sorted by link level (home section is level 0).
If columns are desired, columnsizediff and columnlinklevel are used to balance the length
of each column without breaking in the middle of any level (home section is level 0)
Parameters:
indentpixels number of pixels to indent links at each level (default=25)
columns true (default) to use 2 columns; false for single column
columnsizediff maximun difference desired between column sizes (default=30)
columnlinklevel maximum level of links that can be across columns (default=2)
debug true to enable debug print statements; otherwise false (default)
__________________________________________________________________________________________
--%>
<% String VERSION = "v06-20-2011";
%>
<%!
class Link
{
int level = 0;
String url = "";
String content = "";
Link (int level, String url, String content)
{
this.level = level;
this.url = url;
this.content = content;
}
}
%><%
//----- input parameters -----\\
int indentpixels = StringUtils.toInt(StringUtils.getParameter(request,"indentpixels"),25);
boolean useColumns = !StringUtils.getParameter(request,"useColumns").equals("false");
int columnsizediff = StringUtils.toInt(StringUtils.getParameter(request,"columnsizediff"),30);
int columnlinklevel = StringUtils.toInt(StringUtils.getParameter(request,"columnlinklevel"),2);
boolean debug = StringUtils.getParameter(request,"debug").equals("true");
if (debug) out.println("debug enabled entering plugin: sitemap");
Link link = null;
Vector links = new Vector();
HashMap duplinks = new HashMap();
HashMap duplinksLevel = null;
int linklevel = 0;
int lastlinklevel = -1;
if (debug) out.println("
");
%><%----- html code -----%>
<% String sitemap_filter = "(linkpage!=freeform_login and linkplacement!=admintemplate)";%>
<%
rz.menusort(rz.listRecords,"-1");
while ( rz.listnext() )
{
if (rz.listindex<0) continue;
%><%
linklevel = StringUtils.toInt(rz.content);
if (linklevel > lastlinklevel)
duplinks.put(linklevel+"",new HashMap());
if (lastlinklevel != linklevel)
{
lastlinklevel = linklevel;
duplinksLevel = (HashMap)duplinks.get(linklevel+"");
}
%><%
String content = rz.content;
content = content.replaceAll("<","<");
if (content.equals("")) content = "*empty content*";
String linktype = rz.linktype;
if (linktype.equals("")) linktype = "*not defined*";
boolean skip = rz.content.equals("")
|| rz.content.equals("...IMAGE...")
|| rz.content.toLowerCase().indexOf("home") != -1
|| rz.link.toLowerCase().indexOf("javascript:") != -1
|| rz.link.toLowerCase().indexOf("mailto:") != -1
|| rz.link.toLowerCase().indexOf("tel:") != -1;
if (!skip && duplinksLevel.get(rz.link) != null)
skip = true;
else
duplinksLevel.put(rz.link,"");
if (debug) rz.content = "(" + linklevel + ") " + content
+ "
type: " + linktype + "(recordid=" + rz.recordid + ") "
+ (skip ? "SKIPPED if not debug" : "")
+ "
" + rz.link.replaceAll("<","<")
+ "";
if (debug) out.println("(" + rz.listindex + "): " + content + "
");
if (rz.linktype.equals("none")) rz.link = "#";
if (debug || !skip)
links.add(new Link(linklevel,rz.link,rz.content));
%><%
}
%>
<%
int i,j,k;
int middle = links.size();
int columnSplitLevel = 0;
int[][] diffParent = new int[columnlinklevel][columnlinklevel];
if (useColumns)
{
middle = links.size() / 2;
int[] diff = new int[columnlinklevel];
for (j=0;ji="+i + " j="+j + " link.level=" + link.level);
int size1st = i;
int size2nd = links.size() - i;
int sizeDiff = Math.abs(size1st-size2nd);
if (sizeDiff < diff[j])
{
diff[j] = sizeDiff;
diffLink[j] = i;
for (k=0;k<=j;k++)
{
diffParent[j][k] = lastLink[k];
if (debug) out.println(" lastlink(" + (k) + ")=" + lastLink[k]);
}
}
lastLink[link.level] = i;
}
}
}
if (debug) out.println("
link size="+links.size()+" middle="+middle);
for (j=0;j level=" + j + " diffLink=" + diffLink[j] + " diff=" + diff[j]);
if (diff[j] < middle)
{
middle = diffLink[j];
columnSplitLevel = j;
}
if (middle < columnsizediff) break;
}
}
// rows leaves room for continued... links in right column
int rows = Math.max(middle,links.size()-middle+columnSplitLevel-1);
if (debug) out.println("
columnSplitLevel=" + columnSplitLevel + " adjusted middle="+middle+ " rows="+rows);
if (debug) out.println("
");
%>
<%
//left column
for (i=0;i
|
<%
if (i < middle)
{
%>
<%=link.content%><%
}
else
{
%>
<%
if (debug) out.print("...");
}
%>
|
|
<%
}
%>
| <%
if (useColumns) out.println(" | ");
%>
<%
//right column
for (i=-columnSplitLevel;i
<%
}
%>
|