Proposal for view/edit page Permissions(Rights) UI

Hey everyone,

Here’s a proposal for the view and edit page permissions. The name scheme is something that I would like to start actually.

In XWiki these are called Rights, but the denomination Permission is more widely utilized on other apps and software. Changing this for XWiki would be a burden in documentation, source code and breaking user flows, but I think that for Cristal we could start realigning ourselves with other applications, for simplicity’s sake. What do you think?

Anyway, back to permissions in Cristal. To view and edit them, I would like to propose a page inside a modal. This modal would serve for all kinds of personalization options, but right now we will focus on permissions.

To open the modal there’s an option on the more button.

admin dialog open (1)

Modal opened

Permissions menu already selected (appearance and content are placeholder only for now)

At the start of the modal, below the main title, there’s a hint that states the backend that this page belongs to and a short text explaining that these permissions comes from that backend.

Screenshot 2024-12-17 at 10.07.25

Filtering for users and groups can be done with the default LiveData filter:

Screenshot 2024-12-17 at 10.08.14

Children pages
Different from XWiki, where we have separate pages, in Cristal I am proposing that the permission screen is the same for the page and its children. There’s a checkbox (default on) that controls who is the recipient of the permissions, if the permissions are the same for the page and its children then only one table will be shown.

If the users want to separate them, they check the box and a second table will appear, one that controls permissions for the children pages.

Scroll and pagination
This screen can grow very much depending on the amount of users and groups, that’s why it would be nice to have scrollbars individually for each table.

Pagination is also probably that will be needed, just not pictured here.

Different backends
With the support of vairous backends this screen will need to be adapted for each, so in case of the filesystem for example the table might look something like this:

Ending thoughts

As you can see, this screen is not that different from others like the ones from XWiki. The proposal is more focused on ways to access it and some details like the checkbox to see permissions from children and the different nomenclature. Some fields might be different, especially regarding the work being done with Required Rights, but I feel the same pattern shown here will be applicable in that case.

Thank you for reading and please tell me your thoughts on this.

Thx for the proposal Thiago!

I think that we should also propose what we want to do for XS, and that proposals should be made together for both Cristal and XWiki since we want to merge their UIs in the not-too-far future :slight_smile:

The downside is that there’s less space for admin UI options. Can you see this working for XS too? It’s easy to imagine it for Cristal because it’s quite empty ATM but if you check the XWiki Admin UI, you’ll see there are plenty of options, including one for the Panel which has a panel wizard taking lots of space for ex (maybe we don’t want to keep that, idk, it’s just an example of a screen requiring lots of space).

The Rights screen is actually a good example too since the number of rights is unbounded (there can be 30 right types for example). It seems to me that we’re doing the same mistake than what we did in XS, ie consider that the # of rights is small and fits on the screen or almost fits (I already don’t like in your screenshot that Admin or Programming Rights are not shown, I think that’s not good enough and will be misleading for users).

I think that’s why we had these proposals (we need to fix the macro):

This looks ok to me and we should have the same for XS IMO.

So globally it looks nice and I like it, but I have questions about UI scalability:

  • Scalability of the dialog itself
  • Scalability of the Rights UI specifically

Thx!