Macros for displaying and editing properties

Last modified by Michael Hamann on 2023/01/09 17:28

Estimated workload

350 hours (Large size project)




When displaying or editing a document that has structured data with properties like this Google Summer of Code project document, a so-called sheet document is used that defines how these properties are displayed. For example, the sheet for Google Summer of Code projects defines that the mentor(s) are displayed first. At the moment, such sheets use Velocity code for displaying both the names and the values of the properties. An example for such a sheet is provided in the FAQ application tutorial. Not all users in a wiki are allowed to create documents with Velocity code. The idea of this project is to create macros for displaying and editing properties such that sheets can be created by users without script right. For this, common needs how to display properties should be identified and the macros should also be integrated in Apps Within Minutes which automatically creates such sheet documents as a step towards making it possible to use it without script right.

The idea of this project is not to develop an independent extension but to contribute new core features to XWiki. As such, a close collaboration with the mentor(s) and the rest of the XWiki development team is required to make sure that the contributions match the best practices of XWiki and any API changes (e.g., new macro parameters) need to be agreed by the other developers. Also, extensive unit and integration tests need to be added. At least parts of the features should be added to the display macro which currently just allows displaying a whole page such that this macro can also display individual properties. It needs to be researched and discussed if displaying a label and possibly hint for the property should be done in an extra macro or in the same macro (e.g., controlled by a parameter). Further, there might be the need for other features like hiding empty properties in view mode or displaying some properties like a title only in edit mode.

This project is quite technical and won't produce anything flashy but it will be an important and valued contribution to the XWiki project. Through this project, you can gain a deep understanding of core parts of XWiki but also software development practices like testing.

To get started, it is suggested to follow the FAQ application tutorial in order to get a basic understanding how sheets work. Further, you should understand the vertical form layout and in-place editing as these are the HTML structures that need to be created by the macro(s). If necessary, it could also be possible to modify in-place editing to support whatever is needed for the macro(s), this is something to take into account when developing the macros. For example, it could be interesting to move attributes from the definition list to some inner element to make it possible to put the macro for the label and hint inside a regular definition list syntax.

Developer profile

The implementation needs to be done in Java and Velocity, some HTML will be required, too. It is possible that some extra features could also be developed in JavaScript.






Get Connected