mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix: rewards fixes
fix enabled/disabled button sort rewards from oldest to newest
This commit is contained in:
10
public/language/en-GB/rewards.json
Normal file
10
public/language/en-GB/rewards.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"awarded-x-reputation": "You have been awarded <strong>%1</strong> reputation",
|
||||||
|
"awarded-group-membership": "You have been added to the group <strong>%1</strong>",
|
||||||
|
|
||||||
|
"essentials/user.reputation-conditional-value": "<span class=\"text-xs\">(Reputation %1 %2)</span>",
|
||||||
|
"essentials/user.postcount-conditional-value": "<span class=\"text-xs\">(Post Count %1 %2)</span>",
|
||||||
|
"essentials/user.lastonline-conditional-value": "<span class=\"text-xs\">(Last Online %1 %2)</span>",
|
||||||
|
"essentials/user.joindate-conditional-value": "<span class=\"text-xs\">(Join Date %1 %2)</span>",
|
||||||
|
"essentials/user.daysregistered-conditional-value": "<span class=\"text-xs\">(Days Registered %1 %2)</span>"
|
||||||
|
}
|
||||||
@@ -41,8 +41,8 @@ define('admin/extend/rewards', ['alerts'], function (alerts) {
|
|||||||
})
|
})
|
||||||
.on('click', '.toggle', function () {
|
.on('click', '.toggle', function () {
|
||||||
const btn = $(this);
|
const btn = $(this);
|
||||||
const disabled = btn.hasClass('btn-success');
|
btn.parent().find('.toggle').removeClass('hidden');
|
||||||
btn.toggleClass('btn-warning').toggleClass('btn-success').translateHtml('[[admin/extend/rewards:' + (disabled ? 'disable' : 'enable') + ']]');
|
btn.addClass('hidden');
|
||||||
// send disable api call
|
// send disable api call
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
@@ -92,16 +92,16 @@ define('admin/extend/rewards', ['alerts'], function (alerts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inputs.forEach(function (input) {
|
inputs.forEach(function (input) {
|
||||||
html += '<label for="' + input.name + '">' + input.label + '<br />';
|
html += `<label class="form-label text-nowrap" for="${input.name}">${input.label}<br />`;
|
||||||
switch (input.type) {
|
switch (input.type) {
|
||||||
case 'select':
|
case 'select':
|
||||||
html += '<select class="form-select form-select-sm" name="' + input.name + '">';
|
html += `<select class="form-select form-select-sm" name="${input.name}" >`;
|
||||||
input.values.forEach(function (value) {
|
input.values.forEach(function (value) {
|
||||||
html += '<option value="' + value.value + '">' + value.name + '</option>';
|
html += `<option value="${value.value}">${value.name}</option>`;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'text':
|
case 'text':
|
||||||
html += '<input type="text" class="form-control form-control-sm" name="' + input.name + '" />';
|
html += `<input type="text" class="form-control form-control-sm" name="${input.name}" />`;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
html += '</label>';
|
html += '</label>';
|
||||||
@@ -162,7 +162,7 @@ define('admin/extend/rewards', ['alerts'], function (alerts) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
data.id = $(this).attr('data-id');
|
data.id = $(this).attr('data-id');
|
||||||
data.disabled = $(this).find('.toggle').hasClass('btn-success');
|
data.disabled = $(this).find('.toggle.disable').hasClass('hidden');
|
||||||
|
|
||||||
activeRewards.push(data);
|
activeRewards.push(data);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ Notifications.getMultiple = async function (nids) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
notification.user = usersData[index];
|
notification.user = usersData[index];
|
||||||
if (notification.user) {
|
if (notification.user && notification.from) {
|
||||||
notification.image = notification.user.picture || null;
|
notification.image = notification.user.picture || null;
|
||||||
if (notification.user.username === '[[global:guest]]') {
|
if (notification.user.username === '[[global:guest]]') {
|
||||||
notification.bodyShort = notification.bodyShort.replace(/([\s\S]*?),[\s\S]*?,([\s\S]*?)/, '$1, [[global:guest]], $2');
|
notification.bodyShort = notification.bodyShort.replace(/([\s\S]*?),[\s\S]*?,([\s\S]*?)/, '$1, [[global:guest]], $2');
|
||||||
|
|||||||
@@ -67,13 +67,14 @@ async function getActiveRewards() {
|
|||||||
db.getObject(`rewards:id:${id}:rewards`),
|
db.getObject(`rewards:id:${id}:rewards`),
|
||||||
]);
|
]);
|
||||||
if (main) {
|
if (main) {
|
||||||
main.disabled = main.disabled === 'true';
|
main.disabled = main.disabled === 'true' || main.disabled === true;
|
||||||
main.rewards = rewards;
|
main.rewards = rewards;
|
||||||
}
|
}
|
||||||
return main;
|
return main;
|
||||||
}
|
}
|
||||||
|
|
||||||
const rewardsList = await db.getSetMembers('rewards:list');
|
const rewardsList = await db.getSetMembers('rewards:list');
|
||||||
|
rewardsList.sort((a, b) => a - b);
|
||||||
const rewardData = await Promise.all(rewardsList.map(id => load(id)));
|
const rewardData = await Promise.all(rewardsList.map(id => load(id)));
|
||||||
return rewardData.filter(Boolean);
|
return rewardData.filter(Boolean);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,11 @@ async function giveRewards(uid, rewards) {
|
|||||||
const rewardData = await getRewardsByRewardData(rewards);
|
const rewardData = await getRewardsByRewardData(rewards);
|
||||||
for (let i = 0; i < rewards.length; i++) {
|
for (let i = 0; i < rewards.length; i++) {
|
||||||
/* eslint-disable no-await-in-loop */
|
/* eslint-disable no-await-in-loop */
|
||||||
await plugins.hooks.fire(`action:rewards.award:${rewards[i].rid}`, { uid: uid, reward: rewardData[i] });
|
await plugins.hooks.fire(`action:rewards.award:${rewards[i].rid}`, {
|
||||||
|
uid: uid,
|
||||||
|
rewardData: rewards[i],
|
||||||
|
reward: rewardData[i],
|
||||||
|
});
|
||||||
await db.sortedSetIncrBy(`uid:${uid}:rewards`, 1, rewards[i].id);
|
await db.sortedSetIncrBy(`uid:${uid}:rewards`, 1, rewards[i].id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
{{{ end }}}
|
{{{ end }}}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<input class="form-control form-control-sm" type="text" name="value" value="{active.value}" style="max-width: 64px;"/>
|
<input class="form-control form-control-sm" type="text" name="value" value="{active.value}" style="max-width: 128px;"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card card-body m-0 then-block border-primary border border-2">
|
<div class="card card-body m-0 then-block border-primary border border-2">
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<form class="rewards">
|
<form class="rewards flex-1">
|
||||||
<div class="inputs card card-body m-0 h-100 reward-block border-success border border-2"><div class="d-flex h-100 align-items-center">[[admin/extend/rewards:select-reward]]</div></div>
|
<div class="inputs card card-body m-0 h-100 reward-block border-success border border-2"><div class="d-flex h-100 align-items-center">[[admin/extend/rewards:select-reward]]</div></div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user