Roadmap-free Sprint #1

Last modified by Thomas Mortagne on 2020/01/28

Apr 20 2015

From the 30th of March till the 12th of April the developers who are part of the Product team of the XWiki SAS company were given 2 weeks to work on whatever they wanted (actually it was closer to 1 week counting the fact that they still had to do community support, internal support, BFD, and more). Normally they follow the XWiki SAS proposed roadmap (see slide 12 of this presentation) but we decided to try this 2 week sprint to see what would come out. The developers were: Thomas, Marius, Guillaume D, Edy, Caty, Victor, Gabriela and Vincent.

Here's what was achieved:

URL Improvements

Vincent worked on improving URL handling in XWiki and especially the ability to register new URL types (he refactored the WebJar module to use this feature and it's now using the new format http://<server>/<context path>/webjars/<path/to/resource>[?version=<version>&evaluate=true|false]).

For example to add support for a new webjars URL type you'd write (see the documentation for more):

@Component
@Named("webjars")
@Singleton
public class WebJarsResourceReferenceHandler extends AbstractResourceReferenceHandler<ResourceType>
{
   /**
     * The WebJars Type.
     */

   public static final ResourceType TYPE = new ResourceType("webjars");

   @Override
   public List<ResourceType> getSupportedResourceReferences()
   {
       return Arrays.asList(TYPE);
   }

   @Override
   public void handle(ResourceReference resourceReference, ResourceReferenceHandlerChain chain)
       throws ResourceReferenceHandlerException
   {
       [...]
   }
}

Note that this support is dynamic so you can package these Resource Handlers in your extension and once installed through the Extension Manager the new URLs will be active!

Technical Documentation Skin Proposal

Caty focused on creating a proposal for a Technical Documentation Skin. It's named 'Jay Skin' and you should read the proposal.
previewJaySkin.png
The purpose of this proposal was to strip Flamingo Skin of any unneeded visual noise and just focus on navigation and content.

The main difference from Flamingo are the extensible panel areas, which hide the #docextra functionality (Comments, History, etc.) providing more room for content and simplifying the view. There are a lot of small things in the Jay Skin proposal that might be transparent to the end user, but there are small changes to the search bar, title area, table of content zone, parent editing, subheading editing, tags zone, tree styling, menu application styling, logo area, mobile view, accordion styling, code typography usage, etc. 

In the process of creating the skin, issues were also reported on XWiki 7.0 (XWIKI-11992, XWIKI-11988, XWIKI-11987, XWIKI-11985, XWIKI-12028, CKEDITOR-4, CKEDITOR-3 ). Creating proposals on the latest version and hacking into XWiki always surface bugs that you might otherwise miss. 

Syntax Highlighting and Autocomplete applications improvements

Eduard worked on various improvements for the Syntax Highlighting Application and the Autocomplete Application, finalizing with the release of the 3.0 version.

The work mainly centered around refactoring the applications to use RequireJS and Webjars, thus removing a lot of clutter introduced by the previous implementations.

wikiEditor-ambrient-theme.png

Among the improvements, there are:

  • Added an Administration section to configure the application
  • Added support for using the 33 themes provided by the CodeMirror project
  • Syntax highlighting is now also available in the object editor for the code property of objects of the XWiki.WikiMacroClass class
  • Upgraded to CodeMirror 5.1

See the full list of issues.

Extract old rendering engine and xwiki/1.0 syntax related code from oldcore

All the code related to xwiki/1.0 syntax and old rendering engine has been extracted from oldcore in its own module. The module can work as extension. It's still included by default in released XE along with the legacy modules to test it a bit but it will soon be completely removed and only available as an extension.

See https://jira.xwiki.org/browse/XWIKI-12001.

App Within Minutes - Improvements

Gabriela worked on improving App Within Minutes Application. She managed to make a design proposal -  available here and also fixed a couple of issues.
She made the decision to improve AWM application, because while working on some applications created with AWM, there were needed some minor improvements present in each of them.

Here are some major changes on the homepage

Here is the list of issues.

Android authenticator (unfinished)

An Android application which add a reusable Android Authenticator and automatic contact synchronization (based on XWiki users) has been started on https://github.com/xwiki-contrib/android-authenticator.

Solr Search UI Improvements

We worked on making the search UI responsive on small screens. On mobile phones the list of search facets is now collapsed above the search results and the user can toggle it. We improved the way the search results of type Object and Object Property are displayed (check the result title and location / breadcrumb). We switched to using the icon themes for the search result icons and we also fixed some small spacing and alignment issues introduced by the migration from the old Colibri skin to the new Flamingo skin. Last but not least, we worked on refreshing the search UI without reloading the entire page when the user sorts the search results, uses the pagination or drills down the results using the search facets.

The developers might be happy to know that the Velocity macros from the Main.SolrSearch page have been moved to a separate page, Main.SolrSearchMacros, which should ease the creation of a custom search page (e.g. if you want reuse some macros and to overwrite others).

Integration tests for JavaScript with Jasmine + RequireJS + WebJars

We investigated the possibility of writing integration tests for JavaScript code that uses AMD (RequireJS) and that has dependencies packaged as Webjars. We found out that the Jasmine Maven Plugin has support for both AMD and WebJars. You can check out this commit to see how we configured the plugin.

Get Connected