mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-07-15 00:42:04 +02:00
Merge branch 'master' into develop
This commit is contained in:
@@ -194,14 +194,13 @@ module.exports = function (module) {
|
||||
if (!key || (Array.isArray(key) && !key.length) || !Array.isArray(fields) || !fields.length) {
|
||||
return;
|
||||
}
|
||||
fields = fields.filter(Boolean);
|
||||
fields = fields.map(helpers.fieldToString).filter(Boolean);
|
||||
if (!fields.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const data = {};
|
||||
fields.forEach((field) => {
|
||||
field = helpers.fieldToString(field);
|
||||
data[field] = '';
|
||||
});
|
||||
if (Array.isArray(key)) {
|
||||
|
||||
@@ -172,8 +172,11 @@ module.exports = function (module) {
|
||||
if (key === undefined || key === null || field === undefined || field === null) {
|
||||
return;
|
||||
}
|
||||
await module.client.hdel(key, field);
|
||||
cache.del(key);
|
||||
field = field.toString();
|
||||
if (field) {
|
||||
await module.client.hdel(key, field);
|
||||
cache.del(key);
|
||||
}
|
||||
};
|
||||
|
||||
module.deleteObjectFields = async function (key, fields) {
|
||||
|
||||
@@ -354,8 +354,11 @@ Emailer.sendViaFallback = async (data) => {
|
||||
data.text = data.plaintext;
|
||||
delete data.plaintext;
|
||||
|
||||
// NodeMailer uses a combined "from"
|
||||
data.from = `${data.from_name}<${data.from}>`;
|
||||
// use an address object https://nodemailer.com/message/addresses/
|
||||
data.from = {
|
||||
name: data.from_name,
|
||||
address: data.from,
|
||||
};
|
||||
delete data.from_name;
|
||||
await Emailer.fallbackTransport.sendMail(data);
|
||||
};
|
||||
|
||||
@@ -200,7 +200,7 @@ async function completeConfigSetup(config) {
|
||||
config.package_manager = nconf.get('package_manager');
|
||||
}
|
||||
|
||||
if (install.values.hasOwnProperty('saas_plan')) {
|
||||
if (install.values && install.values.hasOwnProperty('saas_plan')) {
|
||||
config.saas_plan = install.values.saas_plan;
|
||||
}
|
||||
|
||||
|
||||
@@ -68,8 +68,8 @@ _mounts.post = (app, name, middleware, controllers) => {
|
||||
middleware.registrationComplete,
|
||||
middleware.pluginHooks,
|
||||
];
|
||||
app.get(`/${name}/:pid`, middleware.busyCheck, middlewares, controllers.posts.redirectToPost);
|
||||
app.get(`/api/${name}/:pid`, middlewares, controllers.posts.redirectToPost);
|
||||
app.get(`/${name}/:pid`, middleware.busyCheck, middlewares, helpers.tryRoute(controllers.posts.redirectToPost));
|
||||
app.get(`/api/${name}/:pid`, middlewares, helpers.tryRoute(controllers.posts.redirectToPost));
|
||||
};
|
||||
|
||||
_mounts.tags = (app, name, middleware, controllers) => {
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-primary btn-sm dropdown-toggle" id="action-dropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button" disabled="disabled">[[admin/manage/users:edit]] <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm" role="menu">
|
||||
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm overflow-auto" role="menu" style="max-height:75vh;">
|
||||
|
||||
<li><h6 class="dropdown-header">[[admin/manage/users:email]]</h6></li>
|
||||
<li><a href="#" class="dropdown-item rounded-1 change-email" role="menuitem"><i class="text-secondary fa fa-fw fa-envelope text-start"></i> [[admin/manage/users:change-email]]</a></li>
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
<div class="tool-modal d-flex">
|
||||
|
||||
|
||||
<div class="card shadow">
|
||||
<h5 class="card-header">[[topic:thread-tools.merge-topics]]</h5>
|
||||
<div class="card-body">
|
||||
@@ -13,7 +11,7 @@
|
||||
<span class="input-group-text"><i class="fa fa-search"></i></span>
|
||||
</div>
|
||||
|
||||
<div class="quick-search-container dropdown-menu d-block p-2 hidden">
|
||||
<div class="quick-search-container dropdown-menu d-block p-2 hidden w-100">
|
||||
<div class="text-center loading-indicator"><i class="fa fa-spinner fa-spin"></i></div>
|
||||
<div class="quick-search-results-container"></div>
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{{{ end }}}
|
||||
<div component="chat/recent/room" data-roomid="{./roomId}" data-full="1" class="rounded-1 {{{ if ./unread }}}unread{{{ end }}}">
|
||||
<div class="d-flex gap-1 justify-content-between">
|
||||
<div class="chat-room-btn position-relative d-flex flex-grow-1 gap-2 justify-content-start align-items-start btn btn-ghost btn-sm ff-sans text-start">
|
||||
<a href="#" class="chat-room-btn position-relative d-flex flex-grow-1 gap-2 justify-content-start align-items-start btn btn-ghost btn-sm ff-sans text-start">
|
||||
<div class="main-avatar">
|
||||
{{{ if ./users.length }}}
|
||||
{{{ if ./groupChat}}}
|
||||
@@ -33,7 +33,7 @@
|
||||
</div>
|
||||
<!-- IMPORT partials/chats/room-teaser.tpl -->
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<div>
|
||||
<button class="mark-read btn btn-ghost btn-sm d-flex align-items-center justify-content-center flex-grow-0 flex-shrink-0 p-1" style="width: 1.5rem; height: 1.5rem;">
|
||||
<i class="unread fa fa-2xs fa-circle text-primary {{{ if !./unread }}}hidden{{{ end }}}" aria-label="[[unread:mark-as-read]]"></i>
|
||||
|
||||
Reference in New Issue
Block a user