• Members 4 posts
    April 4, 2018, 10:44 a.m.

    Hey there,

    I stumbled upon this project in my search for a forum system which doesn't suck (so sick of phpBB and such).

    I've read the README on the github repo and the documentation, and I'm still a bit unsure about how I should customize certain features of Misago. I want to make some changes both to the backend and frontend which are specific to my needs only (wouldn't really benefit others). The github README says that for development you should fork the repo and make your changes. This would mean that if I want to keep my version of misago up-to-date, I'd always have to pull the latest, merge, fix any conflicts or incompatibilities with the new version, which is not ideal. The docs on the other hand, suggest that you install misago from the pip repos and that you can customize certain aspects of it, however I haven't seen how you can customize frontend or backend components (not create new components, but rather modify / override misago's).

    I'll also provide a couple of examples of such changes, so you understand my question better:

    Example #1: Replacing the markdown editor with a WYSIWYG editor (that still results in markdown). I've managed to do this by forking and changing Misago's frontend code, but would like to know if that's the correct way to do this.

    Example #2: Replacing the authentication and session mechanism. We have single sign on, which integrates with our other apps, and would like that to be part of the Misago forum too.

    I've seen other Django apps which provide a way to override their own files, by creating a custom app with the same name, and telling django to use that instead of the respective app's one. Any file that don't exist in my custom app, would be pulled from the contrib app. Not sure if this makes any sense.

    Anyway, any help regarding which approach I should take would be greatly appreciated. Thank you

  • April 4, 2018, 12:28 p.m.

    Hello, thanks for asking!

    re #1 - forking frontend code is the way to do this.

    re #2 - Could you specify if you mean apps as in standalone apps, or apps as in "apps in django project"?

    I've seen other Django apps which provide a way to override their own files

    I've never seen anything like that, unless you are talking few specific things that Django allows overriding for (eg. templates, static files).

  • Members 4 posts
    April 4, 2018, 12:53 p.m.

    I mean django apps. Not sure if you're familiar with django-oscar. They have a nice way to override absolutely any file in their base django app (including views, models and such).

    Thanks for your response!

  • April 4, 2018, 2:04 p.m.

    I've did quick look at how Django-Oscar achieves this customizability and I can't say I really like it ;)

    Imho best way to go about it would be disabling registration in Misago and reading a JWT token set by your app in custom authentication provider that would create new user if needed, or update existing one.

    Admittedly, such integration features are something that we are lacking in Misago, and while I would like to give those a proper treatment, I don't know the ETA for that. Basic support like "use 3rd party's login form" + "read JWT token from querystring or cookie" may not be hard to do, and may be more useable for us as it wouldn't be tied to Django integrations.

  • Members 4 posts
    April 5, 2018, 8:28 a.m.

    Alright, seems that the way to go is to fork it. Thanks for the response.