XWiki Office Development

Last modified by Thomas Mortagne on 2017/03/24 12:27

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.

Documentation

You may need to disable your popup blocker for this page in order to view the documentation

XWord 1.0 M1 xml-doc

XWord 1.0 M2 xml-doc

Sources

XWiki Office on GitHub

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"

Mockup

For some reason I did not manage to save the mockup properly, here's the resulting image file though:

XWordInterfaceImprovementIdeas.png

XML-RPC.net proxy

Here's the code for a basic Xml-Rpc proxy using Charles Cook's XmlRpc.net:

using System;
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

IXWikiProxy proxy = XmlRpcProxyGen.Create<IXWikiProxy>();
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");

This is a draft and is not currently used in XOffice
CookComputing 'translates' the java maps into .net structs. Using classes with the same members(as fields + properties) doesn't work.

Survey

Who are you?























18. Are you satisfied with the use of XOffice concerning:







Thanks a lot for your time :-)

Contact us at [email protected] to find out more about our products and services.

Need assistance with this form?

Get Connected