From 7afee532ff42c67f0d172d37237a5a60d7733cd6 Mon Sep 17 00:00:00 2001 From: yflory Date: Mon, 25 Mar 2024 17:52:03 +0100 Subject: [PATCH] Move temporary translation keys to a single file --- customize.dist/messages.js | 99 +++++++++++++++-- www/admin/inner.js | 216 ++++++++++++++++-------------------- www/common/notifications.js | 3 - www/moderation/inner.js | 46 -------- www/profile/inner.js | 1 - www/support/ui.js | 9 +- 6 files changed, 183 insertions(+), 191 deletions(-) diff --git a/customize.dist/messages.js b/customize.dist/messages.js index e4cce8381..ffc7e6b32 100755 --- a/customize.dist/messages.js +++ b/customize.dist/messages.js @@ -29,11 +29,11 @@ var map = { 'zh': '中文(簡體)', }; -var messages = {}; +var Messages = {}; var LS_LANG = "CRYPTPAD_LANG"; var getStoredLanguage = function () { return localStorage && localStorage.getItem(LS_LANG); }; var getBrowserLanguage = function () { return navigator.language || navigator.userLanguage || ''; }; -var getLanguage = messages._getLanguage = function () { +var getLanguage = Messages._getLanguage = function () { if (window.cryptpadLanguage) { return window.cryptpadLanguage; } try { if (getStoredLanguage()) { return getStoredLanguage(); } @@ -103,19 +103,19 @@ define(req, function(AppConfig, Default, Language) { } }; - extend(messages, Default); + extend(Messages, Default); if (Language && language !== defaultLanguage) { // Add the translated keys to the returned object - extend(messages, Language); + extend(Messages, Language); } - messages._languages = map; - messages._languageUsed = language; + Messages._languages = map; + Messages._languageUsed = language; // Get keys with parameters - messages._getKey = function (key, argArray) { - if (!messages[key]) { return '?'; } - var text = messages[key]; + Messages._getKey = function (key, argArray) { + if (!Messages[key]) { return '?'; } + var text = Messages[key]; if (typeof(text) === 'string') { return text.replace(/\{(\d+)\}/g, function (str, p1) { if (typeof(argArray[p1]) === 'string' || typeof(argArray[p1]) === "number") { @@ -129,7 +129,86 @@ define(req, function(AppConfig, Default, Language) { } }; - return messages; + // XXX Temporary keys + Messages.admin_cat_customize = "Customize"; + Messages.admin_cat_security = "Security"; + Messages.admin_logoTitle = "Custom Logo"; + Messages.admin_logoHint = "SVG, PNG or JPG, maximum size 200KB"; + Messages.admin_logoButton = "Upload new"; + Messages.admin_logoRemoveButton = "Restore default"; + Messages.admin_colorTitle = "Accent color"; + Messages.admin_colorHint = "Change the accent color of your CryptPad instance. Please ensure text and buttons are readable with sufficient contrast in both light and dark themes."; + Messages.admin_colorCurrent = "Current accent color"; + Messages.admin_colorChange = "Change color"; + Messages.admin_colorPick = "Pick a color"; + Messages.admin_colorPreview = "Preview color"; + Messages.admin_supportSetupHint = "Create or update the support keys."; + Messages.admin_supportSetupTitle = "Initialize support"; + Messages.admin_supportEnabled = "Modern support system is enabled."; + Messages.admin_supportDisabled = "Modern support system is disabled."; + Messages.admin_supportInit = "Initialize support page on this instance"; + Messages.admin_supportDelete = "Disable support"; + Messages.admin_supportConfirm = "Are you sure? This will delete all existing tickets and block access for all moderators."; + Messages.admin_supportMembers = "Support team"; + Messages.admin_supportAdd = "Add a contact to the support team"; + Messages.admin_supportRotateNotify = "Warning: new keys have been generated but an unenexpected error prevented the system to send them to the moderators. Please remove and re-add all members of the support team"; + + Messages.admin_supportTeamTitle = "admin_supportTeamTitle"; + Messages.admin_supportTeamHint = "admin_supportTeamHint"; + Messages.admin_supportOpen = "Open helpdesk"; + + Messages.support_userNotification = "New support ticket or response: {0}"; + Messages.support_moderatorNotification = "You have been added to the moderators list"; + + Messages.moderationPage = "Support mailbox"; // XXX + + Messages.support_cat_open = "Inbox"; + Messages.support_cat_closed = "Closed"; + Messages.support_cat_search = "Search"; + Messages.support_cat_settings = "Settings"; + Messages.support_cat_legacy = "Legacy"; + + Messages.support_pending = "Archived tickets:"; + Messages.support_pending_tag = "Archived"; + Messages.support_active_tag = "Inbox"; + Messages.support_closed_tag = "Closed"; + + Messages.support_privacyTitle = "Answer anonymously"; + Messages.support_privacyHint = "Check this option to reply as 'The Support Team' instead of your own username"; + + Messages.support_notificationsTitle = "Disable notifications"; + Messages.support_notificationsHint = "Check this option to disable notifications for new tickets and replies"; + Messages.support_openTicketTitle = "Open a ticket with a user"; + Messages.support_openTicketHint = "Copy the recipient user's data from their profile page or an existing support ticket. They will receive a CryptPad notification about this message."; + Messages.support_userChannel = "User's notifications channel ID"; + Messages.support_userKey = "User's public key"; + Messages.support_invalChan = "Invalid notifications channel"; + + Messages.support_pasteUserData = "Paste user data here"; + + Messages.support_recordedTitle = "Snippets"; + Messages.support_recordedHint = "Store common text as one-click shortcuts to insert in support messages."; + Messages.support_recordedEmpty = "No snippets"; + Messages.support_recordedId = "Snippet ID (unique)"; + Messages.support_recordedContent = "Content"; + + Messages.support_legacyTitle = "View old support data"; + Messages.support_legacyHint = "View tickets from the legacy support system and recreate them in the new one."; + Messages.support_legacyButton = "Get active"; + Messages.support_legacyDump = "Export all"; + Messages.support_legacyClear = "Delete from my account"; + + Messages.support_searchLabel = "Search (title or ticketId)"; + + Messages.support_team = "The Support Team"; // XXX + Messages.support_answerAs = "Answering as {0}"; // XXX + Messages.support_movePending = "Move to archive"; + Messages.support_moveActive = "Move to active"; + Messages.support_copyUserData = "Copy user data"; + Messages.support_insertRecorded = "Insert snippet"; + + + return Messages; }); }()); diff --git a/www/admin/inner.js b/www/admin/inner.js index 6ffcdf57e..9af68c72c 100644 --- a/www/admin/inner.js +++ b/www/admin/inner.js @@ -769,20 +769,6 @@ define([ cb(form); }); - // XXX - Messages.admin_cat_customize = "Customize"; - Messages.admin_cat_security = "Security"; - Messages.admin_logoTitle = "Custom Logo"; - Messages.admin_logoHint = "SVG, PNG or JPG, maximum size 200KB"; - Messages.admin_logoButton = "Upload new"; - Messages.admin_logoRemoveButton = "Restore default"; - Messages.admin_colorTitle = "Accent color"; - Messages.admin_colorHint = "Change the accent color of your CryptPad instance. Please ensure text and buttons are readable with sufficient contrast in both light and dark themes."; - Messages.admin_colorCurrent = "Current accent color"; - Messages.admin_colorChange = "Change color"; - Messages.admin_colorPick = "Pick a color"; - Messages.admin_colorPreview = "Preview color"; - sidebar.addItem('logo', (cb) => { // Msg.admin_logoHint, Msg.admin_logoTitle @@ -2689,115 +2675,6 @@ define([ cb(form); }); - var getApi = function (cb) { - return function () { - require(['/api/broadcast?'+ (+new Date())], function (Broadcast) { - cb(Broadcast); - setTimeout(function () { - try { - var ctx = require.s.contexts._; - var defined = ctx.defined; - Object.keys(defined).forEach(function (href) { - if (/^\/api\/broadcast\?[0-9]{13}/.test(href)) { - delete defined[href]; - return; - } - }); - } catch (e) {} - }); - }); - }; - }; - var checkLastBroadcastHash = function (cb) { - var deleted = []; - - require(['/api/broadcast?'+ (+new Date())], function (BCast) { - var hash = BCast.lastBroadcastHash || '1'; // Truthy value if no lastKnownHash - common.mailbox.getNotificationsHistory('broadcast', null, hash, function (e, msgs) { - if (e) { console.error(e); return void cb(e); } - - // No history, nothing to change - if (!Array.isArray(msgs)) { return void cb(); } - if (!msgs.length) { return void cb(); } - - var lastHash; - var next = false; - - // Start from the most recent messages until you find a CUSTOM message and - // check if it has been deleted - msgs.reverse().some(function (data) { - var c = data.content; - - // This is the hash we want to keep - if (next) { - if (!c || !c.hash) { return; } - lastHash = c.hash; - next = false; - return true; - } - - // initialize with the most recent hash - if (!lastHash && c && c.hash) { lastHash = c.hash; } - - var msg = c && c.msg; - if (!msg) { return; } - - // Remember all deleted messages - if (msg.type === "BROADCAST_DELETE") { - deleted.push(Util.find(msg, ['content', 'uid'])); - } - - // Only check custom messages - if (msg.type !== "BROADCAST_CUSTOM") { return; } - - // If the most recent CUSTOM message has been deleted, it means we don't - // need to keep any message and we can continue with lastHash as the most - // recent broadcast message. - if (deleted.indexOf(msg.uid) !== -1) { return true; } - - // We just found the oldest message we want to keep, move one iteration - // further into the loop to get the next message's hash. - // If this is the end of the loop, don't bump lastBroadcastHash at all. - next = true; - }); - - // If we don't have to bump our lastBroadcastHash, abort - if (next) { return void cb(); } - - // Otherwise, bump to lastHash - console.warn('Updating last broadcast hash to', lastHash); - sFrameChan.query('Q_ADMIN_RPC', { - cmd: 'ADMIN_DECREE', - data: ['SET_LAST_BROADCAST_HASH', [lastHash]] - }, function (e, response) { - if (e || response.error) { - UI.warn(Messages.error); - console.error(e, response); - return; - } - console.log('lastBroadcastHash updated'); - if (typeof(cb) === "function") { cb(); } - }); - }); - }); - - }; - - // XXX - Messages.admin_supportSetupHint = "Create or update the support keys."; - Messages.admin_supportSetupTitle = "Initialize support"; - Messages.admin_supportEnabled = "Modern support system is enabled."; - Messages.admin_supportDisabled = "Modern support system is disabled."; - Messages.admin_supportInit = "Initialize support page on this instance"; - Messages.admin_supportDelete = "Disable support"; - Messages.admin_supportConfirm = "Are you sure? This will delete all existing tickets and block access for all moderators."; - Messages.admin_supportMembers = "Support team"; - Messages.admin_supportAdd = "Add a contact to the support team"; - Messages.admin_supportRotateNotify = "Warning: new keys have been generated but an unenexpected error prevented the system to send them to the moderators. Please remove and re-add all members of the support team"; - - Messages.admin_supportTeamTitle = "admin_supportTeamTitle"; - Messages.admin_supportTeamHint = "admin_supportTeamHint"; - Messages.admin_supportOpen = "Open helpdesk"; let onRefreshSupportEvt = Util.mkEvent(); let refreshSupport = () => { let moderators, supportKey; @@ -3069,6 +2946,99 @@ define([ }); setTimeout(refreshSupport); + var getApi = function (cb) { + return function () { + require(['/api/broadcast?'+ (+new Date())], function (Broadcast) { + cb(Broadcast); + setTimeout(function () { + try { + var ctx = require.s.contexts._; + var defined = ctx.defined; + Object.keys(defined).forEach(function (href) { + if (/^\/api\/broadcast\?[0-9]{13}/.test(href)) { + delete defined[href]; + return; + } + }); + } catch (e) {} + }); + }); + }; + }; + var checkLastBroadcastHash = function (cb) { + var deleted = []; + + require(['/api/broadcast?'+ (+new Date())], function (BCast) { + var hash = BCast.lastBroadcastHash || '1'; // Truthy value if no lastKnownHash + common.mailbox.getNotificationsHistory('broadcast', null, hash, function (e, msgs) { + if (e) { console.error(e); return void cb(e); } + + // No history, nothing to change + if (!Array.isArray(msgs)) { return void cb(); } + if (!msgs.length) { return void cb(); } + + var lastHash; + var next = false; + + // Start from the most recent messages until you find a CUSTOM message and + // check if it has been deleted + msgs.reverse().some(function (data) { + var c = data.content; + + // This is the hash we want to keep + if (next) { + if (!c || !c.hash) { return; } + lastHash = c.hash; + next = false; + return true; + } + + // initialize with the most recent hash + if (!lastHash && c && c.hash) { lastHash = c.hash; } + + var msg = c && c.msg; + if (!msg) { return; } + + // Remember all deleted messages + if (msg.type === "BROADCAST_DELETE") { + deleted.push(Util.find(msg, ['content', 'uid'])); + } + + // Only check custom messages + if (msg.type !== "BROADCAST_CUSTOM") { return; } + + // If the most recent CUSTOM message has been deleted, it means we don't + // need to keep any message and we can continue with lastHash as the most + // recent broadcast message. + if (deleted.indexOf(msg.uid) !== -1) { return true; } + + // We just found the oldest message we want to keep, move one iteration + // further into the loop to get the next message's hash. + // If this is the end of the loop, don't bump lastBroadcastHash at all. + next = true; + }); + + // If we don't have to bump our lastBroadcastHash, abort + if (next) { return void cb(); } + + // Otherwise, bump to lastHash + console.warn('Updating last broadcast hash to', lastHash); + sFrameChan.query('Q_ADMIN_RPC', { + cmd: 'ADMIN_DECREE', + data: ['SET_LAST_BROADCAST_HASH', [lastHash]] + }, function (e, response) { + if (e || response.error) { + UI.warn(Messages.error); + console.error(e, response); + return; + } + console.log('lastBroadcastHash updated'); + if (typeof(cb) === "function") { cb(); } + }); + }); + }); + + }; sidebar.addItem('maintenance', function(cb){ var button = blocks.button('primary', '', Messages.admin_maintenanceButton); var $button = $(button); diff --git a/www/common/notifications.js b/www/common/notifications.js index 10b760bdc..73d0d95b6 100644 --- a/www/common/notifications.js +++ b/www/common/notifications.js @@ -484,9 +484,6 @@ define([ } }; - // XXX - Messages.support_userNotification = "New support ticket or response: {0}"; - Messages.support_moderatorNotification = "You have been added to the moderators list"; handlers['NOTIF_TICKET'] = function (common, data) { var content = data.content; var msg = content.msg.content; diff --git a/www/moderation/inner.js b/www/moderation/inner.js index 73e0d6a8e..ffb2e0852 100644 --- a/www/moderation/inner.js +++ b/www/moderation/inner.js @@ -53,52 +53,6 @@ define([ REFRESH_TAGS: Util.mkEvent() }; - // XXX - Messages.moderationPage = "Support mailbox"; // XXX - - Messages.support_cat_open = "Inbox"; - Messages.support_cat_closed = "Closed"; - Messages.support_cat_search = "Search"; - Messages.support_cat_settings = "Settings"; - Messages.support_cat_legacy = "Legacy"; - - Messages.support_pending = "Archived tickets:"; - Messages.support_pending_tag = "Archived"; - Messages.support_active_tag = "Inbox"; - Messages.support_closed_tag = "Closed"; - /* - Messages.support_activeListTitle = "Active tickets"; - Messages.support_pendingListTitle = "Pending tickets"; - Messages.support_activeListHint = "List of tickets that are in an active state"; - Messages.support_pendingListHint = "List of tickets that may not be updated for a while but should not be closed"; - */ - - Messages.support_privacyTitle = "Answer anonymously"; - Messages.support_privacyHint = "Check this option to reply as 'The Support Team' instead of your own username"; - - Messages.support_notificationsTitle = "Disable notifications"; - Messages.support_notificationsHint = "Check this option to disable notifications for new tickets and replies"; - Messages.support_openTicketTitle = "Open a ticket with a user"; - Messages.support_openTicketHint = "Copy the recipient user's data from their profile page or an existing support ticket. They will receive a CryptPad notification about this message."; - Messages.support_userChannel = "User's notifications channel ID"; - Messages.support_userKey = "User's public key"; - Messages.support_invalChan = "Invalid notifications channel"; - - Messages.support_pasteUserData = "Paste user data here"; - - Messages.support_recordedTitle = "Snippets"; - Messages.support_recordedHint = "Store common text as one-click shortcuts to insert in support messages."; - Messages.support_recordedEmpty = "No snippets"; - Messages.support_recordedId = "Snippet ID (unique)"; - Messages.support_recordedContent = "Content"; - - Messages.support_legacyTitle = "View old support data"; - Messages.support_legacyHint = "View tickets from the legacy support system and recreate them in the new one."; - Messages.support_legacyButton = "Get active"; - Messages.support_legacyDump = "Export all"; - Messages.support_legacyClear = "Delete from my account"; - - Messages.support_searchLabel = "Search (title or ticketId)"; var andThen = function (common, $container, linkedTicket) { const sidebar = Sidebar.create(common, 'support', $container); diff --git a/www/profile/inner.js b/www/profile/inner.js index 77aecd1a0..63e2c8d2a 100644 --- a/www/profile/inner.js +++ b/www/profile/inner.js @@ -533,7 +533,6 @@ define([ }; }; - Messages.support_copyUserData = "Copy user data"; // XXX Already added in support/ui.js var addCopyData = function ($container) { if (!APP.isModerator) { return; } diff --git a/www/support/ui.js b/www/support/ui.js index d180a3c54..afe963b07 100644 --- a/www/support/ui.js +++ b/www/support/ui.js @@ -15,13 +15,6 @@ define([ '/customize/pages.js', ], function ($, ApiConfig, h, UI, Hash, Util, Clipboard, UIElements, Messages, Pages) { - Messages.support_team = "The Support Team"; // XXX - Messages.support_answerAs = "Answering as {0}"; // XXX - Messages.support_movePending = "Move to archive"; - Messages.support_moveActive = "Move to active"; - Messages.support_copyUserData = "Copy user data"; - Messages.support_insertRecorded = "Insert snippet"; - var getDebuggingData = function (ctx, data) { var common = ctx.common; var metadataMgr = common.getMetadataMgr(); @@ -41,7 +34,7 @@ define([ if (ctx.isAdmin && ctx.anonymous) { data.sender = { name: Messages.support_team, - accountName: 'support' // XXX hard-coded text? DB + accountName: 'support' // XXX send edPublic? or keep it private }; }