Cibref3Code

From Fxp Wiki

Jump to: navigation, search
 
package vendo;
//
// Developped by Francois Cib, september the 30th, 2003
// 
// Builds a tree of the referring pages from a root pages passed as parameter
// Results are nested as lists (ul, li) of links with a "class" attribute indicating
// the sub-level.
 
import com.ecyrd.jspwiki.*;
import java.util.*;
import java.io.*;
import com.ecyrd.jspwiki.tags.WikiTagBase;
import com.ecyrd.jspwiki.plugin.WikiPlugin;
import com.ecyrd.jspwiki.WikiContext;
import java.util.Map;
 
public class cibref3 implements WikiPlugin {
WikiEngine wiki;
 
StringBuffer output = new StringBuffer();
	
  public String execute (WikiContext Context, Map ParameterMap) {
	  String pname=null;
	  String monresult="";
	  String strLevel;
	  int mylevel=4;
try{
	if(ParameterMap != null) 
	{ // just because I am somehow paranoid
         pname = (String)ParameterMap.get("pname");
	 strLevel = (String)ParameterMap.get("level");
	mylevel =  Integer.parseInt(strLevel);
	}
 
 
wiki = Context.getEngine();
 
PageManager m_pageManager = wiki.getPageManager();
Collection allpages = m_pageManager.getAllPages();
ReferenceManager m_referenceManager = wiki.getReferenceManager();
Collection unrefpages = m_referenceManager.findUnreferenced();
 
    	 if(allpages == null || allpages.isEmpty() ){
		 output.append(" allpages is null ou empty <br />");
	 }
	 else {
		 output.append(" allpages: "+ allpages.size() +"<br />");
		 }
	  if(unrefpages == null || unrefpages.isEmpty() ){
		 output.append(" unrefpages is null ou empty <br />");
	 }
	 else {
		 output.append(" unrefpages: "+ unrefpages.size() +"<br />");
		 }
//output.append(output);
//    }
//    catch (Exception e) {
//	      output.append("Something bad happened!" + e);
//	}
String mapage= pname;
	output.append("<h3>" +"<a href=\"" + wiki.getViewURL(mapage) + "\">" + mapage +"</h3></a>");
loopRef(m_referenceManager,mapage, mylevel, out);
monresult =  output.toString();
}
catch(Exception e){}
return "<div class=\"cibref\">" + pname + monresult + " </div>";
}
 
private Writer out;
int count = 0;
   
public String loopRef(ReferenceManager m_referenceManager, String mypage,int level, Writer out) throws IOException  {
	
	try {
	this.out = out;
	
	Collection pages = m_referenceManager.findReferrers(mypage);
		if(pages == null || pages.isEmpty() ){
		 //output.append("(no referringto this page)");
		 }
	 
		if( pages != null  && !pages.isEmpty() ){	   
		output.append("<ul class=\"cibrefLevel" + count +"\">");
		Iterator it = pages.iterator();
			while( it.hasNext()  ) 
			{
			    String value = (String)it.next();
			    output.append( "<li><a href=\"" + wiki.getViewURL(value) + "\">" + value +"</a></li> \n");
			    //output.append("count = " + count +"<br />");	
				if (count < level){
				count++;
				loopRef(m_referenceManager, value, level, out);
				count--;
				}
			}
			output.append("</ul>");
		}
	}
	catch(Exception e){}
		return "";
}
}
 
Personal tools