XWiki Office Development
Development Resources
XOffice is based on the .NET Framework and is written, in most part, in C#. Still, it is a XWiki.org project so most topics covered on http://dev.xwiki.org/ also apply here.
External Links
Documentation
XWord 1.0 M1 xml-doc
XWord 1.0 M2 xml-doc
Sources
Mailing Lists
XWiki Office shares the same mailing lists of the XWiki project as a whole.
XWord Interface Improvement Ideas
After playing a bit with XWord, here are a couple interface improvement ideas. They're following these general principles:
- Actions should not be duplicated between the ribbon and the navigation pane
- Actions should be close to the place where they make the most sense
The implications of these principles will be explained more clearly below :-)
Suggested feature organization
Basically it means putting each feature either in the navigation pane's context menu or in the ribbon - not both - depending on where it fits best. Here's a suggested list:
In the navigation pane
- Top level: 2 buttons located where the big "Save" button currently is
- Refresh the navigation pane
- Create a new space
- Space: button in the context menu
- Add a page to this space
- Page: button in the context menu
- Edit this page
- Attachment: button in the context menu
- Download
- If suppported format: download to edit
In the ribbon
- Settings: buttons in a ribbon element named "Settings" - active all the time
- Choose syntax
- Toggle wiki explorer (displayed / hidden)
- Wiki Page: buttons in a ribbon element named "Wiki page" - active when the current document is a wiki page
- Save page
- View in browser
- Word Document: buttons in a ribbon element named "Word document" - active when the current document is a MS Word document
- Upload current document to a page
- A dialog pops up saying "Please select the page you want to upload this document to in the wiki explorer"
- When the user clicks on the page name, another dialog says "Upload to PageName was successful"
- Upload current document to a page
Mockup
For some reason I did not manage to save the mockup properly, here's the resulting image file though:
XML-RPC.net proxy
Here's the code for a basic Xml-Rpc proxy using Charles Cook's XmlRpc.net:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CookComputing.XmlRpc;
namespace XWiki.XmlRpc
{
public interface IXWikiProxy : IXmlRpcProxy
{
[XmlRpcMethod("confluence1.login")]
String Login(String username, String password);
[XmlRpcMethod("confluence1.getSpaces")]
SpaceSummary[] GetSpaces(String token);
[XmlRpcMethod("confluence1.getSpace")]
SpaceSummary GetSpace(String token, String spaceId);
[XmlRpcMethod("confluence1.getPage")]
Page GetPage(String token, String pageId);
[XmlRpcMethod("confluence1.getPages")]
PageSummary[] GetPages(String token, String spaceId);
}
public struct PageSummary
{
public String parentId;
public String title;
public String url;
public String[] translations;
public String space;
public String id;
}
public struct SpaceSummary
{
public String name;
public String key;
public String url;
}
public struct Page
{
public String parentId;
public String title;
public String url;
public String[] translations;
public String space;
public String id;
public String content;
}
}
Using the XmlRpc proxy
proxy.Url = "http://10.19.1.232:8080/xwiki/xmlrpc";
String token = proxy.Login("Admin", "admin");
Page pageInfo = proxy.GetPage(token, "Main.WebHome?language=fr");
String frenchContent = pageInfo.content;
SpaceSummary[] spaces = proxy.GetSpaces(token);
PageSummary[] pages = proxy.GetPages(token, "Main");