notebook icon indicating copy to clipboard operation
notebook copied to clipboard

Collaboration improvements (collaboration v2)

Open drusepth opened this issue 7 years ago • 2 comments

Collaborators should be able to make changes within a universe just like the owner can, with the exception of adding/removing collaborators, deleting the universe, and other actions.

Owner actions:

  • Everything currently supported on content, plus
  • Adding users by email address as "collaborators" to a universe
  • Viewing all collaborators in a universe
  • Removing any collaborator from a universe

Collaborator actions (for content in a universe they've been added as a collaborator to):

  • Are able to add and edit content within a universe as if they had the same subscription level as the universe owner
    • e.g. a Premium user can add non-Premium users to a universe, and those non-Premium users have unrestricted access to create anything they want within that universe
  • Are not able to delete content within a universe
  • Are not able to modify content privacy settings within a universe

Dependent tasks:

  • [ ] Send an email to users with a link to the universe when they are added as a collaborator
  • [x] Keep track of who changed what on what content and display it on that content's page, #57
  • [ ] If a user is invited to collaborate on a universe without an existing account, they should be sent an invitation

drusepth avatar Sep 06 '16 06:09 drusepth

Feedback dump:

Allowing others to edit an item. E.g. In a tabletop role playing game, allowing the player to edit their character within the Game Master's Universe.

Collaborative Projects: a way for multiple accounts to contribute character, location, item, and other pages to a shared universe.

The ability to collaborate with another Notebook user on a project. I shared this with a writing group and that was a comment made among them.

drusepth avatar Apr 29 '17 00:04 drusepth

v1 implementation plan (branch collaboration):

  • [x] Add Contributor with universe:references email:string user:references
  • [x] Universe has_many :contributors
  • [x] User
    def contributable_universes
      universe_ids = Contributor.where(user: self).pluck(:universe_id)
      Universe.where(id: universe_ids)
    end
  • [x] Adjust ContentAuthorizer(s) to also account for universe contributors
  • [x] Prevent contributors from editing content universe_id values in content they don't own
  • [x] Prevent contributors from deleting content in a universe they don't own
  • [x] Add UI for adding/removing contributors from universe#edit page

v2 improvements:

  • [ ] Add universe-wide changelog page for all changes to content within a universe
  • [ ] Tie Contributor to a particular User, so users don't lose access when they change their email
  • [ ] Send an email when someone invites a collaborator
  • [ ] Send an email to universe owner when someone accepts collaborator invite
  • [ ] Allow contributors on singular content also

drusepth avatar Jul 16 '17 13:07 drusepth