[xwiki-devs] How can I dynamically create a panel?

Glenn Everitt Glenn.Everitt at compuware.com
Fri Apr 11 21:35:05 CEST 2008


Here is what I finally got to work:

    public void createPanelForSpace(String uid, String spaceName, String
wikiGroupName, XWikiContext context) throws XWikiException
    {
    	//Get the Panels document to add a panel object   	
    	XWikiDocument panelsDoc =
context.getWiki().getDocument("Panels.WebHome", context);
    	BaseObject bobj = panelsDoc.newObject("Panels.PanelClass", context);

    	//create a panel
    	String panelName = spaceName+"Pnl";
    	bobj.setStringValue("name", panelName);    	
    	bobj.setStringValue("type", "view");
    	bobj.setStringValue("description", "Dynamic Panel for " + spaceName);
    	bobj.setStringValue("category", "Navigation");
    	//format the content of the panel
		String content = "#panelheader('" + spaceName + "Links')" +
		                 " * [Home>" + spaceName + ".WebHome]" +
                         " <p style=\"font-size:0.75em;padding-left:8px;\">
\"$xwiki.getDocument(\"Panels." (Edit this panel) </p>" +
                         " #panelfooter()";
		bobj.setStringValue("context", content);
        context.getWiki().saveDocument(panelsDoc,
context.getMessageTool().get("core.comment.createdUser"), context);

        //add to left panel list in XWiki.XWikiPreferences
    	XWikiDocument prefsDoc =
context.getWiki().getDocument("XWiki.XWikiPreferences", context);
    	BaseObject prefsObj = prefsDoc.getObject("XWiki.XWikiPreferences");
    	String csvLeftPanelList = prefsObj.getStringValue("leftPanels");
    	csvLeftPanelList = csvLeftPanelList + ",Panels."+panelName;
    	prefsObj.setStringValue("leftPanels", csvLeftPanelList);
        context.getWiki().saveDocument(prefsDoc,
context.getMessageTool().get("core.comment.createdUser"), context);

        //give the group permission to panels
    	XWikiDocument panelPrefsDoc =
context.getWiki().getDocument("Panels.WebPreferences", context);    	
        BaseObject panelRightsObject =
panelPrefsDoc.newObject("XWiki.XWikiGlobalRights", context);
        panelRightsObject.setLargeStringValue("groups", wikiGroupName);
        panelRightsObject.setStringValue("levels", "view");
        panelRightsObject.setLargeStringValue("users", "");
        panelRightsObject.setIntValue("allow", 1);
    }
-- 
View this message in context: http://www.nabble.com/How-can-I-dynamically-create-a-panel--tp16406339p16628228.html
Sent from the XWiki- Dev mailing list archive at Nabble.com.



More information about the devs mailing list