What is category topic highlist code?

Unsolved Technical Support

Suggested Topics

  • Hide Code

    Unsolved Technical Support
    0 Votes
    3 Posts

    @PitaJ I imagine this would be used for some code sharing site where you need to be a member to view.

    Anyway, this can be done via custom plugin listening on the parse hooks. You can remove code blocks there and insert a block asking users to log in 🤷

    @Konrad-Gierej-0 Are you developing this yourself?

  • 0 Votes
    2 Posts

    @BuZz 1 is the correct answer,as the number of replies includes the first post in the topic which isn't technically a reply, which I think adds to the confusion.

    Also with the reversed logic from the 2 settings before (which are how many seconds someone is allowed to do something, rather than how many until they are disallowed)

  • 0 Votes
    7 Posts

    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

    Fix'd, was something with the plugin, Not sure exactly.

    I've uninstalled and install the composer. But not sure why but once I rebooted Unbuntu itself it seemed to kick something free.

    Thanks guys