User-owned Forums #18

Open
opened 2023-03-20 06:02:16 +00:00 by noah · 0 comments

Forums are already designed to support being user-owned but the feature needs more work fleshed out.

High level features to support:

  • Users can create their own forums that they can moderate themselves.
  • Forum owners may designate other users to help them moderate their forum, but the owner still retains primary control over the forum itself (e.g. moderators can't mutiny and kick the owner off their own forum).
  • Some forums may be "Private" and:
    • Users may apply to join the private forum which needs approval by its moderators.
    • Moderators may directly add users to their forum (which will notify the user)
    • Note: this is not a priority but planned for future growth.
  • Users can subscribe to forums (same as being invited/joining a private forum, but for public ones too)
    • Subscribed forums appear on the main Forums screen alongside the official ones.

Data models

  • ForumMembership: associate users to forums they subscribe to, moderate, etc.
    • user_id, forum_id
    • approved bool: for future use, default true for public forums, can enable closed forums later
    • is_moderator bool: you help moderate the given forum_id
    • created_at, updated_at

Pages and UI workflow

In the order to implement the feature in...

Forum Landing Page (/forum)

  • On the tab bar, add the new tab: Categories, Explore, Newest, Search
  • If the user is a member of any forums, another tab: My List should
    be between Categories and Explore.

New Explore tab (/forum/explore)

  • The user can search and sort the Forums table including user-owned forums.
  • The visual appearance is similar to the Forum Landing Page: showing each forum with its Latest Post and statistics.
  • Filter choices should be:
    • A search string to narrow results.
    • Checkbox: include or exclude the official forums (shown on the Categories tab)
  • The forums would be paginated
  • Sorting options:
    • By most recent post created in each forum
    • By most recent reply in each forum
    • By name (a-z, z-a)
    • By number of posts?
SELECT
    forums.*,
    SUM(  -- maybe? sort by posts in forum
        SELECT 1
        FROM threads
        WHERE forum_id = forums.id
    ) AS num_posts
FROM forums
WHERE category IS NULL  -- user forums
AND (
    -- search
    title ILIKE ?
    OR description ILIKE ?
)
ORDER BY num_posts DESC

https://stackoverflow.com/questions/4784545/sql-how-to-order-using-count-from-another-table

Forum Admin page (/forum/admin)

  • Open this page to be accessed by regular users (not admins)
  • It lists the forums they can manage
    • Where they are the forum owner_id
    • Admin view should see all forums
  • Add sorting and filtering to this page
    • (Admin) Filter by official forums (which have a Category set), on by default
    • Search string over the forum's Title, Description, and URL fragment.
    • Order by name, fragment, created_at, updated_at

Create & Edit Forum page (/forum/admin/edit)

Some options are best only available to admins, not regular user forum owners:

  • Category (select box): all of the "official" forums have a Category and appear on the Categories tab.
  • Permit Photos (checkbox): disk storage space concerns, better to limit photo boards to a few of the official ones.
  • Inner circle (checkbox)
    • Should inner circle members be able to host forums for their peers?
    • What if the owner is removed from the circle later?

A new admin-only field should be:

  • Owner username (string): could allow admins to re-assign owners in case a user abandoned their forum and someone else wants to take it over.

An interesting field on this page:

  • Privileged (checkbox): only admins, forum owners, and moderators can post.
    • Users could create their own blogs, in a way?
    • Should probably be admin only but explore that later.

So owners can set a Title, Fragment, Description, Explicit, and (maybe) Privileged field on their forums.

NEW My List page (/forum/me)

This page is available when the current user has a forum_membership to at least one forum:

  • They "Subscribed" to it as a forum they like.
    • For example, they found it on the Explore tab and want to bookmark it.
  • They have been appointed a moderator of the forum.
    • Note: owners are not necessarily moderators.
    • The forums.owner_id can always moderate the forum.

The page will basically be the Explore tab but with filters applied to show only your forum_memberships:

  • Sorted by most recent post in each forum.

Subscribe buttons

  • Have buttons to "Add to my list" on:
    • When viewing the forum directly (/f/fragment URL)
      • In the hero bar?
    • The "Explore" tab, in each forum's card somewhere.
      • Should it be an ajax post, like the "like" button? Or full page reload?
  • The same buttons allow to remove the forum from your list.
    • Extra confirmation screen if you're a moderator. Maybe only show on /f/fragment URL and not on forum list views.

New Manage Moderators page (/forum/moderators?)

A link to this page is on:

  • Forum Admin
  • On the forum page itself (/f/fragment URL) for the owner's view.

The UI can be like the Private Photos or Friends pages.

  • Info about which forum you're looking at the settings of, up top.
  • A button to appoint a new moderator.
  • List of existing moderators, with remove buttons.
  • Pagination

New Add Moderator page (/forum/moderators/add?)

  • Search for username or given by query string
  • Simple confirmation modal similar to unlocking private photos
Forums are already designed to support being user-owned but the feature needs more work fleshed out. High level features to support: * Users can create their own forums that they can moderate themselves. * Forum owners may designate other users to help them moderate their forum, but the owner still retains primary control over the forum itself (e.g. moderators can't mutiny and kick the owner off their own forum). * Some forums _may_ be "Private" and: * Users may apply to join the private forum which needs approval by its moderators. * Moderators may directly add users to their forum (which will notify the user) * Note: **this is not a priority** but planned for future growth. * Users can subscribe to forums (same as being invited/joining a private forum, but for public ones too) * Subscribed forums appear on the main Forums screen alongside the official ones. # Data models * ForumMembership: associate users to forums they subscribe to, moderate, etc. * user_id, forum_id * approved bool: for future use, default true for public forums, can enable closed forums later * is_moderator bool: you help moderate the given forum_id * created_at, updated_at # Pages and UI workflow In the order to implement the feature in... ## Forum Landing Page (/forum) * On the tab bar, add the new tab: Categories, **Explore**, Newest, Search * If the user is a member of any forums, another tab: **My List** should be between Categories and Explore. ## _New_ Explore tab (/forum/explore) * The user can search and sort the Forums table including user-owned forums. * The visual appearance is similar to the Forum Landing Page: showing each forum with its Latest Post and statistics. * Filter choices should be: * A search string to narrow results. * Checkbox: include or exclude the official forums (shown on the Categories tab) * The forums would be paginated * Sorting options: * By most recent post created in each forum * By most recent reply in each forum * By name (a-z, z-a) * By number of posts? ```sql SELECT forums.*, SUM( -- maybe? sort by posts in forum SELECT 1 FROM threads WHERE forum_id = forums.id ) AS num_posts FROM forums WHERE category IS NULL -- user forums AND ( -- search title ILIKE ? OR description ILIKE ? ) ORDER BY num_posts DESC ``` https://stackoverflow.com/questions/4784545/sql-how-to-order-using-count-from-another-table ## Forum Admin page (/forum/admin) * Open this page to be accessed by regular users (not admins) * It lists the forums they can manage * Where they are the forum owner_id * Admin view should see all forums * Add sorting and filtering to this page * (Admin) Filter by official forums (which have a Category set), **on** by default * Search string over the forum's Title, Description, and URL fragment. * Order by name, fragment, created_at, updated_at ## Create & Edit Forum page (/forum/admin/edit) Some options are best only available to admins, not regular user forum owners: * Category (select box): all of the "official" forums have a Category and appear on the Categories tab. * Permit Photos (checkbox): disk storage space concerns, better to limit photo boards to a _few_ of the official ones. * Inner circle (checkbox) * Should inner circle members be able to host forums for their peers? * What if the owner is removed from the circle later? A new admin-only field should be: * Owner username (string): could allow admins to re-assign owners in case a user abandoned their forum and someone else wants to take it over. An interesting field on this page: * Privileged (checkbox): only admins, forum owners, and moderators can post. * Users could create their own blogs, in a way? * Should probably be admin only but explore that later. So owners can set a Title, Fragment, Description, Explicit, and (maybe) Privileged field on their forums. ## _NEW_ My List page (/forum/me) This page is available when the current user has a forum_membership to at least one forum: * They "Subscribed" to it as a forum they like. * For example, they found it on the Explore tab and want to bookmark it. * They have been appointed a moderator of the forum. * Note: owners are not necessarily moderators. * The forums.owner_id can always moderate the forum. The page will basically be the **Explore** tab but with filters applied to show only your forum_memberships: * Sorted by most recent post in each forum. ## Subscribe buttons * Have buttons to "Add to my list" on: * When viewing the forum directly (/f/fragment URL) * In the hero bar? * The "Explore" tab, in each forum's card somewhere. * Should it be an ajax post, like the "like" button? Or full page reload? * The same buttons allow to remove the forum from your list. * Extra confirmation screen if you're a moderator. Maybe only show on /f/fragment URL and not on forum list views. ## _New_ Manage Moderators page (/forum/moderators?) A link to this page is on: * Forum Admin * On the forum page itself (/f/fragment URL) for the owner's view. The UI can be like the Private Photos or Friends pages. * Info about which forum you're looking at the settings of, up top. * A button to appoint a new moderator. * List of existing moderators, with remove buttons. * Pagination ## _New_ Add Moderator page (/forum/moderators/add?) * Search for username or given by query string * Simple confirmation modal similar to unlocking private photos
noah added the
enhancement
label 2023-03-20 06:02:16 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: nonshy/website#18
There is no content yet.