mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: closes #11553, add forked from message like merged into
This commit is contained in:
@@ -79,6 +79,7 @@
|
||||
"resolve-flag": "Resolve Flag",
|
||||
|
||||
"merged_message": "This topic has been merged into <a href=\"%1\">%2</a>",
|
||||
"forked-message": "This topic was forked from <a href=\"%1\">%2</a>",
|
||||
"deleted_message": "This topic has been deleted. Only users with topic management privileges can see it.",
|
||||
|
||||
"following_topic.message": "You will now be receiving notifications when somebody posts to this topic.",
|
||||
|
||||
@@ -315,6 +315,8 @@ get:
|
||||
nullable: true
|
||||
merger:
|
||||
nullable: true
|
||||
forker:
|
||||
nullable: true
|
||||
related:
|
||||
type: array
|
||||
items:
|
||||
|
||||
@@ -70,6 +70,9 @@ module.exports = function (Topics) {
|
||||
Topics.setTopicFields(tid, {
|
||||
upvotes: postData.upvotes,
|
||||
downvotes: postData.downvotes,
|
||||
forkedFromTid: fromTid,
|
||||
forkerUid: uid,
|
||||
forkTimestamp: Date.now(),
|
||||
}),
|
||||
db.sortedSetsAdd(['topics:votes', `cid:${cid}:tids:votes`], postData.votes, tid),
|
||||
Topics.events.log(fromTid, { type: 'fork', uid, href: `/topic/${tid}` }),
|
||||
|
||||
@@ -164,6 +164,7 @@ Topics.getTopicWithPosts = async function (topicData, set, uid, start, stop, rev
|
||||
postSharing,
|
||||
deleter,
|
||||
merger,
|
||||
forker,
|
||||
related,
|
||||
thumbs,
|
||||
events,
|
||||
@@ -177,6 +178,7 @@ Topics.getTopicWithPosts = async function (topicData, set, uid, start, stop, rev
|
||||
social.getActivePostSharing(),
|
||||
getDeleter(topicData),
|
||||
getMerger(topicData),
|
||||
getForker(topicData),
|
||||
Topics.getRelatedTopics(topicData, uid),
|
||||
Topics.thumbs.load([topicData]),
|
||||
Topics.events.get(topicData.tid, uid, reverse),
|
||||
@@ -211,6 +213,10 @@ Topics.getTopicWithPosts = async function (topicData, set, uid, start, stop, rev
|
||||
if (merger) {
|
||||
topicData.mergedTimestampISO = utils.toISOString(topicData.mergedTimestamp);
|
||||
}
|
||||
topicData.forker = forker;
|
||||
if (forker) {
|
||||
topicData.forkTimestampISO = utils.toISOString(topicData.forkTimestamp);
|
||||
}
|
||||
topicData.related = related || [];
|
||||
topicData.unreplied = topicData.postcount === 1;
|
||||
topicData.icons = [];
|
||||
@@ -241,6 +247,21 @@ async function getMerger(topicData) {
|
||||
return merger;
|
||||
}
|
||||
|
||||
async function getForker(topicData) {
|
||||
if (!parseInt(topicData.forkerUid, 10)) {
|
||||
return null;
|
||||
}
|
||||
const [
|
||||
forker,
|
||||
forkedFromTitle,
|
||||
] = await Promise.all([
|
||||
user.getUserFields(topicData.forkerUid, ['username', 'userslug', 'picture']),
|
||||
Topics.getTopicField(topicData.forkedFromTid, 'title'),
|
||||
]);
|
||||
forker.forkedFromTitle = forkedFromTitle;
|
||||
return forker;
|
||||
}
|
||||
|
||||
Topics.getMainPost = async function (tid, uid) {
|
||||
const mainPosts = await Topics.getMainPosts([tid], uid);
|
||||
return Array.isArray(mainPosts) && mainPosts.length ? mainPosts[0] : null;
|
||||
|
||||
6
src/views/partials/topic/forked-message.tpl
Normal file
6
src/views/partials/topic/forked-message.tpl
Normal file
@@ -0,0 +1,6 @@
|
||||
<div component="topic/forked/message" class="alert alert-info mt-3 d-flex justify-content-between flex-wrap">
|
||||
<span>[[topic:forked-message, {config.relative_path}/topic/{forkedFromTid}, {forker.forkedFromTitle}]]</span>
|
||||
<span>
|
||||
<a class="fw-bold" href="{config.relative_path}/user/{forker.userslug}">{forker.username}</strong></a> <small class="timeago" title="{forkTimestampISO}"></small>
|
||||
</span>
|
||||
</div>
|
||||
@@ -1,4 +1,4 @@
|
||||
<div component="topic/merged/message" class="alert alert-warning mt-3 d-flex justify-content-between flex-wrap">
|
||||
<div component="topic/merged/message" class="alert alert-info mt-3 d-flex justify-content-between flex-wrap">
|
||||
<span>[[topic:merged_message, {config.relative_path}/topic/{mergeIntoTid}, {merger.mergedIntoTitle}]]</span>
|
||||
<span>
|
||||
<a class="fw-bold" href="{config.relative_path}/user/{merger.userslug}">{merger.username}</strong></a> <small class="timeago" title="{mergedTimestampISO}"></small>
|
||||
|
||||
Reference in New Issue
Block a user