Content
View differences
Updated by Jens Ulferts about 2 years ago
**As** a user
**I want to** turn a project list public (accessible to everybody) or share it with a specific user or group
**so that** I can have others reuse a list to form a shared view on projects
**Acceptance criteria**
* Sharing:
* With the necessary permissions the user can:
* Create a private list and share it with a limited amount of users and groups.
* Create a private list and share it with everyone (all members of the instance).
* Even on a public instance, only logged in users see and can access the list.
* Anonymous users will only see the static lists (e.g. "Active projects" and "On track")
* \[Nice to have\] When switching back from a list shared with everyone to a list shared with a selected few, the previously selected users should still be selected
* The additional permissions required to share a list are:
* Share project lists with everyone (all instance) -> Permission to share lists with everyone.
* Share private project lists -> Permission to share lists with a limited amount of users and groups -> Every logged in user can do this. It does not require an additional permission. other users.
* A new global role is added to create public project lists.
* For existing installations
* No user is assigned this role automatically
* Reason: There is no good indication for who should get the role.
* For seeding of new installations
* Users accessing shared lists:
* Users can access the project lists that are shared with them.
* For lists shard with everyone: all instance members can access this lists (with their correspondent permissions to view or edit project lists)
* For private shared lists: only users or groups with whom the list are shared can access them.
* Users can see the other users the list is shared with.
* if lacking edit permission, they cannot see nor edit the roles and also cannot remove users from the list.
* List deletion:
* Lists shared with everyone can be deleted by everyone having the edit permission.
* Shared private lists can only be deleted by the owner of the list.
* Shared private lists cannot be deleted by users the list is shared with but, if a user wants to remove themself from a list that has been shared with them he can open the share modal and use the action "Remove" next to their name.
* Making changes to lists:
* Shared with everyone lists can be changed (renamed, column selection, filter selection, sort order selection) just like own lists by users having the edit permission.
* If the user lacks the edit permission, they have the same options as when changing a shared or static list. They can always save as and create a private copy.
* Changing a private shared lists can be done by the owner and all the shared users with permissions to edit.
* If the user lacks the edit permission, they have the same options as when changing a shared or static list. They can always save as and create a private copy.
* User deletion:
* In case the deleted user is the "owner" of lists that has been shared with other users the ownership will be transferred to the first user with edit sharing permissions in the shared list. If there is no such user left, the list would be removed.
* In case the deleted user is the "owner" of a shared with all list, the ownership of that list will be transferred to an instance administrator.
* Sidebar:
* A section is added to the sidebar to list all the shared project lists.
**Info**: The sharing of project lists only apply to the lists. It does not give the users access to the projects itself. So different users can see different results when clicking on shared project lists based on their individual project roles.
**Technical notes**
* Add an extra table for list visibility (join table between user and query)
* the user to that table (have a column indicating that the initial user is the owner)
* Needs having a type/role column on the table
* Add joined with users/groups to that table (use the type/role column to indicate that it is shared)
**Open questions**
* **\[open\]** Do we need two different permissions between sharing with users or groups and sharing with everyone?
* **\[open\]** Upon seeding a new instance, what roles are to receive the new permissions? permissions?
* **\[open\]** For existing installations, are there any roles that should automatically receive the new permissions? _I would argue that project managers and admins should have this permissions permisisons activated by default._
* **\[open\]** What permission set and name will the new global role for sharing project lists will receive?
* **\[open\]** What is the list of users presented on selecting users for sharing?
* In the system we oftentimes only disclose users who are members in projects the current user is also member in (no specific permission) or all users (if the current user has the permission to manage members)
* **\[open\]** If the owner removes themselves from the list, a dialog should be shown asking the user what to do with the list (remove or transfer ownership).
**Relevant translations**
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">EN (<a class="op-uc-link" href="https://www.figma.com/file/YCCMdJWkrtP9YSmf49Od0i/Project-lists?type=design&node-id=1830-41294&mode=design&t=JWw5I0eRsONBc6xj-4">Figma link</a>)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">DE (Figma link)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">ES (<a class="op-uc-link" href="https://www.figma.com/file/YCCMdJWkrtP9YSmf49Od0i/Project-lists?type=design&node-id=1912-23079&mode=design&t=JWw5I0eRsONBc6xj-4">Figma link</a>)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">FR (<a class="op-uc-link" href="https://www.figma.com/file/YCCMdJWkrtP9YSmf49Od0i/Project-lists?type=design&node-id=1916-15593&mode=design&t=JWw5I0eRsONBc6xj-4">Figma link</a>)</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Share project list</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Compartir lista de proyectos</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Partager la liste des projets</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Please note that the projects in the list might differ from one user to another depending on which projects the user has access to.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Por favor, tenga en cuenta que la lista de proyectos puede variar para otros usuarios dependiendo a qué proyectos tienen acceso.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Veuillez noter que les projets figurant dans la liste peuvent différer d'une personne à l’autre en fonction des projets auxquels l'utilisateur a accès.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Project list visibility in this instance:</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Visibilidad de la lista de proyectos en la instancia:</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Visibilité de la liste des projets dans cette instance:</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Private</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Privada</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Privé</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Only you and users with whom this project list is shared can see or edit it.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Solo usted y los usuarios con quien se ha compartido esta lista de proyectos podrán verla o editarla.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Seuls vous et les utilisateurs avec lesquels cette liste de projets est partagée pouvez la voir ou la modifier.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Shared with everyone</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Compartida con todos</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Partagée avec tout le monde</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">All instance members can view this project list. Those with edit permissions can modify it.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Todos los miembros de la instancia pueden ver esta lista de proyectos. Aquellos que tengan derechos de edición podrán modificarla.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Tous les membres de l'instance peuvent consulter cette liste de projets. Ceux qui ont des droits de modification peuvent la modifier.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Search by user or group</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Buscar por usuario o grupo</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Recherche par utilisateur ou par groupe</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Not shared with anyone</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">No compartida</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Partagée avec personne</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">This project list has not been shared with anyone yet.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Esta lista de proyecto no se ha compartido aún con nadie.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Cette liste de projets n'a encore été partagée avec personne.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">List owner.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Propietario de la lista.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Propriétaire de la liste</p></td></tr></tbody></table></figure>
**Figma and visuals**
https://www.figma.com/file/YCCMdJWkrtP9YSmf49Od0i/Project-lists?type=design&node-id=1830-41294&mode=design&t=JWw5I0eRsONBc6xj-4
**I want to** turn a project list public (accessible to everybody) or share it with a specific user or group
**so that** I can have others reuse a list to form a shared view on projects
**Acceptance criteria**
* Sharing:
* With the necessary permissions the user can:
* Create a private list and share it with a limited amount of users and groups.
* Create a private list and share it with everyone (all members of the instance).
* Anonymous users will only see the static lists (e.g. "Active projects" and "On track")
* \[Nice to have\] When switching back from a list shared with everyone to a list shared with a selected few, the previously selected users should still be selected
* The additional permissions required to share a list are:
* Share project lists with everyone (all instance) -> Permission to share lists with everyone.
* Share private project lists
* A new global role is added to create
* No user is assigned this role automatically
* Reason: There is no good indication for who should get the role.
* For seeding of new installations
* Users accessing shared lists:
* Users can access the project lists that are shared with them.
* For lists shard with everyone: all instance members can access this lists (with their correspondent permissions to view or edit project lists)
* For private shared lists: only users or groups with whom the list are shared can access them.
* Users can see the other users the list is shared with.
* if lacking edit permission, they cannot see nor edit the roles and also cannot remove users from the list.
* List deletion:
* Lists shared with everyone can be deleted by everyone having the edit permission.
* Shared private lists can only be deleted by the owner of the list.
* Shared private lists cannot be deleted by users the list is shared with but, if a user wants to remove themself from a list that has been shared with them he can open the share modal and use the action "Remove" next to their name.
* Making changes to lists:
* Shared with everyone lists can be changed (renamed, column selection, filter selection, sort order selection) just like own lists by users having the edit permission.
* If the user lacks the edit permission, they have the same options as when changing a shared or static list. They can always save as and create a private copy.
* Changing a private shared lists can be done by the owner and all the shared users with permissions to edit.
* If the user lacks the edit permission, they have the same options as when changing a shared or static list. They can always save as and create a private copy.
* User deletion:
* In case the deleted user is the "owner" of lists that has been shared with other users the ownership will be transferred to the first user with edit
* In case the deleted user is the "owner" of a shared with all list, the ownership of that list will be transferred to an instance administrator.
* Sidebar:
* A section is added to the sidebar to list all the shared project lists.
**Info**: The sharing of project lists only apply to the lists. It does not give the users access to the projects itself. So different users can see different results when clicking on shared project lists based on their individual project roles.
**Technical notes**
* Add an extra table for list visibility (join table between user and query)
* the user to that table (have a column indicating that the initial user is the owner)
* Needs having a type/role column on the table
* Add joined with users/groups to that table (use the type/role column to indicate that it is shared)
**Open questions**
* **\[open\]** Do we need two different permissions between sharing with users or groups and sharing with everyone?
* **\[open\]** Upon seeding a new instance, what roles are to receive the new permissions?
* **\[open\]** For existing installations, are there any roles that should automatically receive the new permissions? _I would argue that project managers and admins should have this permissions
* **\[open\]** What permission set and name will the new global role for sharing project lists will receive?
* **\[open\]** What is the list of users presented on selecting users for sharing?
* In the system we oftentimes only disclose users who are members in projects the current user is also member in (no specific permission) or all users (if the current user has the permission to manage members)
* **\[open\]** If the owner removes themselves from the list, a dialog should be shown asking the user what to do with the list (remove or transfer ownership).
**Relevant translations**
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">EN (<a class="op-uc-link" href="https://www.figma.com/file/YCCMdJWkrtP9YSmf49Od0i/Project-lists?type=design&node-id=1830-41294&mode=design&t=JWw5I0eRsONBc6xj-4">Figma link</a>)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">DE (Figma link)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">ES (<a class="op-uc-link" href="https://www.figma.com/file/YCCMdJWkrtP9YSmf49Od0i/Project-lists?type=design&node-id=1912-23079&mode=design&t=JWw5I0eRsONBc6xj-4">Figma link</a>)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">FR (<a class="op-uc-link" href="https://www.figma.com/file/YCCMdJWkrtP9YSmf49Od0i/Project-lists?type=design&node-id=1916-15593&mode=design&t=JWw5I0eRsONBc6xj-4">Figma link</a>)</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Share project list</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Compartir lista de proyectos</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Partager la liste des projets</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Please note that the projects in the list might differ from one user to another depending on which projects the user has access to.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Por favor, tenga en cuenta que la lista de proyectos puede variar para otros usuarios dependiendo a qué proyectos tienen acceso.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Veuillez noter que les projets figurant dans la liste peuvent différer d'une personne à l’autre en fonction des projets auxquels l'utilisateur a accès.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Project list visibility in this instance:</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Visibilidad de la lista de proyectos en la instancia:</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Visibilité de la liste des projets dans cette instance:</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Private</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Privada</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Privé</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Only you and users with whom this project list is shared can see or edit it.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Solo usted y los usuarios con quien se ha compartido esta lista de proyectos podrán verla o editarla.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Seuls vous et les utilisateurs avec lesquels cette liste de projets est partagée pouvez la voir ou la modifier.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Shared with everyone</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Compartida con todos</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Partagée avec tout le monde</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">All instance members can view this project list. Those with edit permissions can modify it.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Todos los miembros de la instancia pueden ver esta lista de proyectos. Aquellos que tengan derechos de edición podrán modificarla.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Tous les membres de l'instance peuvent consulter cette liste de projets. Ceux qui ont des droits de modification peuvent la modifier.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Search by user or group</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Buscar por usuario o grupo</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Recherche par utilisateur ou par groupe</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Not shared with anyone</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">No compartida</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Partagée avec personne</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">This project list has not been shared with anyone yet.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Esta lista de proyecto no se ha compartido aún con nadie.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Cette liste de projets n'a encore été partagée avec personne.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">List owner.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Propietario de la lista.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Propriétaire de la liste</p></td></tr></tbody></table></figure>
**Figma and visuals**
https://www.figma.com/file/YCCMdJWkrtP9YSmf49Od0i/Project-lists?type=design&node-id=1830-41294&mode=design&t=JWw5I0eRsONBc6xj-4