<%-- #BeginRZ-PageHeader --%> <%@ page language="java" %> <%@ include file = "/util/setup_editlist_header.jsp" %> <%-- #EndRZ-PageHeader --%> <%@ page import="revize.data.*,revize.publish.*,revize.store.*" %> <%-- *********************************************************************** TODO: review lines containing "custom portal code" for non-portal usage *********************************************************************** --%> <%! String linkmodule = ""; String[] linkrecords = new String[99]; String[] linkdisplays = new String[99]; /** * Determine folder for prior level section (if new button) * or current record section (if edit button) * * arg prior level for new button; recordid for edit button * type type of button: "new" or "edit" * * linkrecords[level] is the record used to determine the level tosection * (i.e. the first record encountered at the prior level) */ String getFolder(RZTagSupport rz, int arg, String type) { String folder = ""; String filter = ""; String recordid = ""; String tosectionid = ""; if (arg < 0) return ""; //no folder if arg is less than zero (top level) else if (type.equals("edit")) recordid = "" + arg; //use recordid else if (arg < linkrecords.length) recordid = linkrecords[arg]; //use prior level else return "_revize_folder_menu_level_too_high (" + arg + ")"; if (recordid == null) //recordid for arg level undefined return "_revize_folder_menu_level_invalid (" + arg + ")"; if (StringUtils.toInt(recordid,-999) < 0) //recordid invalid return "_revize_folder_links._recordid_invalid (recordid=" + recordid + ")"; tosectionid = rz.fetch(linkmodule,"linktosectionid","report,recordid="+recordid); if (rz.nodata) //no record returned from fetch return "_revize_folder_links._recordid_not_found (recordid=" + recordid + ")" + "\n--where=" + filter + "\n--" + tosectionid; if (StringUtils.toInt(tosectionid,-999) < 0) //sectionid invalid return "_revize_folder_sections.sectionid_invalid (sectionid=" + tosectionid + ")" + "\n--where=" + filter; filter = "sections.sectionid=" + tosectionid; //sections filter folder = rz.fetch("sections","folder","report",filter); if (rz.nodata) //section record not found return "_revize_folder_sections.sectionid_not_found (sectionid=" + tosectionid + ")" + "\n--where=" + filter + "\n--" + folder; return folder; } %> Revize Multi-level Menu: <%=rz.webspace%> <%--#RevizeProperties: USE REVIZE MENU (DOCUMENT PROPERTIES) TO EDIT DATA BELOW: status=edit server=revize.idetix.com:8089 projectName=webgen_dev label= location=menu-editlist.jsp version= docType=editpage subType=list moduleName= fieldName= channels=| description= --%> <%@ include file="/util/setup_editlist_javascript.jsp" %>
ADMIN/SETUP
Navigation Builder
<% String onoff = request.getParameter("onoff"); if (onoff != null) { boolean onoffValue = Boolean.valueOf(onoff).booleanValue(); PublishingEngine.getInstance(rz.webspace).setAcceptingPublishEvents(onoffValue); } String sectionidfield = ""; linkmodule = StringUtils.getParameter(request,"linkmodule"); if (linkmodule.equals("")) linkmodule="links"; String sectionid = StringUtils.getParameter(request,"sectionid"); //if (sectionid.equals("")) sectionid="0"; String sectionname = StringUtils.getParameter(request,"sectionname"); String sectionsfilter = StringUtils.getParameter(request,"sectionsfilter"); String pageidfilter = StringUtils.getParameter(request,"pageidfilter"); String pageid = StringUtils.getParameter(request,"pageid"); String displaylevel = StringUtils.getParameter(request,"level"); int toplevel = StringUtils.toInt(StringUtils.getParameter(request,"toplevel")); int bottomlevel = StringUtils.toInt(StringUtils.getParameter(request,"bottomlevel"),99); String linknewsection = StringUtils.getParameter(request,"linknewsection"); // custom portal code for top nav levels // TODO: (consider adding to sections module as optional fields) linknewsection = "content"; if (sectionsfilter.length() > 0) linknewsection = "*"; //force newsection=yes for top nav if (bottomlevel < 99) { if (StringUtils.toInt(sectionid) <= -3) bottomlevel = 0; else if (StringUtils.toInt(sectionid) < 0) bottomlevel = 1; } String folder = StringUtils.getParameter(request,"folder"); folder = StringUtils.toFilename(folder).toLowerCase(); String filelocation = "/uploads"; if (folder.length() > 0) filelocation = "/" + folder + "/uploads"; String nexturl = StringUtils.getParameter(request,"nexturl"); boolean showsectionids = ( StringUtils.getParameter(request,"showsectionids").equals("true") ); boolean showrecordid = ( StringUtils.getParameter(request,"showrecordid").equals("true") ); boolean showparentid = ( StringUtils.getParameter(request,"showparentid").equals("true") ); boolean showparentkey = ( StringUtils.getParameter(request,"showparentkey").equals("true") ); boolean showpagekey = ( StringUtils.getParameter(request,"showpagekey").equals("true") ); boolean showsortkey = ( StringUtils.getParameter(request,"showsortkey").equals("true") ); boolean showlevel = ( StringUtils.getParameter(request,"showlevel").equals("true") ); showlevel = true; boolean showstyle = ( StringUtils.getParameter(request,"showstyle").equals("true") ); boolean showhidden = ( StringUtils.getParameter(request,"showhidden").equals("true") ); //default false boolean showorphan = ( StringUtils.getParameter(request,"showorphan").equals("true") ); boolean showbuttons = ( !StringUtils.getParameter(request,"showbuttons").equals("off") ); //default true boolean showdebug = ( StringUtils.getParameter(request,"showdebug").equals("true") ); boolean showconsole = ( StringUtils.getParameter(request,"showconsole").equals("true") ); boolean auto = ( StringUtils.getParameter(request,"auto").equals("true") ); %> <% int displayedItems = 0; String selectedParentHash = ""; int columns_before_display = 0; //----- Check for required parameters, modules and field String errorMsg = ""; boolean isPublishing = PublishingEngine.getInstance(rz.webspace).isAcceptingPublishEvents(); if (!rz.isvalidmodule(linkmodule)) errorMsg += "
" + linkmodule + " module does not exist " + "(default is links) use \"linkmodule\" parameter on url to specify different module"; else { // Validate required fields String fieldMsg = ""; if (!rz.isvalidfield(linkmodule,"linkdisplay")) fieldMsg += ", " + "linkdisplay"; if (!rz.isvalidfield(linkmodule,"linkparent")) fieldMsg += ", " + "linkparent"; if (!rz.isvalidfield(linkmodule,"linkparentid")) fieldMsg += ", " + "linkparentid"; if (!rz.isvalidfield(linkmodule,"linklevel")) fieldMsg += ", " + "linklevel"; if (!rz.isvalidfield(linkmodule,"linkstyle")) fieldMsg += ", " + "linkstyle"; if (!rz.isvalidfield(linkmodule,"linksortkey")) fieldMsg += ", " + "linksortkey"; //TODO: these fields are required until code is upgraded to make optional if (!rz.isvalidfield(linkmodule,"linksectionid")) fieldMsg += ", " + "linksortkey"; if (!rz.isvalidfield(linkmodule,"linktosectionid")) fieldMsg += ", " + "linksortkey"; if (fieldMsg.length() > 0) errorMsg += "
" + linkmodule + " module does not contain the following required field(s): " + fieldMsg.substring(2); if (rz.isvalidfield(linkmodule,"linksectionid")) sectionidfield = "linksectionid"; else if (rz.isvalidfield(linkmodule,"sectionid")) //backward compatiblity sectionidfield = "sectionid"; if (sectionid.length() > 0 || sectionsfilter.length() > 0) { if (sectionidfield.equals("")) errorMsg += "
sectionid url parameter specified but " + linkmodule + " module does not contain linksectionid field"; } if (errorMsg.length() == 0 && !isPublishing) errorMsg = "Publishing is Disabled"; } // display message if (errorMsg.length() > 0) { %>
<%=errorMsg%>
<% } %>
<% if (showsectionids) { %> <% columns_before_display += 3; %> <% } %> <% if (showrecordid) { %> <% columns_before_display += 4; %> <% } %> <% if (showparentid) { %> <% columns_before_display++; %> <% } %> <% if (showparentkey) { %> <% columns_before_display++; %> <% } %> <% if (showpagekey) { %> <% columns_before_display++; %> <% } %> <% if (showsortkey) { %> <% columns_before_display++; %> <% } %> <% if (showlevel) { %> <% columns_before_display++; %> <% } %> <% if (showbuttons) { %> <% columns_before_display++; %> <% } %> <% columns_before_display++; // link name column also counted %> <% if (showstyle) { %> <% } %> <% String debugMsg = ""; String filter = ""; String options = "deletedrecords"; // filter used when NOT top nav // do not allow top nav if home page (sectionid==0) filter = sectionidfield + "=" + sectionid; //only this section links if (!sectionid.equals("0")) //or top nav pointing to this section... filter += " or linktosectionid=" + sectionid; //...if not home page // include rte links (override default of linkrte!=on) filter = "linkrte!=X and (" + filter + ")"; // allow all non-RTE links when section not specified if (sectionid.equals("")) filter = ""; // filter and options used for top nav if (StringUtils.sub(sectionid,0,1).equals("-")) { filter = sectionidfield + "=" + sectionid; if (!showdebug) options = ""; //no deleted records } String newPageId = "0"; if (StringUtils.sub(sectionid,0,1).equals("-")) newPageId = "-999"; boolean isEditOnlyNote = false; boolean isThisPageNote = false; boolean isRteLinkNote = false; boolean isCenterListNote = false; boolean isLastPageNote = false; boolean isNextPageNote = false; boolean isDeletedNote = false; boolean haveItem = false; int[] countActive = new int[0]; int[] countOrphan = new int[0]; %> <% //----- process menu items Object[] menuProperties = rz.menusort( "sectionid=" + sectionid + ",pageid=" + pageid + ",displaylevel=" + displaylevel ); HashMap menuStyle = (HashMap)menuProperties[0]; countActive = (int[])menuProperties[1]; countOrphan = (int[])menuProperties[2]; HashMap lastpage = (HashMap)menuProperties[3]; HashMap nextpage = (HashMap)menuProperties[4]; String style = ""; String stylePriorItem = ""; String styleReturn = ""; int indentlevel = 0; int menu_level = -1; //initialize with or w/o any links int next_level = 1; //skip next level new button int linklevel = 0; boolean[] selected_level = new boolean[99]; for (int i=0; i<99; i++) selected_level[i] = false; String linkdisplay = ""; String linkrte = ""; String linktype = ""; String recordid = ""; String linkid = ""; int parentid = 0; int linkparentid = 0; String linkpageid = ""; String linksectionid = ""; String linktosectionid = ""; String linkfolder = ""; String[] parentkeys = new String[99]; String[] linkparentids = new String[99]; String[] linksectionids = new String[99]; String[] linktosectionids = new String[99]; boolean showButton = false; //----- loop through all menu items plus 1 extra pass to close levels if (showconsole) debugMsg += "rz.listlimit: " + rz.listlimit + " filter=" + filter + "\n"; //----- Drop orphans or seq 999 from end of list if not displaying if (!showorphan) { int listIndexSave = rz.listindex; for (rz.listindex=rz.listlimit; rz.listindex>=0; rz.listindex--) { if (rz.listlimit < 0) break; linkdisplay = rz.fetch(rz.listmodule,"linkdisplay"); style = (String)menuStyle.get(rz.recordid); String sortkey = rz.fetch(rz.listmodule,"linksortkey","report"); if (style != null && !style.equals("menuOrphan") && !sortkey.substring(0,6).equals("999#99") && !sortkey.substring(0,6).equals("999+99") && !sortkey.substring(0,6).equals("999.99") ) break; if (showconsole) debugMsg += "Record Skipped:" + linkdisplay + "\n"; } rz.listlimit = rz.listindex; rz.listindex = Math.min(listIndexSave,rz.listlimit); style = ""; //reset } if (showconsole) debugMsg += "rz.listlimit: " + rz.listlimit + "\n"; while (rz.listnext() || rz.listindex <= rz.listlimit+1) { //----- Get data for this link item (unless last pass to add bottom new button) // TODO: consider reseting on last pass when outside array bounds however // some logic maya expect the most recent value for some varibles. if (rz.listindex>=0 && rz.listindex <= rz.listlimit) { recordid = rz.listitemid(); linkdisplay = rz.fetch(rz.listmodule,"linkdisplay","report"); linktype = rz.fetch(rz.listmodule,"linktype","report"); linksectionid = rz.fetch(rz.listmodule,sectionidfield,"report"); linktosectionid = rz.fetch(rz.listmodule,"linktosectionid","report"); linklevel = StringUtils.toInt( rz.fetch(rz.listmodule,"linklevel","report") ); linkid = rz.fetch(rz.listmodule,"linkid","report"); linkparentid = StringUtils.toInt( rz.fetch(rz.listmodule,"linkparentid","report") ); linkpageid = rz.fetch(rz.listmodule,"pageid","raw"); if (rz.nodata) linkpageid = "0"; if (rz.tracestack.length() > 0) break; //quit if errors } //----- Get prior level parentid (set to 999 if top level) parentid = 0; if (linklevel > 0 && linkrecords[linklevel-1] != null) parentid = StringUtils.toInt(linkrecords[linklevel-1]); if (parentid == 0) parentid = 999; if (showconsole) { debugMsg +="listindex: " + StringUtils.right("000"+rz.listindex,3) + " rec(" + StringUtils.right("000"+rz.listitemid(),3) +") " + " menu_level=" + menu_level + " " + linkdisplay + "\n" + " parentid=" + parentid + " linkparentid=" + linkparentid + " linkpageid=" + linkpageid + "\n"; } if (!style.equals("")) stylePriorItem = style; if (rz.listindex < 0 || rz.listindex > rz.listlimit) { style = ""; //keeps item from displaying linklevel = 0; linkparentid = 0; } //**************************************************************** // Througly test when no menu items pass filter or test below // New button must appear so we can't execute break; //**************************************************************** else if ( sectionid.length() > 0 && !showorphan && !sectionid.equals(linksectionid) //link not created on this page && !sectionid.equals(linktosectionid) //link does not point to this page && lastpage.get(rz.listitemid())==null //not placed on last page && nextpage.get(rz.listitemid())==null //not placed on next page //&& parentid != linkparentid //parent not displayed on this page ) { //then skip this item if (showconsole) { debugMsg +="skip: sectionid=" + sectionid + " linksectionid=" + linksectionid + " linktosectionid=" + linktosectionid + "\n"; } style = ""; //keeps item from displaying if (rz.listindex == rz.listlimit && rz.listlimit > 0) rz.listindex++; //bump loop counter if not at beg or end if (haveItem) continue; //can not continue if new button not displayed } else { style = (String)menuStyle.get(rz.listitemid()); if (style == null) style = "menuUnknown"; styleReturn = style; linkrte = rz.fetch(rz.listmodule,"linkrte","raw"); indentlevel = linklevel; if (toplevel > 0) indentlevel = indentlevel-toplevel+1; if (style.equals("menuOrphan")) indentlevel = 0; if (style.equals("menuHidden") && !showhidden) style=""; if (style.equals("menuOrphan") && !showorphan) style=""; if (style.equals("menuSelectedParent")) // && selectedParentHash.equals("")) selectedParentHash = recordid; linkrecords[linklevel] = recordid; //remember parent recordid linkdisplays[linklevel] = linkdisplay; //remember last item encountered } linkparentids[linklevel] = new Integer(linkparentid).toString(); linksectionids[linklevel] = linksectionid; linktosectionids[linklevel] = linktosectionid; if (showconsole) { debugMsg +="*linklevel: " + linklevel + " linksectionids:" + linksectionids[linklevel] + " linktosectionids:" + linktosectionids[linklevel] + "\n"; } // link tag below used to define link manager properties including default folder // and page permission inheritance for buttons. // link tag needed here when no items; otherwise only call when items are visible // to prevent reset permission properties for hidden items. if (rz.listlimit < 0) { %> <% } //----- Determine next level if (rz.listindex < rz.listlimit && !styleReturn.equals("menuOrphan")) next_level = Integer.parseInt(rz.groupnextvalue); else next_level = -1; //move all the way up if (showconsole) { debugMsg +="next_level:" + next_level + " style:" + styleReturn + " displayed:"+(style.length()>0) + "\n"; } %> <% //----- If moving down a level if (menu_level < linklevel && rz.listindex <= rz.listlimit) { // prior level folder (errors reported when button clicked) linkfolder = getFolder(rz,menu_level,"new"); if (showconsole) { debugMsg +="move down("+(menu_level)+" --> "+linklevel + "): StylePriorItem:" + stylePriorItem + "\n folder:" + linkfolder + "\n"; } menu_level = linklevel; // remember next level showButton = false; if (menu_level == 0 || stylePriorItem.equals("menuSelectedItem") || stylePriorItem.equals("menuSelectedParent")) showButton = true; if (menu_level < toplevel || menu_level > bottomlevel) showButton = false; if (sectionid.equals("-999")) showButton = false; if (showButton) { selected_level[menu_level] = true; String alt = "Create New Item at "; if (menu_level == 0) alt += "TOP "; alt += "(" + linkdisplays[menu_level] + ") Level " + menu_level; %> <% if (showstyle) { %> <% } %> <% if (false) { //fake out DW %> <% } %> <% } // end if style == menuSelectedItem } // end of moving down a level /////////////////////////// START OF VALID MENU ITEM //////////////////////////// if (!style.equals("") && rz.listindex >= 0 && rz.listindex <= rz.listlimit) { haveItem = true; displayedItems++; if (showconsole) debugMsg += "Valid Link:" + linkdisplay + "\n"; %> <% %> <% if (showsectionids) { %> <% } %> <% if (showrecordid) { %> <% } %> <% if (showparentid) { %> <% } %> <% if (showparentkey) { %> <% } %> <% if (showpagekey) { %> <% } %> <% if (showsortkey) { %> <% } %> <% if (showlevel) { %> <% } %> <% if (showbuttons) { %> <% } //end button column %> <% if (showstyle) { %> <% } %> <% showButton = false; // next level is not same as this level and this item selected if (menu_level >= next_level && style.equals("menuSelectedItem")) showButton = true; // center list if (menu_level >= toplevel //not current page && !linkpageid.equals("0") //not left nav && !linkpageid.equals("-999")) //not top nav showButton = false; //must be center list // embedded link if (linkrte.equals("yes")) showButton = false; // don't show the next level new button on next page items. if (sectionid.length() > 0 && !sectionid.equals(linksectionid) //link not created on this page && !sectionid.equals(linktosectionid) //and not a link to this page && parentid == linkparentid) //and parent displayed on this page showButton = false; //so "Last Page" or "Next Page" link /* TODO: not sure why this was added - may omit new button somewhere // linkto another section and not top nav if (!linktosectionid.equals(sectionid) && !StringUtils.sub(sectionid,0,1).equals("-")) showButton = false; */ // outside of top and bottom level ranges if (menu_level < (toplevel-1) || menu_level >= bottomlevel) showButton = false; if (showButton) { // folder errors reported when new button clicked linkfolder = getFolder(rz,linklevel,"new"); if (showconsole) debugMsg += "new folder(level=" + linklevel + "):" + linkfolder + "\n"; //----- Determine parentkey for permissions & newtosectionid for section option String newtosectionid = "0"; //if parent is same as page section... //...let linkmanager define tosectionid String parentkey = rz.fetch(linkmodule,"linkparent","report"); // Does this link go to a new section? if (!linksectionid.equals(linktosectionid)) //new sectionid { linktype = rz.fetch(linkmodule,"linktype","report"); // template or urltemplate if (linktype.indexOf("template") != -1) { String linkpage = rz.fetch(linkmodule,"linkpage","report"); if (linkid.equals("-999")) //unique parentkey = linkpage + "[]"; else //dependent parentkey = rz.fetch(linkmodule,"linkpage","report") + "[" + linkid + "]"; // if parent is template type, set tosectionid to parent recordid if (linktype.equals("template")) { newtosectionid = recordid; } // if urltemplate, then check referenced template // (leave newtosectionid=0 if template record not found) else { String whereopt = linkmodule + "recordid=" + linkid; rz.fetch(linkmodule,"linktosectionid","report,"+whereopt); newtosectionid = rz.content; } } // Leave newtosectionid=0 for any other type of link } %> <% if (showstyle) { %> <% } %> <% if (false) { //fake out DW %> <% } %> <% } } //////////////////////////// END OF VALID MENU ITEM ///////////////////////////// //----- While moving up a level (next_level=-1 if this is last item) while (next_level < menu_level) { // folder errors reported when new button clicked linkfolder = getFolder(rz,menu_level-1,"new"); //prior level folder if (showconsole) { debugMsg +="moving up("+menu_level+" --> "+ (menu_level-1) +"): rec(" + recordid + ") next_level:" + next_level + "\n folder:" + linkfolder + "\n"; } showButton = false; if (haveItem && (menu_level == 0 || selected_level[menu_level])) showButton = true; if (menu_level < toplevel || menu_level > bottomlevel) showButton = false; if (showButton) { String alt = "Create New Item at "; if (menu_level == 0) alt += "TOP "; alt += "(" + linkdisplays[menu_level] + ") Level " + menu_level; selected_level[menu_level] = false; %> <% } menu_level--; // reduce group level } // end while menu_level > 0 %> <% if (rz.listindex >= rz.listlimit) rz.listindex++; //bump counter on last & extra pass } // end rz:list while %> <% if (false) { //fake out DW %> <% if (showstyle && false) { //should be needed but messes up when showstyle is true%> <% } %>
sectionid
tosectionid
recordid
linkid
parentidparentkeypagekeysortkeyLevel1Actions Seq 
  Choose Section: exit                  <%-- #BeginRZ-ActionImage --%> <%-- Option:type=EditListExitImage --%> <%-- Option:forwardURL= --%> <%-- Option:imageSrcURL=images/edit/exit.gif --%> <%-- #EndRZ-ActionImage --%>
 style
  <% for (int i=0; i<(indentlevel*2)+1; i++) { %> <% } //----- If newtosectionid is NOT zero, new section option is not available // (this code repeated for other new button at same level) // String newtosectionid = sectionid; //start with existing sectionid if (menu_level > 0 && linktosectionids[menu_level-1] != null) //if there is a parent record newtosectionid = linktosectionids[menu_level-1]; //parent tosectionid if (toplevel == menu_level || newtosectionid.equals(sectionid)) //if parent is not a new section... newtosectionid = "0"; //...allow new section option if (showconsole) { if (menu_level > 0) debugMsg +="top new button same level menu_level:"+(menu_level-1) + " parenttosection:" + linktosectionids[menu_level-1] + "\n sectionid:" + StringUtils.sub(sectionid+" ",0,2) + " newtosectionid:" + newtosectionid + "\n"; } %> <%-- #BeginRZ-ActionImage --%> <%-- Option:type=EditListInsertImage --%> <%-- Option:imageSrcURL=images/edit/new_sm_parent.gif --%> <%-- #EndRZ-ActionImage --%>  
             <%=recordid%>    <%=linkid%>  <%=linkparentid%> <% if (linktype.indexOf("template") != -1) { rz.fetch( rz.listmodule, "linkpage" ); rz.content += "[" + linkid + "]"; } %> <%=rz.content%>  <%=linklevel%>  <% if (linkrte.equals("yes")) //added by rte { isRteLinkNote = true; %> RTE Link4 <% } else if (menu_level >= toplevel //not current page && !linkpageid.equals("0") //not left nav && !linkpageid.equals("-999")) //not top nav { isCenterListNote = true; %> Center List3 <% } else if (menu_level >= toplevel && lastpage.get(recordid) != null) { //link created on last page as indented link and must be edited there isLastPageNote = true; %> Prior Page2 <% } else if (nextpage.get(recordid) != null) { //link created and only appears on next page and must be edited there isNextPageNote = true; %> Next Page2 <% } else if (sectionid.length() > 0 && !sectionid.equals(linksectionid)) //link not created on this page { //assume points to this page because it is not "Last Page" or "Next Page" isThisPageNote = true; %> Section Home2 <% } else { // start button display %> <%-- #BeginRZ-ActionImage --%> <%-- Option:type=EditListEditImage --%> <%-- Option:imageSrcURL=images/edit/edit_sm.gif --%> <%-- #EndRZ-ActionImage --%> <% if (next_level > linklevel) { // display * footnote if lower level items %> Parents with Childen cannot be deleted <% isEditOnlyNote = true; } else { // display delete if NO lower level items %> <%-- #BeginRZ-ActionImage --%> <%-- Option:type=EditListDeleteImage --%> <%-- Option:forwardURL= --%> <%-- Option:imageSrcURL=images/edit/delete_sm.gif --%> <%-- #EndRZ-ActionImage --%> <% } // end delete display %> <% } // end button display %> ">    "> <% for (int i=0; i<(indentlevel*2); i++) { %> <% } String icon = "space"; if (next_level > linklevel) //lower level items { icon = "plus"; if (showhidden || style.indexOf("SelectedItem") != -1 || style.indexOf("SelectedParent") != -1 ) icon = "minus"; } String deletedFlag = ""; if (rz.record.isMarkedForDeletion() && showdebug) { deletedFlag = "+"; isDeletedNote = true; } //----- rz:link tag needed below to set permissions properties %> <%=linkdisplay%><%=deletedFlag%>  <%=style%>
  <% for (int i=0; i<((indentlevel+1)*2)+3; i++) { %> <% } %> <% String alt = "Create New Item at Next Level (" + (linklevel+1) + ")"; %> <%-- #BeginRZ-ActionImage --%> <%-- Option:type=EditListInsertImage --%> <%-- Option:imageSrcURL=images/edit/new_sm.gif --%> <%-- #EndRZ-ActionImage --%>  
<% } else { out.println("");} %> Click on New button add a link; <% if (haveItem) { %> Click on link name to create or view lower links
<% } %> Click on Exit button when done adding links

NOTES:

<% if (isEditOnlyNote) { %> Parents with Childen cannot be deleted Links with children can not be deleted
<% } %> <% if (isDeletedNote) { %> + These Links are marked as deleted but referenced by a url link
<% } %> <% if (haveItem) { %> 1) Depth within the site of page containing the link (Home page and top nav are level 0)
<% } %> <% if (isThisPageNote || isLastPageNote || isNextPageNote) { %> 2) These links must be edited on the page where they were added
<% } %> <% if (isCenterListNote) { %> 3) These links must be edit from the center of this page
<% } %> <% if (isRteLinkNote) { %> 4) These links must be edited within the Rich Text Editor
<% } %>
 
<% String roles = rz.getcookievalue("RZroles"); if(!showdebug) { %> <% } %>
<% if (showdebug) { %>
<% } %>
<%= rz.tracestack %>
<%= debugMsg %>