Creating a post-only category

Technical Support

Suggested Topics


  • 0 Votes
    3 Posts
    359 Views

    Great! Thanks for sharing your solution with everybody 😄

  • 0 Votes
    12 Posts
    1k Views
  • 0 Votes
    1 Posts
    734 Views

    Currently it looks like the groups only load 10 posts and that is it, is there anyway to turn on auto scroll or at least increase this limit?

    Thanks

    Ted

  • 0 Votes
    7 Posts
    2k Views

    To restrict replies by the last reply time, you need to do two things.

    On the server side, hook into filter:topic.reply, it is passed data with the tid. Look up the last post and owner using the tid. Then, if the last post was made by the owner, and the timestamp of the last post is less then a day from now, return an error.

    On the client, you'll want to disable the reply button if the last post fulfills the same requirements above. You can use ajaxify.data to get the information you need.

    Server filter:topic.reply hook example:

    plugin.topicReply = function (data, next) { var tid = data.tid; Topics.getLatestUndeletedReply(tid, function(err, pid) { if (err) return next(null, data); Posts.getPostFields(pid, ['timestamp', 'uid'], function (err, lastPost) { if (err) return next(null, data); Topics.isOwner(tid, lastPost.uid, function (err, isOwner) { if (err) return next(null, data); if (isOwner && lastPost.timestamp + 86400000 > Date.now()) { return next(new Error('Not enough time passed.')); }else{ next(null, data); } }); }); }); });

    client.js example

    $(window).on('action:ajaxify.end', function(){ // If the user is at a page with a reply button. if ($('[component="topic/reply"]').length && ajaxify.data.posts) { var first = ajaxify.data.posts[0]; var last = ajaxify.data.posts[ajaxify.data.posts.length-1]; // If the last poster is the owner, // and they posted less than a day ago, // disable the reply button. if (last.uid === first.uid && last.timestamp + 86400000 > Date.now()) $('[component="topic/reply"]').addClass('disabled'); } });

    It's late for me, I might have messed up somewhere.

    Also, you can reduce the server code a lot by using async.waterfall and async.apply

  • 0 Votes
    4 Posts
    1k Views

    @jongarrison you have another example on nodebb-plugin-custom-header. But in this case is managed by a plugin too. I don't know if it is possible to applu different theme (tpl). You could also managed it in the same tpl with a little bit of logic in it based in certain configuration server side.