One of the things we noticed, in our use of Discuss but also with clients and from feedback, is that we do have a few valuable extensions that allow nurturing posts and discussions. Split, merge, move etc all are great extensions, but they are isolated. Isolated extensions are easy to manage, the smaller the extension is the easier to upgrade it. But once you have more extensions with similar underlying logic it becomes increasingly more interesting to move these kind of features into one to unify the logic.
This proposal is to build an extension that isn't fully focused on user/frontend features/abilities, but more on the flexibility to allow this or other extensions to execute certain tasks:
select one or more discussions
Design and create an interface to allow selecting one or more discussions. However, instead of being able to only select those that are currently visible, we also want to be able to search for certain discussions, or open them, and add them to the selection. This requires a certain global state to be maintained.
select one or more posts
Comparable to the discussion selection, we want to be able to select one or more posts. Selecting multiple from within one discussion (the first and the last from thousands), but also from other discussions will be a requirement.
selection component actions
With a given selection, we need to allow the selection component (which also understand global state of selection) to execute actions. These actions depend on the selection though. For instance if you select 1 discussion you won't see merge.
allow extending
We need to allow extensions to extend the actions, so that - for instance - fof/anti-spam can register a "mark as spam" button onto the selection component.
The deliverable needs to:
- be MIT, open source, hosted on GitHub
- if approved of or executed by a FoF member, moved to the FriendsOfFlarum team
- follow the Flarum code conventions (use the flarum-cli tool)
- target 2.x
The mass actions extension by Clark does something like this, but does not control global selection state. I can imagine a floating selection component that remains on your page for as long as you are selecting certain objects. A design to get to the right result will be fundamental in achieving the right fit for the Flarum ux.