XClasses picker improvements

Last modified by Manuel Leduc on 2026/08/25 12:26

Description

Currently, the XClass picker (Velocity classPicker macro) is used in two places in the product:

  • In the XObjects editor, to picked XClasses to add
  • In the XClass editor, to navigate to another XClass

The current implementation has several limitations:

  • There is no notion of visibility: all the XClasses the user can view are listed
  • The provided details about the XClass are minimal and technical: space reference + page title of the class
  • There is no distinction between technical XClasses and XClasses created by end users (e.g., through awm)

This leads to a poor user experience when it comes to the selection of an XClass by end users (i.e., without advanced technical understanding of the product).

In the context where we'd like to let user pick XClasses to display them in structured way, it is interesting to improve the picker to let user display wiki data in a user-friendly way.

Use Cases

  • UC1: Technical information is hidden by default. An author picks "Meeting" without knowing, or ever seeing, `Meeting.Code.MeetingClass`.
  • UC2: Users are provided with enough information to make a choice. An author faced with "Meeting" and "Meeting minutes" can tell which is which before committing.
  • UC3: The number of XOjects is displayed. An author avoids picking a class that holds no data, because the picker makes that visible.
  • UC4: Technical classes are only presented to advanced users. A user must deliberately pick a technical class such as `XWikiUsers`.
  • UC5: The notion of technical vs. user-defined XClass is decoupled from AWM.

Requirements

  • R1:  Suggestions match on a human-readable name, not only on the class reference.
  • R2:  Every XClass shows its title, its location, the number of existing XObjects.
  • R2.1: Optionally, the picker shows a summary of the XClass' property names.
  • R3:  Technical classes are not offered to non-advanced users.
  • R4:  Advanced users can see technical XClasses.
  • R5: View rights (and possibly other rights?) are enforced.
  • R6: The picker must scale with the number of XClasses and XObjects
  • R7: The picker must stay backward compatible

 


 

Get Connected