<%-- #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("
"); %> <% if (useColumns) out.println(""); %> <% } %>
<% //left column for (i=0;i <% } %>
  <% if (i < middle) { %> <%=link.content%><% } else { %>  <% if (debug) out.print("..."); } %>
  <% //right column for (i=-columnSplitLevel;i
  <% if (i < 0) { %> <%=link.content%> continued... <% } else if (i+middle < links.size()) { %> <%=link.content%><% } else { %>  <% if (debug) out.print("..."); } %>