Display a category as a calendar by scheduled Topic-timer dates

Is this possible to do as a Theme Component?

I want to display a category as calendar; 7 days across as a row, rows from today out to the farthest future scheduled publication date. Place Topics visually in the calendar grid showing the category they’re set to publish to. Show a list somewhere/somehow all topics which don’t have a topic timer set to publish them.

So I can have a category (akin to the usual Staff category) that only I/staff-users can see, so we can coordinate creating and scheduling topics for publication.


Closest thing I can think of is the Calendar plugin, but it displays a calendar above posts in a topic where posts are the event entries that show in the calendar.

Reimagining a category page itself as a calendar would require some serious custom discourse theme development and template overrides.


(Since I host with Discourse itself, plugins are a non-starter.)

The next best thing, that I can think of, would be to ask…

Can a Theme Component provide a new sort-method? Sort by date of scheduled topic timer iff it’s a timer to publish to a category. And it would have to display the topic timer information in the Topic list. And it would have to visually distinguish topics that don’t have a topic timer (since the point of a category displayed this way it to be garden for cultivating topics that all eventually get published.)

Hey @craigconstantine :wave:t4: There will be more resourceful members than me with respect to development… but in general

  • you can add a new sort column with a component. E.g. see the Add Category Column component.
  • the values you need (topic-timer, destination-category) should be available from the database already. So you could access them with a component.

So I guess a blueprint approach could be to:

  • use a standard Shared drafts category
  • have a component customize the topic list to be sortable by destination category and topic timer (that is, drop the calendar view and go with an agenda)
1 Like