From 0041cfe2eda78645d68944e2d4b0f0f155cd3cff Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 11 Dec 2025 16:03:19 -0500 Subject: [PATCH] feat: introduce new front-end UI button for cross-posting, hide move on topics in remote cids - Hide the ability to select remote cids in topic move category search - Add a new option to category search: 'localOnly'; pretty self descriptive. --- public/language/en-GB/topic.json | 1 + public/src/client/topic/move.js | 1 + public/src/client/topic/threadTools.js | 4 ++++ public/src/modules/categorySearch.js | 1 + src/api/search.js | 1 + src/categories/search.js | 5 +++++ src/views/partials/topic/topic-menu-list.tpl | 6 ++++++ 7 files changed, 19 insertions(+) diff --git a/public/language/en-GB/topic.json b/public/language/en-GB/topic.json index bfb3101c2c..d4431e9e35 100644 --- a/public/language/en-GB/topic.json +++ b/public/language/en-GB/topic.json @@ -116,6 +116,7 @@ "thread-tools.lock": "Lock Topic", "thread-tools.unlock": "Unlock Topic", "thread-tools.move": "Move Topic", + "thread-tools.crosspost": "Crosspost Topic", "thread-tools.move-posts": "Move Posts", "thread-tools.move-all": "Move All", "thread-tools.change-owner": "Change Owner", diff --git a/public/src/client/topic/move.js b/public/src/client/topic/move.js index df23091357..08ce3e9d5c 100644 --- a/public/src/client/topic/move.js +++ b/public/src/client/topic/move.js @@ -34,6 +34,7 @@ define('forum/topic/move', [ categorySelector.init(dropdownEl, { onSelect: onCategorySelected, privilege: 'moderate', + localOnly: true, }); modal.find('#move_thread_commit').on('click', onCommitClicked); diff --git a/public/src/client/topic/threadTools.js b/public/src/client/topic/threadTools.js index 7a2519b069..5bb4d7d362 100644 --- a/public/src/client/topic/threadTools.js +++ b/public/src/client/topic/threadTools.js @@ -116,6 +116,10 @@ define('forum/topic/threadTools', [ return false; }); + topicContainer.on('click', '[component="topic/crosspost"]', () => { + console.log('tbd'); + }); + topicContainer.on('click', '[component="topic/delete/posts"]', function () { require(['forum/topic/delete-posts'], function (deletePosts) { deletePosts.init(); diff --git a/public/src/modules/categorySearch.js b/public/src/modules/categorySearch.js index fe8fd4f294..305396b9d8 100644 --- a/public/src/modules/categorySearch.js +++ b/public/src/modules/categorySearch.js @@ -76,6 +76,7 @@ define('categorySearch', ['alerts', 'bootstrap', 'api'], function (alerts, boots privilege: options.privilege, states: options.states, showLinks: options.showLinks, + localOnly: options.localOnly, }, function (err, { categories }) { if (err) { return alerts.error(err); diff --git a/src/api/search.js b/src/api/search.js index 78e120743f..3ae5319d1e 100644 --- a/src/api/search.js +++ b/src/api/search.js @@ -66,6 +66,7 @@ async function findMatchedCids(uid, data) { query: data.search, qs: data.query, paginate: false, + localOnly: data.localOnly, }); let matchedCids = result.categories.map(c => c.cid); diff --git a/src/categories/search.js b/src/categories/search.js index 50521d882a..722ecb01d9 100644 --- a/src/categories/search.js +++ b/src/categories/search.js @@ -6,12 +6,14 @@ const privileges = require('../privileges'); const activitypub = require('../activitypub'); const plugins = require('../plugins'); const db = require('../database'); +const utils = require('../utils'); module.exports = function (Categories) { Categories.search = async function (data) { const query = data.query || ''; const page = data.page || 1; const uid = data.uid || 0; + const localOnly = data.localOnly || false; const paginate = data.hasOwnProperty('paginate') ? data.paginate : true; const startTime = process.hrtime(); @@ -21,6 +23,9 @@ module.exports = function (Categories) { } let cids = await findCids(query, data.hardCap); + if (localOnly) { + cids = cids.filter(cid => utils.isNumber(cid)); + } const result = await plugins.hooks.fire('filter:categories.search', { data: data, diff --git a/src/views/partials/topic/topic-menu-list.tpl b/src/views/partials/topic/topic-menu-list.tpl index 34d23f2607..147b5cbbf4 100644 --- a/src/views/partials/topic/topic-menu-list.tpl +++ b/src/views/partials/topic/topic-menu-list.tpl @@ -15,9 +15,15 @@ [[topic:thread-tools.unpin]] +{{{ if isNumber(cid) }}}
  • [[topic:thread-tools.move]]
  • +{{{ end }}} + +
  • + [[topic:thread-tools.crosspost]] +
  • [[topic:thread-tools.merge]]