* Add support to upload a picture to forum posts and replies, in forums that
have the PermitPhotos setting enabled.
* New DB table: CommentPhoto holds the association between a photo and a
forum ID. Photos can be uploaded at preview time (before a CommentID is
available) and get associated to the CommentID on save.
* Cron endpoint /v1/comment-photos/remove-orphaned can clean up orphaned
photos without a CommentID older than 24 hours.
* Add "Photo Boards" as a default forum category for new boards.
Finish implementing the basic forum features:
* Pinned threads (admin or board owner only)
* Edit Thread settings when you edit the top-most comment.
* NoReply threads remove all the reply buttons.
* Explicit forums and threads are filtered out unless opted-in (admins
always see them).
* Count the unique members who participated in each forum.
* Get the most recently updated thread to show on forum list page.
* Contact/Report page: handle receiving a comment ID to report on.
Implement Likes & Notifications
* Like buttons added to Photos and Profile Pages. Implemented via simple
vanilla JS (likes.js) to make ajax requests to back-end to like/unlike.
* Notifications: for your photo or profile being liked. If you unlike,
the existing notifications about the like are revoked.
* The notifications appear as an alert number in the nav bar and are read
on the User Dashboard. Click to mark a notification as "read" or click
the "mark all as read" button.
Update DeleteUser to scrub likes, notifications, threads, and comments.
Adds initial code for basically functional forums:
* Forums landing page shows hard-coded list of Categories along with any
forums in the DB that use those categories.
* Admin: Create, Edit forums and view forums you own or have admin rights
to modify.
* Landing page forums list shows the title/description and dynamic count of
number of Topics and total number of Posts in each forum. TODO: distinct
count of Users who posted in each forum.
* Board Index page shows list of Threads (posts) with a Replies count and
Views count on each thread.
* Thread view is basically an array of Comments. Users can post, edit and
delete (their own) comments. Deleting the first comment removes the
entire Thread - the thread points to a first Comment to provide its body.
* Reply and Quote-Reply options working.