mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-05 05:25:49 +01:00
admin/manage translations, misc
- Translate Manage templates and JS - Change `translator.translate -> .html` into `.translateHtml` where fitting - Translate `admin/partials/download_plugin_item`
This commit is contained in:
committed by
Julian Lam
parent
94eb74646c
commit
038c45f4b6
19
public/language/en-GB/admin/manage/flags.json
Normal file
19
public/language/en-GB/admin/manage/flags.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"daily": "Daily flags",
|
||||
"by-user": "Flags by user",
|
||||
"by-user-search": "Search flagged posts by username",
|
||||
"category": "Category",
|
||||
"sort-by": "Sort By",
|
||||
"sort-by.most-flags": "Most Flags",
|
||||
"sort-by.most-recent": "Most Recent",
|
||||
"search": "Search",
|
||||
"dismiss-all": "Dismiss All",
|
||||
"none-flagged": "No flagged posts!",
|
||||
"posted-in": "Posted in %1",
|
||||
"read-more": "Read More",
|
||||
"flagged-x-times": "This post has been flagged %1 time(s):",
|
||||
"dismiss": "Dismiss this Flag",
|
||||
"delete-post": "Delete the Post",
|
||||
|
||||
"alerts.confirm-delete-post": "Do you really want to delete this post?"
|
||||
}
|
||||
34
public/language/en-GB/admin/manage/groups.json
Normal file
34
public/language/en-GB/admin/manage/groups.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "Group Name",
|
||||
"description": "Group Description",
|
||||
"system": "System Group",
|
||||
"edit": "Edit",
|
||||
"search-placeholder": "Search",
|
||||
"create": "Create Group",
|
||||
"description-placeholder": "A short description about your group",
|
||||
"create-button": "Create",
|
||||
|
||||
"alerts.create-failure": "<strong>Uh-Oh</strong><p>There was a problem creating your group. Please try again later!</p>",
|
||||
"alerts.confirm-delete": "Are you sure you wish to delete this group?",
|
||||
|
||||
"edit.name": "Name",
|
||||
"edit.description": "Description",
|
||||
"edit.user-title": "Title of Members",
|
||||
"edit.icon": "Group Icon",
|
||||
"edit.label-color": "Group Label Color",
|
||||
"edit.show-badge": "Show Badge",
|
||||
"edit.private-details": "If enabled, joining of groups requires approval from a group owner.",
|
||||
"edit.private-override": "Warning: Private groups is disabled at system level, which overrides this option.",
|
||||
"edit.disable-requests": "Disable join requests",
|
||||
"edit.hidden": "Hidden",
|
||||
"edit.hidden-details": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
|
||||
"edit.add-user": "Add User to Group",
|
||||
"edit.add-user-search": "Search Users",
|
||||
"edit.members": "Member List",
|
||||
"control-panel": "Groups Control Panel",
|
||||
"revert": "Revert",
|
||||
|
||||
"edit.no-users-found": "No Users Found",
|
||||
"edit.confirm-remove-user": "Are you sure you want to remove this user?",
|
||||
"edit.save-success": "Changes saved!"
|
||||
}
|
||||
15
public/language/en-GB/admin/manage/ip-blacklist.json
Normal file
15
public/language/en-GB/admin/manage/ip-blacklist.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"lead": "Configure your IP blacklist here.",
|
||||
"description": "Occasionally, a user account ban is not enough of a deterrant. Other times, restricting access to the forum to a specific IP or a range of IPs is the best way to protect a forum. In these scenarios, you can add troublesome IP addresses or entire CIDR blocks to this blacklist, and they will be prevented from logging in to or registering a new account.",
|
||||
"active-rules": "Active Rules",
|
||||
"validate": "Validate Blacklist",
|
||||
"apply": "Apply Blacklist",
|
||||
"hints": "Syntax Hints",
|
||||
"hint-1": "Define a single IP addresses per line. You can add IP blocks as long as they follow the CIDR format (e.g. <code>192.168.100.0/22</code>).",
|
||||
"hint-2": "You can add in comments by starting lines with the <code>#</code> symbol.",
|
||||
|
||||
"validate.x-valid": "<strong>%1</strong> out of <strong>%2</strong> rule(s) valid.",
|
||||
"validate.x-invalid": "The following <strong>%1</strong> rules are invalid:",
|
||||
|
||||
"alerts.applied-success": "Blacklist Applied"
|
||||
}
|
||||
20
public/language/en-GB/admin/manage/registration.json
Normal file
20
public/language/en-GB/admin/manage/registration.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"queue": "Queue",
|
||||
"description": "There are no users in the registration queue. <br> To enable this feature, go to <a href=\"%1\">Settings → User → User Registration</a> and set <strong>Registration Type</strong> to \"Admin Approval\".",
|
||||
|
||||
"list.name": "Name",
|
||||
"list.email": "Email",
|
||||
"list.ip": "IP",
|
||||
"list.time": "Time",
|
||||
"list.username-spam": "Frequency: %1 Appears: %2 Confidence: %3",
|
||||
"list.email-spam": "Frequency: %1 Appears: %2",
|
||||
"list.ip-spam": "Frequency: %1 Appears: %2",
|
||||
|
||||
"invitations": "Invitations",
|
||||
"invitations.description": "Below is a complete list of invitations sent. Use ctrl-f to search through the list by email or username. <br><br>The username will be displayed to the right of the emails for users who have redeemed their invitations.",
|
||||
"invitations.inviter-username": "Inviter Username",
|
||||
"invitations.invitee-email": "Invitee Email",
|
||||
"invitations.invitee-username": "Invitee Username (if registered)",
|
||||
|
||||
"invitations.confirm-delete": "Are you sure you wish to delete this invitation?"
|
||||
}
|
||||
18
public/language/en-GB/admin/manage/tags.json
Normal file
18
public/language/en-GB/admin/manage/tags.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"none": "Your forum does not have any topics with tags yet.",
|
||||
"bg-color": "Background Colour",
|
||||
"text-color": "Text Colour",
|
||||
"create-modify": "Create & Modify Tags",
|
||||
"description": "Select tags via clicking and/or dragging, use shift to select multiple.",
|
||||
"create": "Create Tag",
|
||||
"modify": "Modify Tags",
|
||||
"delete": "Delete Selected Tags",
|
||||
"search": "Search for tags...",
|
||||
"settings": "Click <a href=\"%1\">here</a> to visit the tag settings page.",
|
||||
"name": "Tag Name",
|
||||
|
||||
"alerts.editing-multiple": "Editing multiple tags",
|
||||
"alerts.editing-x": "Editing \"%1\" tag",
|
||||
"alerts.confirm-delete": "Do you want to delete the selected tags?",
|
||||
"alerts.update-success": "Tag Updated!"
|
||||
}
|
||||
91
public/language/en-GB/admin/manage/users.json
Normal file
91
public/language/en-GB/admin/manage/users.json
Normal file
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"users": "Users",
|
||||
"edit": "Edit",
|
||||
"make-admin": "Make Admin",
|
||||
"remove-admin": "Remove Admin",
|
||||
"validate-email": "Validate Email",
|
||||
"send-validation-email": "Send Validation Email",
|
||||
"password-reset-email": "Send Password Reset Email",
|
||||
"ban": "Ban User(s)",
|
||||
"temp-ban": "Ban User(s) Temporarily",
|
||||
"unban": "Unban User(s)",
|
||||
"reset-lockout": "Reset Lockout",
|
||||
"reset-flags": "Reset Flags",
|
||||
"delete": "Delete User(s)",
|
||||
"purge": "Delete User(s) and Content",
|
||||
"download-csv": "Download CSV",
|
||||
"invite": "Invite",
|
||||
"new": "New User",
|
||||
|
||||
"pills.latest": "Latest Users",
|
||||
"pills.unvalidated": "Not Validated",
|
||||
"pills.no-posts": "No Posts",
|
||||
"pills.top-posters": "Top Posters",
|
||||
"pills.top-rep": "Most Reputation",
|
||||
"pills.inactive": "Inactive",
|
||||
"pills.flagged": "Most Flagged",
|
||||
"pills.banned": "Banned",
|
||||
"pills.search": "User Search",
|
||||
|
||||
"search.username": "By User Name",
|
||||
"search.username-placeholder": "Enter a username to search",
|
||||
"search.email": "By Email",
|
||||
"search.email-placeholder": "Enter a email to search",
|
||||
"search.ip": "By IP Address",
|
||||
"search.ip-placeholder": "Enter an IP Address to search",
|
||||
"search.not-found": "User not found!",
|
||||
|
||||
"inactive.3-months": "3 months",
|
||||
"inactive.6-months": "6 months",
|
||||
"inactive.12-months": "12 months",
|
||||
|
||||
"users.uid": "uid",
|
||||
"users.username": "username",
|
||||
"users.email": "email",
|
||||
"users.postcount": "postcount",
|
||||
"users.reputation": "reputation",
|
||||
"users.flags": "flags",
|
||||
"users.joined": "joined",
|
||||
"users.last-online": "last online",
|
||||
"users.banned": "banned",
|
||||
|
||||
"create.username": "User Name",
|
||||
"create.email": "Email",
|
||||
"create.email-placeholder": "Email of this user",
|
||||
"create.password": "Password",
|
||||
"create.password-confirm": "Confirm Password",
|
||||
|
||||
"temp-ban.length": "Ban Length",
|
||||
"temp-ban.reason": "Reason <span class=\"text-muted\">(Optional)</span>",
|
||||
"temp-ban.hours": "Hours",
|
||||
"temp-ban.days": "Days",
|
||||
"temp-ban.explanation": "Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.",
|
||||
|
||||
"alerts.confirm-ban": "Do you really want to ban this user <strong>permanently</strong>?",
|
||||
"alerts.confirm-ban-multi": "Do you really want to ban these users <strong>permanently</strong>?",
|
||||
"alerts.ban-success": "User(s) banned!",
|
||||
"alerts.button-ban-x": "Ban %1 user(s)",
|
||||
"alerts.unban-success": "User(s) unbanned!",
|
||||
"alerts.lockout-reset-success": "Lockout(s) reset!",
|
||||
"alerts.flag-reset-success": "Flags(s) reset!",
|
||||
"alerts.no-remove-yourself-admin": "You can't remove yourself as Administrator!",
|
||||
"alerts.make-admin-success": "User(s) are now administrators.",
|
||||
"alerts.confirm-remove-admin": "Do you really want to remove admins?",
|
||||
"alerts.remove-admin-success": "User(s) are no longer administrators.",
|
||||
"alerts.confirm-validate-email": "Do you want to validate email(s) of these user(s)?",
|
||||
"alerts.validate-email-success": "Emails validated",
|
||||
"alerts.password-reset-confirm": "Do you want to send password reset email(s) to these user(s)?",
|
||||
"alerts.confirm-delete": "<b>Warning!</b><br/>Do you really want to delete user(s)?<br/> This action is not reversable! Only the user account will be deleted, their posts and topics will remain.",
|
||||
"alerts.delete-success": "User(s) Deleted!",
|
||||
"alerts.confirm-purge": "<b>Warning!</b><br/>Do you really want to delete user(s) and their content?<br/> This action is not reversable! All user data and content will be erased!",
|
||||
"alerts.create": "Create User",
|
||||
"alerts.button-create": "Create",
|
||||
"alerts.button-cancel": "Cancel",
|
||||
"alerts.error-passwords-different": "Passwords must match!",
|
||||
"alerts.error-x": "<strong>Error</strong><p>%1</p>",
|
||||
"alerts.create-success": "User created!",
|
||||
|
||||
"alerts.prompt-email": "Email: ",
|
||||
"alerts.email-sent-to": "An invitation email has been sent to %1",
|
||||
"alerts.x-users-found": "%1 user(s) found! Search took %2 ms."
|
||||
}
|
||||
@@ -71,9 +71,7 @@ define('admin/appearance/themes', ['translator'], function (translator) {
|
||||
var instListEl = $('#installed_themes');
|
||||
|
||||
if (!themes.length) {
|
||||
translator.translate('[[admin/appearance/themes:no-themes]]', function (text) {
|
||||
instListEl.append($('<li/ >').addClass('no-themes').html(text));
|
||||
});
|
||||
instListEl.append($('<li/ >').addClass('no-themes').translateHtml('[[admin/appearance/themes:no-themes]]'));
|
||||
return;
|
||||
} else {
|
||||
templates.parse('admin/partials/theme_list', {
|
||||
|
||||
@@ -43,9 +43,7 @@ define('admin/extend/rewards', ['translator'], function (translator) {
|
||||
var btn = $(this),
|
||||
disabled = btn.hasClass('btn-success'),
|
||||
id = $(this).parents('[data-id]').attr('data-id');
|
||||
translator.translate('[[admin/extend/rewards:' + disabled ? 'disable' : 'enable' + ']]', function (text) {
|
||||
btn.toggleClass('btn-warning').toggleClass('btn-success').html(text);
|
||||
});
|
||||
btn.toggleClass('btn-warning').toggleClass('btn-success').translateHtml('[[admin/extend/rewards:' + disabled ? 'disable' : 'enable' + ']]');
|
||||
// send disable api call
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -116,9 +116,7 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator'], function (s
|
||||
updatePresenceGraph(data.users);
|
||||
updateTopicsGraph(data.topics);
|
||||
|
||||
translator.translate(html, function (html) {
|
||||
$('#active-users').html(html);
|
||||
});
|
||||
$('#active-users').translateHtml(html);
|
||||
};
|
||||
|
||||
var graphs = {
|
||||
|
||||
@@ -137,9 +137,10 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], fun
|
||||
function toggle() {
|
||||
var btn = $(this),
|
||||
disabled = btn.hasClass('btn-success');
|
||||
|
||||
btn.toggleClass('btn-warning').toggleClass('btn-success').html(!disabled ? 'Enable' : 'Disable');
|
||||
btn.parents('li').find('[name="enabled"]').val(!disabled ? '' : 'on');
|
||||
translator.translate(disabled ? '[[admin/general/navigation:btn.disable]]' : '[[admin/general/navigation:btn.enable]]', function (html) {
|
||||
btn.toggleClass('btn-warning').toggleClass('btn-success').html(html);
|
||||
btn.parents('li').find('[name="enabled"]').val(disabled ? 'on' : '');
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,9 @@
|
||||
define('admin/manage/flags', [
|
||||
'autocomplete',
|
||||
'Chart',
|
||||
'components'
|
||||
], function (autocomplete, Chart, components) {
|
||||
'components',
|
||||
'translator'
|
||||
], function (autocomplete, Chart, components, translator) {
|
||||
|
||||
var Flags = {};
|
||||
|
||||
@@ -56,7 +57,7 @@ define('admin/manage/flags', [
|
||||
function handleDelete() {
|
||||
$('.flags').on('click', '.delete', function () {
|
||||
var btn = $(this);
|
||||
bootbox.confirm('Do you really want to delete this post?', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/flags:alerts.confirm-delete-post]]', function (confirm) {
|
||||
if (!confirm) {
|
||||
return;
|
||||
}
|
||||
@@ -76,7 +77,9 @@ define('admin/manage/flags', [
|
||||
btn.parents('[data-pid]').fadeOut(function () {
|
||||
$(this).remove();
|
||||
if (!$('.flags [data-pid]').length) {
|
||||
$('.post-container').text('No flagged posts!');
|
||||
translator.translate('[[admin/manage/flags:none-flagged]]', function (text) {
|
||||
$('.post-container').text(text);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -130,7 +133,8 @@ define('admin/manage/flags', [
|
||||
}
|
||||
|
||||
function updateFlagDetails(source) {
|
||||
// As the flag details are returned in the API, update the form controls to show the correct data
|
||||
// As the flag details are returned in the API,
|
||||
// update the form controls to show the correct data
|
||||
|
||||
// Create reference hash for use in this method
|
||||
source = source.reduce(function (memo, cur) {
|
||||
@@ -140,7 +144,7 @@ define('admin/manage/flags', [
|
||||
|
||||
components.get('posts/flag').each(function (idx, el) {
|
||||
var pid = el.getAttribute('data-pid');
|
||||
var el = $(el);
|
||||
el = $(el);
|
||||
|
||||
if (source[pid]) {
|
||||
for(var prop in source[pid]) {
|
||||
|
||||
@@ -69,7 +69,7 @@ define('admin/manage/group', [
|
||||
groupDetailsSearchResults.append(foundUser);
|
||||
}
|
||||
} else {
|
||||
groupDetailsSearchResults.html('<li>No Users Found</li>');
|
||||
groupDetailsSearchResults.translateHtml('<li>[[admin/manage/groups:edit.no-users-found]]</li>');
|
||||
}
|
||||
});
|
||||
}, 200);
|
||||
@@ -126,7 +126,7 @@ define('admin/manage/group', [
|
||||
break;
|
||||
|
||||
case 'kick':
|
||||
bootbox.confirm('Are you sure you want to remove this user?', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/groups:edit.confirm-remove-user]]', function (confirm) {
|
||||
if (!confirm) {
|
||||
return;
|
||||
}
|
||||
@@ -178,7 +178,7 @@ define('admin/manage/group', [
|
||||
|
||||
// If the group name changed, change url
|
||||
if (groupName === newName) {
|
||||
app.alertSuccess('Changes saved!');
|
||||
app.alertSuccess('[[admin/manage/groups:edit.save-success]]');
|
||||
} else {
|
||||
ajaxify.go('admin/manage/groups/' + encodeURIComponent(newName), undefined, true);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
"use strict";
|
||||
/*global define, templates, socket, ajaxify, app, admin, bootbox, utils, config */
|
||||
|
||||
define('admin/manage/groups', [
|
||||
'translator',
|
||||
'components'
|
||||
], function (translator, components) {
|
||||
define('admin/manage/groups', ['translator'], function (translator) {
|
||||
var Groups = {};
|
||||
|
||||
var intervalId = 0;
|
||||
@@ -40,12 +37,9 @@ define('admin/manage/groups', [
|
||||
socket.emit('admin.groups.create', submitObj, function (err) {
|
||||
if (err) {
|
||||
if (err.hasOwnProperty('message') && utils.hasLanguageKey(err.message)) {
|
||||
translator.translate(err.message, config.defaultLang, function (translated) {
|
||||
createModalError.html(translated).removeClass('hide');
|
||||
});
|
||||
} else {
|
||||
createModalError.html('<strong>Uh-Oh</strong><p>There was a problem creating your group. Please try again later!</p>').removeClass('hide');
|
||||
err = '[[admin/manage/groups:alerts.create-failure]]';
|
||||
}
|
||||
createModalError.translateHtml(err).removeClass('hide');
|
||||
} else {
|
||||
createModalError.addClass('hide');
|
||||
createGroupName.val('');
|
||||
@@ -64,7 +58,7 @@ define('admin/manage/groups', [
|
||||
|
||||
switch (action) {
|
||||
case 'delete':
|
||||
bootbox.confirm('Are you sure you wish to delete this group?', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/groups:alerts.confirm-delete]]', function (confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('groups.delete', {
|
||||
groupName: groupName
|
||||
|
||||
@@ -20,7 +20,7 @@ define('admin/manage/ip-blacklist', ['translator'], function (translator) {
|
||||
app.alert({
|
||||
type: 'success',
|
||||
alert_id: 'blacklist-saved',
|
||||
title: 'Blacklist Applied',
|
||||
title: '[[admin/manage/ip-blacklist:alerts.applied]]',
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -34,12 +34,10 @@ define('admin/manage/ip-blacklist', ['translator'], function (translator) {
|
||||
}
|
||||
|
||||
templates.parse('admin/partials/blacklist-validate', data, function (html) {
|
||||
translator.translate(html, function (html) {
|
||||
bootbox.alert(html);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
return Blacklist;
|
||||
|
||||
@@ -39,7 +39,7 @@ define('admin/manage/registration', function () {
|
||||
parent.remove();
|
||||
};
|
||||
if (action === 'delete') {
|
||||
bootbox.confirm('Are you sure you wish to delete this invitation?', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/registration:invitations.confirm-delete]]', function (confirm) {
|
||||
if (confirm) {
|
||||
socket.emit(method, {email: email, invitedBy: invitedBy}, function (err) {
|
||||
if (err) {
|
||||
|
||||
@@ -86,7 +86,7 @@ define('admin/manage/tags', [
|
||||
}
|
||||
|
||||
var firstTag = $(tagsToModify[0]),
|
||||
title = tagsToModify.length > 1 ? 'Editing multiple tags' : 'Editing ' + firstTag.find('.tag-item').text() + ' tag';
|
||||
title = tagsToModify.length > 1 ? '[[admin/manage/tags:alerts.editing-multiple]]' : '[[admin/manage/tags:alerts.editing-x, ' + firstTag.find('.tag-item').text() + ']]';
|
||||
|
||||
var modal = bootbox.dialog({
|
||||
title: title,
|
||||
@@ -125,7 +125,7 @@ define('admin/manage/tags', [
|
||||
return;
|
||||
}
|
||||
|
||||
bootbox.confirm('Do you want to delete the selected tags?', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/tags:alerts.confirm-delete]]', function (confirm) {
|
||||
if (!confirm) {
|
||||
return;
|
||||
}
|
||||
@@ -164,7 +164,7 @@ define('admin/manage/tags', [
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
|
||||
app.alertSuccess('Tag Updated!');
|
||||
app.alertSuccess('[[admin/manage/tags:alerts.update-success]]');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -68,9 +68,9 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
return false; // specifically to keep the menu open
|
||||
}
|
||||
|
||||
bootbox.confirm('Do you really want to ban ' + (uids.length > 1 ? 'these users' : 'this user') + ' <strong>permanently</strong>?', function (confirm) {
|
||||
bootbox.confirm((uids.length > 1 ? '[[admin/manage/users:alerts.confirm-ban-multi]]' : '[[admin/manage/users:alerts.confirm-ban]]'), function (confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('user.banUsers', { uids: uids, reason: '' }, done('User(s) banned!', '.ban', true));
|
||||
socket.emit('user.banUsers', { uids: uids, reason: '' }, done('[[admin/manage/users:alerts.ban-success]]', '.ban', true));
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -94,14 +94,14 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
className: 'btn-link'
|
||||
},
|
||||
submit: {
|
||||
label: 'Ban ' + uids.length + (uids.length > 1 ? ' users' : ' user'),
|
||||
label: '[[admin/manage/users:alerts.button-ban-x, ' + uids.length + ']]',
|
||||
callback: function () {
|
||||
var formData = $('.ban-modal form').serializeArray().reduce(function (data, cur) {
|
||||
data[cur.name] = cur.value;
|
||||
return data;
|
||||
}, {});
|
||||
var until = formData.length ? (Date.now() + formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1)) : 0;
|
||||
socket.emit('user.banUsers', { uids: uids, until: until, reason: formData.reason }, done('User(s) banned!', '.ban', true));
|
||||
socket.emit('user.banUsers', { uids: uids, until: until, reason: formData.reason }, done('[[admin/manage/users:alerts.ban-success]]', '.ban', true));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -116,7 +116,7 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
return false; // specifically to keep the menu open
|
||||
}
|
||||
|
||||
socket.emit('user.unbanUsers', uids, done('User(s) unbanned!', '.ban', false));
|
||||
socket.emit('user.unbanUsers', uids, done('[[admin/manage/users:alerts.unban-success]]', '.ban', false));
|
||||
});
|
||||
|
||||
$('.reset-lockout').on('click', function () {
|
||||
@@ -125,7 +125,7 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
return;
|
||||
}
|
||||
|
||||
socket.emit('admin.user.resetLockouts', uids, done('Lockout(s) reset!'));
|
||||
socket.emit('admin.user.resetLockouts', uids, done('[[admin/manage/users:alerts.lockout-reset-success]]'));
|
||||
});
|
||||
|
||||
$('.reset-flags').on('click', function () {
|
||||
@@ -134,7 +134,7 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
return;
|
||||
}
|
||||
|
||||
socket.emit('admin.user.resetFlags', uids, done('Flags(s) reset!'));
|
||||
socket.emit('admin.user.resetFlags', uids, done('[[admin/manage/users:alerts.flag-reset-success]]'));
|
||||
});
|
||||
|
||||
$('.admin-user').on('click', function () {
|
||||
@@ -144,9 +144,9 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
}
|
||||
|
||||
if (uids.indexOf(app.user.uid.toString()) !== -1) {
|
||||
app.alertError('You can\'t remove yourself as Administrator!');
|
||||
app.alertError('[[admin/manage/users:alerts.no-remove-yourself-admin]]');
|
||||
} else {
|
||||
socket.emit('admin.user.makeAdmins', uids, done('User(s) are now administrators.', '.administrator', true));
|
||||
socket.emit('admin.user.makeAdmins', uids, done('[[admin/manage/users:alerts.make-admin-success]]', '.administrator', true));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -157,11 +157,11 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
}
|
||||
|
||||
if (uids.indexOf(app.user.uid.toString()) !== -1) {
|
||||
app.alertError('You can\'t remove yourself as Administrator!');
|
||||
app.alertError('[[admin/manage/users:alerts.no-remove-yourself-admin]]');
|
||||
} else {
|
||||
bootbox.confirm('Do you really want to remove admins?', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/users:alerts.confirm-remove-admin]]', function (confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('admin.user.removeAdmins', uids, done('User(s) are no longer administrators.', '.administrator', false));
|
||||
socket.emit('admin.user.removeAdmins', uids, done('[[admin/manage/users:alerts.remove-admin-success]]', '.administrator', false));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -173,7 +173,7 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
return;
|
||||
}
|
||||
|
||||
bootbox.confirm('Do you want to validate email(s) of these user(s)?', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/users:alerts.confirm-validate-email]]', function (confirm) {
|
||||
if (!confirm) {
|
||||
return;
|
||||
}
|
||||
@@ -181,7 +181,7 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
app.alertSuccess('Emails validated');
|
||||
app.alertSuccess('[[admin/manage/users:alerts.validate-email-success]]');
|
||||
update('.notvalidated', false);
|
||||
update('.validated', true);
|
||||
unselectAll();
|
||||
@@ -208,9 +208,9 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
return;
|
||||
}
|
||||
|
||||
bootbox.confirm('Do you want to send password reset email(s) to these user(s)?', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/users:alerts.password-reset-confirm]]', function (confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('admin.user.sendPasswordResetEmail', uids, done('Emails sent'));
|
||||
socket.emit('admin.user.sendPasswordResetEmail', uids, done('[[notifications:email-confirm-sent]]'));
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -221,14 +221,14 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
return;
|
||||
}
|
||||
|
||||
bootbox.confirm('<b>Warning!</b><br/>Do you really want to delete user(s)?<br/> This action is not reversable, only the user account will be deleted, their posts and topics will not be deleled!', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/users:alerts.confirm-delete]]', function (confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('admin.user.deleteUsers', uids, function (err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
|
||||
app.alertSuccess('User(s) Deleted!');
|
||||
app.alertSuccess('[[admin/manage/users:alerts.delete-success]]');
|
||||
removeSelected();
|
||||
unselectAll();
|
||||
});
|
||||
@@ -241,14 +241,14 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
if (!uids.length) {
|
||||
return;
|
||||
}
|
||||
bootbox.confirm('<b>Warning!</b><br/>Do you really want to delete user(s) and their content?<br/> This action is not reversable, all user data and content will be erased!', function (confirm) {
|
||||
bootbox.confirm('[[admin/manage/users:alerts.confirm-purge]]', function (confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('admin.user.deleteUsersAndContent', uids, function (err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
|
||||
app.alertSuccess('User(s) Deleted!');
|
||||
app.alertSuccess('[[admin/manage/users:alerts.delete-success]]');
|
||||
removeSelected();
|
||||
unselectAll();
|
||||
});
|
||||
@@ -259,18 +259,17 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
function handleUserCreate() {
|
||||
$('#createUser').on('click', function () {
|
||||
templates.parse('admin/partials/create_user_modal', {}, function (html) {
|
||||
translator.translate(html, function (html) {
|
||||
bootbox.dialog({
|
||||
message: html,
|
||||
title: 'Create User',
|
||||
title: '[[admin/manage/users:alerts.create]]',
|
||||
onEscape: true,
|
||||
buttons: {
|
||||
cancel: {
|
||||
label: 'Cancel',
|
||||
label: '[[admin/manage/users:alerts.button-cancel]]',
|
||||
className: 'btn-link'
|
||||
},
|
||||
create: {
|
||||
label: 'Create',
|
||||
label: '[[admin/manage/users:alerts.button-create]]',
|
||||
className: 'btn-primary',
|
||||
callback: function () {
|
||||
createUser.call(this);
|
||||
@@ -281,7 +280,6 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function createUser() {
|
||||
@@ -294,7 +292,7 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
var errorEl = $('#create-modal-error');
|
||||
|
||||
if (password !== passwordAgain) {
|
||||
return errorEl.html('<strong>Error</strong><p>Passwords must match!</p>').removeClass('hide');
|
||||
return errorEl.translateHtml('[[admin/manage/users:alerts.error-x, [[admin/manage/users:alerts.error-passwords-different]]]]').removeClass('hide');
|
||||
}
|
||||
|
||||
var user = {
|
||||
@@ -305,14 +303,14 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
|
||||
socket.emit('admin.user.createUser', user, function (err) {
|
||||
if(err) {
|
||||
return errorEl.translateHtml('<strong>Error</strong><p>' + err.message + '</p>').removeClass('hide');
|
||||
return errorEl.translateHtml('[[admin/manage/users:alerts.error-x, ' + err.message + ']]').removeClass('hide');
|
||||
}
|
||||
|
||||
modal.modal('hide');
|
||||
modal.on('hidden.bs.modal', function () {
|
||||
ajaxify.refresh();
|
||||
});
|
||||
app.alertSuccess('User created!');
|
||||
app.alertSuccess('[[admin/manage/users:alerts.create-success]]');
|
||||
});
|
||||
}
|
||||
|
||||
@@ -344,12 +342,12 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
$('.fa-spinner').addClass('hidden');
|
||||
|
||||
if (data && data.users.length === 0) {
|
||||
$('#user-notfound-notify').html('User not found!')
|
||||
$('#user-notfound-notify').translateHtml('[[admin/manage/users:search.not-found]]')
|
||||
.removeClass('hide')
|
||||
.addClass('label-danger')
|
||||
.removeClass('label-success');
|
||||
} else {
|
||||
$('#user-notfound-notify').html(data.users.length + ' user' + (data.users.length > 1 ? 's' : '') + ' found! Search took ' + data.timing + ' ms.')
|
||||
$('#user-notfound-notify').translateHtml(translator.compile('admin/manage/users:alerts.x-users-found', data.users.length, data.timing))
|
||||
.removeClass('hide')
|
||||
.addClass('label-success')
|
||||
.removeClass('label-danger');
|
||||
@@ -368,7 +366,7 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
|
||||
function handleInvite() {
|
||||
$('[component="user/invite"]').on('click', function () {
|
||||
bootbox.prompt('Email: ', function (email) {
|
||||
bootbox.prompt('[[admin/manage/users:alerts.prompt-email]]', function (email) {
|
||||
if (!email) {
|
||||
return;
|
||||
}
|
||||
@@ -377,7 +375,7 @@ define('admin/manage/users', ['translator'], function (translator) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
app.alertSuccess('An invitation email has been sent to ' + email);
|
||||
app.alertSuccess('[[admin/manage/users:alerts.email-sent-to, ' + email + ']]');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<div class="panel-footer"><small>Daily flags</small></div>
|
||||
<div class="panel-footer"><small>[[admin/manage/flags:daily]]</small></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<div>
|
||||
<label>Flags by user</label>
|
||||
<input type="text" class="form-control" id="byUsername" placeholder="Search flagged posts by username" name="byUsername" value="{byUsername}">
|
||||
<label>[[admin/manage/flags:by-user]]</label>
|
||||
<input type="text" class="form-control" id="byUsername" placeholder="[[admin/manage/flags:by-user-search]]" name="byUsername" value="{byUsername}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -27,7 +27,7 @@
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<div>
|
||||
<label>Category</label>
|
||||
<label>[[admin/manage/flags:category]]</label>
|
||||
<select class="form-control" id="category-selector" name="cid">
|
||||
<option value="">[[unread:all_categories]]</option>
|
||||
<!-- BEGIN categories -->
|
||||
@@ -39,18 +39,18 @@
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Sort By</label>
|
||||
<label>[[admin/manage/flags:sort-by]]</label>
|
||||
<div>
|
||||
<div>
|
||||
<select id="flag-sort-by" class="form-control" name="sortBy">
|
||||
<option value="count" <!-- IF sortByCount -->selected<!-- ENDIF sortByCount -->>Most Flags</option>
|
||||
<option value="time" <!-- IF sortByTime -->selected<!-- ENDIF sortByTime -->>Most Recent</option>
|
||||
<option value="count" <!-- IF sortByCount -->selected<!-- ENDIF sortByCount -->>[[admin/manage/flags:sort-by.most-flags]]</option>
|
||||
<option value="time" <!-- IF sortByTime -->selected<!-- ENDIF sortByTime -->>[[admin/manage/flags:sort-by.most-recent]]</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary">Search</button>
|
||||
<button type="submit" class="btn btn-primary">[[admin/manage/flags:search]]</button>
|
||||
<button class="btn btn-primary" id="dismissAll">Dismiss All</button>
|
||||
</form>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<div component="posts/flags" class="panel-group post-container" id="accordion" role="tablist" aria-multiselectable="true" data-next="{next}">
|
||||
<!-- IF !posts.length -->
|
||||
<div class="alert alert-success">
|
||||
No flagged posts!
|
||||
[[admin/manage/flags:none-flagged]]
|
||||
</div>
|
||||
<!-- ENDIF !posts.length -->
|
||||
|
||||
@@ -106,14 +106,16 @@
|
||||
</div>
|
||||
<small>
|
||||
<span class="pull-right">
|
||||
Posted in <a href="{config.relative_path}/category/{posts.category.slug}" target="_blank"><i class="fa {posts.category.icon}"></i> {posts.category.name}</a>, <span class="timeago" title="{posts.timestampISO}"></span> •
|
||||
<a href="{config.relative_path}/post/{posts.pid}" target="_blank">Read More</a>
|
||||
[[posted-in, <a href="{config.relative_path}/category/{posts.category.slug}" target="_blank"><i class="fa {posts.category.icon}"></i> {posts.category.name}</a>]],
|
||||
<span class="timeago" title="{posts.timestampISO}"></span> •
|
||||
<a href="{config.relative_path}/post/{posts.pid}" target="_blank">[[admin/manage/flags:read-more]]</a>
|
||||
</span>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<i class="fa fa-flag"></i> This post has been flagged {posts.flags} time(s):
|
||||
<i class="fa fa-flag"></i>
|
||||
[[admin/manage/flags:flagged-x-times, {posts.flags}]]
|
||||
<blockquote class="flag-reporters">
|
||||
<ul>
|
||||
<!-- BEGIN posts.flagReasons -->
|
||||
@@ -131,8 +133,12 @@
|
||||
</ul>
|
||||
</blockquote>
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-sm btn-success dismiss">Dismiss this Flag</button>
|
||||
<button class="btn btn-sm btn-danger delete">Delete the Post</button>
|
||||
<button class="btn btn-sm btn-success dismiss">
|
||||
[[admin/manage/flags:dismiss]]
|
||||
</button>
|
||||
<button class="btn btn-sm btn-danger delete">
|
||||
[[admin/manage/flags:delete-post]]
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -141,7 +147,9 @@
|
||||
<div class="col-sm-6">
|
||||
<form role="form">
|
||||
<div class="form-group">
|
||||
<label for="{posts.pid}-assignee">[[topic:flag_manage_assignee]]</label>
|
||||
<label for="{posts.pid}-assignee">
|
||||
[[topic:flag_manage_assignee]]
|
||||
</label>
|
||||
<select class="form-control" id="{posts.pid}-assignee" name="assignee">
|
||||
<!-- BEGIN assignees -->
|
||||
<option value="{assignees.uid}">{assignees.username}</option>
|
||||
@@ -149,25 +157,41 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="{posts.pid}-state">[[topic:flag_manage_state]]</label>
|
||||
<label for="{posts.pid}-state">
|
||||
[[topic:flag_manage_state]]
|
||||
</label>
|
||||
<select class="form-control" id="{posts.pid}-state" name="state">
|
||||
<option value="open">[[topic:flag_manage_state_open]]</option>
|
||||
<option value="wip">[[topic:flag_manage_state_wip]]</option>
|
||||
<option value="resolved">[[topic:flag_manage_state_resolved]]</option>
|
||||
<option value="rejected">[[topic:flag_manage_state_rejected]]</option>
|
||||
<option value="open">
|
||||
[[topic:flag_manage_state_open]]
|
||||
</option>
|
||||
<option value="wip">
|
||||
[[topic:flag_manage_state_wip]]
|
||||
</option>
|
||||
<option value="resolved">
|
||||
[[topic:flag_manage_state_resolved]]
|
||||
</option>
|
||||
<option value="rejected">
|
||||
[[topic:flag_manage_state_rejected]]
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="{posts.pid}-notes">[[topic:flag_manage_notes]]</label>
|
||||
<label for="{posts.pid}-notes">
|
||||
[[topic:flag_manage_notes]]
|
||||
</label>
|
||||
<textarea class="form-control" id="{posts.pid}-notes" name="notes"></textarea>
|
||||
</div>
|
||||
<button type="button" component="posts/flag/update" class="btn btn-sm btn-primary btn-block">[[topic:flag_manage_update]]</button>
|
||||
<button type="button" component="posts/flag/update" class="btn btn-sm btn-primary btn-block">
|
||||
[[topic:flag_manage_update]]
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<h5>[[topic:flag_manage_history]]</h5>
|
||||
<!-- IF !posts.flagData.history.length -->
|
||||
<div class="alert alert-info">[[topic:flag_manage_no_history]]</div>
|
||||
<div class="alert alert-info">
|
||||
[[topic:flag_manage_no_history]]
|
||||
</div>
|
||||
<!-- ELSE -->
|
||||
<ul class="list-group" component="posts/flag/history">
|
||||
<!-- BEGIN posts.flagData.history -->
|
||||
|
||||
@@ -3,27 +3,27 @@
|
||||
<div class="col-md-9">
|
||||
<div class="group-settings-form">
|
||||
<fieldset>
|
||||
<label for="change-group-name">Name</label>
|
||||
<label for="change-group-name">[[admin/manage/groups:edit.name]]</label>
|
||||
<input type="text" class="form-control" id="change-group-name" placeholder="Group Name" value="{group.displayName}" <!-- IF group.system -->readonly<!-- ENDIF group.system -->/><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="change-group-desc">Description</label>
|
||||
<label for="change-group-desc">[[admin/manage/groups:edit.description]]</label>
|
||||
<input type="text" class="form-control" id="change-group-desc" placeholder="A short description about your group" value="{group.description}" maxlength="255" /><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="change-group-user-title">Title of Members</label>
|
||||
<label for="change-group-user-title">[[admin/manage/groups:edit.user-title]]</label>
|
||||
<input type="text" class="form-control" id="change-group-user-title" placeholder="The title of users if they are a member of this group" value="{group.userTitle}" maxlength="40" /><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="change-group-icon">Group Icon</label><br/>
|
||||
<label for="change-group-icon">[[admin/manage/groups:edit.icon]]</label><br/>
|
||||
<i id="group-icon" class="fa fa-2x <!-- IF group.icon -->{group.icon}<!-- ELSE -->fa-shield<!-- ENDIF group.icon -->" value="{group.icon}"></i><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="change-group-label-color">Group Label Color</label>
|
||||
<label for="change-group-label-color">[[admin/manage/groups:edit.label-color]]</label>
|
||||
<span id="group-label-preview" class="label label-default" style="background:<!-- IF group.labelColor -->{group.labelColor}<!-- ELSE -->#000000<!-- ENDIF group.labelColor -->;">{group.userTitle}</span>
|
||||
<input id="change-group-label-color" placeholder="#0059b2" data-name="bgColor" value="{group.labelColor}" class="form-control" /><br />
|
||||
</fieldset>
|
||||
@@ -31,7 +31,7 @@
|
||||
<fieldset>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input id="group-userTitleEnabled" name="userTitleEnabled" type="checkbox"<!-- IF group.userTitleEnabled --> checked<!-- ENDIF group.userTitleEnabled -->> <strong>Show Badge</strong>
|
||||
<input id="group-userTitleEnabled" name="userTitleEnabled" type="checkbox"<!-- IF group.userTitleEnabled --> checked<!-- ENDIF group.userTitleEnabled -->> <strong>[[admin/manage/groups:edit.show-badge]]</strong>
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
@@ -39,13 +39,14 @@
|
||||
<fieldset>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input id="group-private" name="private" type="checkbox"<!-- IF group.private --> checked<!-- ENDIF group.private -->> <strong>[[groups:details.private]]</strong>
|
||||
<input id="group-private" name="private" type="checkbox"<!-- IF group.private --> checked<!-- ENDIF group.private -->>
|
||||
<strong>[[groups:details.private]]</strong>
|
||||
<p class="help-block">
|
||||
If enabled, joining of groups requires approval from a group owner.
|
||||
[[admin/manage/groups:edit.private-details]]
|
||||
</p>
|
||||
<!-- IF !allowPrivateGroups -->
|
||||
<p class="help-block">
|
||||
Warning: Private groups is disabled at system level, which overrides this option.
|
||||
[[admin/manage/groups:edit.private-override]]
|
||||
</p>
|
||||
<!-- ENDIF !allowPrivateGroups -->
|
||||
</label>
|
||||
@@ -55,7 +56,8 @@
|
||||
<fieldset>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input id="group-disableJoinRequests" name="disableJoinRequests" type="checkbox"<!-- IF group.disableJoinRequests --> checked<!-- ENDIF group.disableJoinRequests -->> <strong>Disable join requests</strong>
|
||||
<input id="group-disableJoinRequests" name="disableJoinRequests" type="checkbox"<!-- IF group.disableJoinRequests --> checked<!-- ENDIF group.disableJoinRequests -->>
|
||||
<strong>[[admin/manage/groups:edit.disable-requests]]</strong>
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
@@ -63,17 +65,18 @@
|
||||
<fieldset>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input id="group-hidden" name="hidden" type="checkbox"<!-- IF group.hidden --> checked<!-- ENDIF group.hidden -->> <strong>Hidden</strong>
|
||||
<input id="group-hidden" name="hidden" type="checkbox"<!-- IF group.hidden --> checked<!-- ENDIF group.hidden -->>
|
||||
<strong>[[admin/manage/groups:edit.hidden]]</strong>
|
||||
<p class="help-block">
|
||||
If enabled, this group will not be found in the groups listing, and users will have to be invited manually
|
||||
[[admin/manage/groups:edit.hidden-details]]
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="add-member">Add User to Group</label>
|
||||
<input type="text" class="form-control" id="group-details-search" placeholder="Search Users" />
|
||||
<label for="add-member">[[admin/manage/groups:edit.add-user]]</label>
|
||||
<input type="text" class="form-control" id="group-details-search" placeholder="[[admin/manage/groups:edit.add-user-search]]" />
|
||||
<ul class="members user-list" id="group-details-search-results"></ul>
|
||||
|
||||
</fieldset>
|
||||
@@ -81,7 +84,7 @@
|
||||
<fieldset>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-users"></i> Member List</h3>
|
||||
<h3 class="panel-title"><i class="fa fa-users"></i> [[admin/manage/groups:edit.members]]</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<!-- IMPORT partials/groups/memberlist.tpl -->
|
||||
@@ -95,14 +98,16 @@
|
||||
|
||||
<div class="col-md-3 options acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Groups Control Panel</div>
|
||||
<div class="panel-heading">[[admin/manage/groups:control-panel]]</div>
|
||||
<div class="panel-body">
|
||||
<div class="btn-group btn-group-justified">
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-primary save">Save</button>
|
||||
<button class="btn btn-primary save">[[global:save]]</button>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-default revert">Revert</button>
|
||||
<button class="btn btn-default revert">
|
||||
[[admin/manage/groups:revert]]
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,20 +4,22 @@
|
||||
<div class="panel-body">
|
||||
<table class="table table-striped groups-list">
|
||||
<tr>
|
||||
<th>Group Name</th>
|
||||
<th>Group Description</th>
|
||||
<th>[[admin/manage/groups:name]]</th>
|
||||
<th>[[admin/manage/groups:description]]</th>
|
||||
</tr>
|
||||
<!-- BEGIN groups -->
|
||||
<tr data-groupname="{groups.displayName}">
|
||||
<td>
|
||||
{groups.displayName}
|
||||
<!-- IF groups.system -->
|
||||
<span class="badge">System Group</span>
|
||||
<span class="badge">[[admin/manage/groups:system]]</span>
|
||||
<!-- ENDIF groups.system -->
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group pull-right">
|
||||
<a href="{config.relative_path}/admin/manage/groups/{groups.nameEncoded}" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> Edit</a>
|
||||
<a href="{config.relative_path}/admin/manage/groups/{groups.nameEncoded}" class="btn btn-default btn-xs">
|
||||
<i class="fa fa-edit"></i> [[admin/manage/groups:edit]]
|
||||
</a>
|
||||
<!-- IF !groups.system -->
|
||||
<button class="btn btn-danger btn-xs" data-action="delete"><i class="fa fa-times"></i></button>
|
||||
<!-- ENDIF !groups.system -->
|
||||
@@ -36,7 +38,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div>
|
||||
<input id="group-search" type="text" class="form-control" placeholder="Search" />
|
||||
<input id="group-search" type="text" class="form-control" placeholder="[[admin/manage/groups:search-placeholder]]" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -47,24 +49,28 @@
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Create Group</h4>
|
||||
<h4 class="modal-title">[[admin/manage/groups:create]]</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert alert-danger hide" id="create-modal-error"></div>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="group-name">Group Name</label>
|
||||
<input type="text" class="form-control" id="create-group-name" placeholder="Group Name" />
|
||||
<label for="group-name">[[admin/manage/groups:name]]</label>
|
||||
<input type="text" class="form-control" id="create-group-name" placeholder="[[admin/manage/groups:name]]" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="group-name">Description</label>
|
||||
<input type="text" class="form-control" id="create-group-desc" placeholder="A short description about your group" />
|
||||
<label for="group-name">[[admin/manage/groups:name]]</label>
|
||||
<input type="text" class="form-control" id="create-group-desc" placeholder="[[admin/manage/groups:description-placeholder]]" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-primary" id="create-modal-go">Create</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">
|
||||
[[global:close]]
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary" id="create-modal-go">
|
||||
[[admin/manage/groups:create-button]]
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
<div class="flags">
|
||||
<div class="col-lg-12">
|
||||
<p class="lead">
|
||||
Configure your IP blacklist here.
|
||||
[[admin/manage/ip-blacklist:lead]]
|
||||
</p>
|
||||
<p>
|
||||
Occasionally, a user account ban is not enough of a deterrant. Other times, restricting access to the forum to a specific IP or a range of IPs
|
||||
is the best way to protect a forum. In these scenarios, you can add troublesome IP addresses or entire CIDR blocks to this blacklist, and
|
||||
they will be prevented from logging in to or registering a new account.
|
||||
[[admin/manage/ip-blacklist:description]]
|
||||
</p>
|
||||
|
||||
<div class="row">
|
||||
@@ -15,21 +13,24 @@
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Active Rules</div>
|
||||
<div class="panel-heading">[[admin/manage/ip-blacklist:active-rules]]</div>
|
||||
<div class="panel-body">
|
||||
<button type="button" class="btn btn-warning" data-action="test"><i class="fa fa-bomb"></i> Validate Blacklist</button>
|
||||
<button type="button" class="btn btn-primary" data-action="apply"><i class="fa fa-save"></i> Apply Blacklist</button>
|
||||
<button type="button" class="btn btn-warning" data-action="test">
|
||||
<i class="fa fa-bomb"></i> [[admin/manage/ip-blacklist:validate]]
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary" data-action="apply">
|
||||
<i class="fa fa-save"></i> [[admin/manage/ip-blacklist:apply]]
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Syntax Hints</div>
|
||||
<div class="panel-heading">[[admin/manage/ip-blacklist:hints]]</div>
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
Define a single IP addresses per line. You can add IP blocks as long as they follow the CIDR format (e.g.
|
||||
<code>192.168.100.0/22</code>).
|
||||
[[admin/manage/ip-blacklist:hint-1]]
|
||||
</p>
|
||||
<p>
|
||||
You can add in comments by starting lines with the <code>#</code> symbol.
|
||||
[[admin/manage/ip-blacklist:hint-2]]
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,21 +1,19 @@
|
||||
<div class="registration panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
Queue
|
||||
[[admin/manage/registration:queue]]
|
||||
</div>
|
||||
<!-- IF !users.length -->
|
||||
<p class="panel-body">
|
||||
There are no users in the registration queue. <br>
|
||||
To enable this feature, go to <a href="{config.relative_path}/admin/settings/user">Settings → User → User Registration</a> and set
|
||||
<strong>Registration Type</strong> to "Admin Approval".
|
||||
[[admin/manage/registration:description, {config.relative_path}/admin/settings/user]]
|
||||
</p>
|
||||
<!-- ENDIF !users.length -->
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped users-list">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Email</th>
|
||||
<th class="hidden-xs">IP</th>
|
||||
<th class="hidden-xs">Time</th>
|
||||
<th>[[admin/manage/registration:list.name]]</th>
|
||||
<th>[[admin/manage/registration:list.email]]</th>
|
||||
<th class="hidden-xs">[[admin/manage/registration:list.ip]]</th>
|
||||
<th class="hidden-xs">[[admin/manage/registration:list.time]]</th>
|
||||
<!-- BEGIN customHeaders -->
|
||||
<th class="hidden-xs">{customHeaders.label}</th>
|
||||
<!-- END customHeaders -->
|
||||
@@ -25,7 +23,7 @@
|
||||
<tr data-username="{users.username}">
|
||||
<td>
|
||||
<!-- IF users.usernameSpam -->
|
||||
<i class="fa fa-times-circle text-danger" title="Frequency: {users.spamData.username.frequency} Appears: {users.spamData.username.appears} Confidence: {users.spamData.username.confidence}"></i>
|
||||
<i class="fa fa-times-circle text-danger" title="[[admin/manage/registration:list.username-spam, {users.spamData.username.frequency}, {users.spamData.username.appears}, {users.spamData.username.confidence}]]"></i>
|
||||
<!-- ELSE -->
|
||||
<i class="fa fa-check text-success"></i>
|
||||
<!-- ENDIF users.usernameSpam -->
|
||||
@@ -33,7 +31,7 @@
|
||||
</td>
|
||||
<td>
|
||||
<!-- IF users.emailSpam -->
|
||||
<i class="fa fa-times-circle text-danger" title="Frequency: {users.spamData.email.frequency} Appears: {users.spamData.email.appears}"></i>
|
||||
<i class="fa fa-times-circle text-danger" title="[[admin/manage/registration:list.email-spam, {users.spamData.email.frequency}, {users.spamData.email.appears}]]"></i>
|
||||
<!-- ELSE -->
|
||||
<i class="fa fa-check text-success"></i>
|
||||
<!-- ENDIF users.emailSpam -->
|
||||
@@ -41,7 +39,7 @@
|
||||
</td>
|
||||
<td class="hidden-xs">
|
||||
<!-- IF users.ipSpam -->
|
||||
<i class="fa fa-times-circle text-danger" title="Frequency: {users.spamData.ip.frequency} Appears: {users.spamData.ip.appears}"></i>
|
||||
<i class="fa fa-times-circle text-danger" title="[[admin/manage/registration:list.ip-spam, {users.spamData.ip.frequency}, {users.spamData.ip.appears}]]"></i>
|
||||
<!-- ELSE -->
|
||||
<i class="fa fa-check text-success"></i>
|
||||
<!-- ENDIF users.ipSpam -->
|
||||
@@ -80,19 +78,17 @@
|
||||
|
||||
<div class="invitations panel panel-success">
|
||||
<div class="panel-heading">
|
||||
Invitations
|
||||
[[admin/manage/registration:invitations]]
|
||||
</div>
|
||||
<p class="panel-body">
|
||||
Below is a complete list of invitations sent. Use ctrl-f to search through the list by email or username.
|
||||
<br><br>
|
||||
The username will be displayed to the right of the emails for users who have redeemed their invitations.
|
||||
[[admin/manage/registration:invitations.description]]
|
||||
</p>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped invites-list">
|
||||
<tr>
|
||||
<th>Inviter Username</th>
|
||||
<th>Invitee Email</th>
|
||||
<th>Invitee Username (if registered)</th>
|
||||
<th>[[admin/manage/registration:invitations.inviter-username]]</th>
|
||||
<th>[[admin/manage/registration:invitations.invitee-email]]</th>
|
||||
<th>[[admin/manage/registration:invitations.invitee-username]]</th>
|
||||
</tr>
|
||||
<!-- BEGIN invites -->
|
||||
<!-- BEGIN invites.invitations -->
|
||||
|
||||
@@ -4,22 +4,28 @@
|
||||
<div class="panel panel-default tag-management">
|
||||
<div class="panel-body">
|
||||
<!-- IF !tags.length -->
|
||||
Your forum does not have any topics with tags yet.
|
||||
[[admin/manage/tags:none]]
|
||||
<!-- ENDIF !tags.length -->
|
||||
|
||||
<div class="tag-list">
|
||||
<!-- BEGIN tags -->
|
||||
<div class="tag-row" data-tag="{tags.value}">
|
||||
<div data-value="{tags.value}">
|
||||
<span class="tag-item" data-tag="{tags.value}" style="<!-- IF tags.color -->color: {tags.color};<!-- ENDIF tags.color --><!-- IF tags.bgColor -->background-color: {tags.bgColor};<!-- ENDIF tags.bgColor -->">{tags.value}</span><span class="tag-topic-count"><a href="{config.relative_path}/tags/{tags.value}" target="_blank">{tags.score}</a></span>
|
||||
<span class="tag-item" data-tag="{tags.value}" style="
|
||||
<!-- IF tags.color -->color: {tags.color};<!-- ENDIF tags.color -->
|
||||
<!-- IF tags.bgColor -->background-color: {tags.bgColor};<!-- ENDIF tags.bgColor -->
|
||||
">{tags.value}</span>
|
||||
<span class="tag-topic-count">
|
||||
<a href="{config.relative_path}/tags/{tags.value}" target="_blank">{tags.score}</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="tag-modal hidden">
|
||||
<div class="form-group">
|
||||
<label for="bgColor">Background Colour</label>
|
||||
<label for="bgColor">[[admin/manage/tags:bg-color]]</label>
|
||||
<input id="bgColor" placeholder="#ffffff" data-name="bgColor" value="{tags.bgColor}" class="form-control category_bgColor" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="color">Text Colour</label>
|
||||
<label for="color">[[admin/manage/tags:text-color]]</label>
|
||||
<input id="color" placeholder="#a2a2a2" data-name="color" value="{tags.color}" class="form-control category_color" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -32,19 +38,19 @@
|
||||
|
||||
<div class="col-lg-3 acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Create & Modify Tags</div>
|
||||
<div class="panel-heading">[[admin/manage/tags:create-modify]]</div>
|
||||
<div class="panel-body">
|
||||
<p>Select tags via clicking and/or dragging, use shift to select multiple.</p>
|
||||
<button class="btn btn-primary btn-block" id="create">Create Tag</button>
|
||||
<button class="btn btn-primary btn-block" id="modify">Modify Tags</button>
|
||||
<button class="btn btn-warning btn-block" id="deleteSelected">Delete Tags</button>
|
||||
<p>[[admin/manage/tags:description]]</p>
|
||||
<button class="btn btn-primary btn-block" id="create">[[admin/manage/tags:create]]</button>
|
||||
<button class="btn btn-primary btn-block" id="modify">[[admin/manage/tags:modify]]</button>
|
||||
<button class="btn btn-warning btn-block" id="deleteSelected">[[admin/manage/tags:delete]]</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<input class="form-control" type="text" id="tag-search" placeholder="Search for tags..."/><br/>
|
||||
Click <a href="{config.relative_path}/admin/settings/tags">here</a> to visit the tag settings page.
|
||||
<input class="form-control" type="text" id="tag-search" placeholder="[[admin/manage/tags:search]]"/><br/>
|
||||
[[admin/manage/tags:settings, {config.relative_path}/admin/settings/tags]]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -54,18 +60,18 @@
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Create Tag</h4>
|
||||
<h4 class="modal-title">[[admin/manage/tags:create]]</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="create-tag-name">Tag Name</label>
|
||||
<input type="text" class="form-control" id="create-tag-name" placeholder="Tag Name" />
|
||||
<label for="create-tag-name">[[admin/manage/tags:name]]</label>
|
||||
<input type="text" class="form-control" id="create-tag-name" placeholder="[[admin/manage/tags:name]]" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" id="create-modal-go">Create</button>
|
||||
<button type="button" class="btn btn-primary" id="create-modal-go">[[admin/manage/tags:create]]</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,89 +1,89 @@
|
||||
<div class="row manage-users">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-user"></i> Users</div>
|
||||
<div class="panel-heading"><i class="fa fa-user"></i> [[admin/manage/users:users]]</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="btn-group pull-right">
|
||||
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">Edit <span class="caret"></span></button>
|
||||
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">[[admin/manage/users:edit]] <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#" class="admin-user"><i class="fa fa-fw fa-shield"></i> Make Admin</a></li>
|
||||
<li><a href="#" class="remove-admin-user"><i class="fa fa-fw fa-ban"></i> Remove Admin</a></li>
|
||||
<li><a href="#" class="admin-user"><i class="fa fa-fw fa-shield"></i> [[admin/manage/users:make-admin]]</a></li>
|
||||
<li><a href="#" class="remove-admin-user"><i class="fa fa-fw fa-ban"></i> [[admin/manage/users:remove-admin]]</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#" class="validate-email"><i class="fa fa-fw fa-check"></i> Validate Email</a></li>
|
||||
<li><a href="#" class="send-validation-email"><i class="fa fa-fw fa-mail-forward"></i> Send Validation Email</a></li>
|
||||
<li><a href="#" class="password-reset-email"><i class="fa fa-fw fa-key"></i> Send Password Reset Email</a></li>
|
||||
<li><a href="#" class="validate-email"><i class="fa fa-fw fa-check"></i> [[admin/manage/users:validate-email]]</a></li>
|
||||
<li><a href="#" class="send-validation-email"><i class="fa fa-fw fa-mail-forward"></i> [[admin/manage/users:send-validation-email]]</a></li>
|
||||
<li><a href="#" class="password-reset-email"><i class="fa fa-fw fa-key"></i> [[admin/manage/users:password-reset-email]]</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#" class="ban-user"><i class="fa fa-fw fa-gavel"></i> Ban User(s)</a></li>
|
||||
<li><a href="#" class="ban-user-temporary"><i class="fa fa-fw fa-clock-o"></i> Ban User(s) Temporarily</a></li>
|
||||
<li><a href="#" class="unban-user"><i class="fa fa-fw fa-comment-o"></i> Unban User(s)</a></li>
|
||||
<li><a href="#" class="reset-lockout"><i class="fa fa-fw fa-unlock"></i> Reset Lockout</a></li>
|
||||
<li><a href="#" class="reset-flags"><i class="fa fa-fw fa-flag"></i> Reset Flags</a></li>
|
||||
<li><a href="#" class="ban-user"><i class="fa fa-fw fa-gavel"></i> [[admin/manage/users:ban]]</a></li>
|
||||
<li><a href="#" class="ban-user-temporary"><i class="fa fa-fw fa-clock-o"></i>[[admin/manage/users:temp-ban]]</a></li>
|
||||
<li><a href="#" class="unban-user"><i class="fa fa-fw fa-comment-o"></i> [[admin/manage/users:unban]]</a></li>
|
||||
<li><a href="#" class="reset-lockout"><i class="fa fa-fw fa-unlock"></i> [[admin/manage/users:reset-lockout]]</a></li>
|
||||
<li><a href="#" class="reset-flags"><i class="fa fa-fw fa-flag"></i> [[admin/manage/users:reset-flags]]</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#" class="delete-user"><i class="fa fa-fw fa-trash-o"></i> Delete User(s)</a></li>
|
||||
<li><a href="#" class="delete-user-and-content"><i class="fa fa-fw fa-trash-o"></i> Delete User(s) and Content</a></li>
|
||||
<li><a href="#" class="delete-user"><i class="fa fa-fw fa-trash-o"></i> [[admin/manage/users:delete]]</a></li>
|
||||
<li><a href="#" class="delete-user-and-content"><i class="fa fa-fw fa-trash-o"></i> [[admin/manage/users:purge]]</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<a target="_blank" href="{config.relative_path}/api/admin/users/csv" class="btn btn-primary pull-right">Download CSV</a>
|
||||
<a target="_blank" href="{config.relative_path}/api/admin/users/csv" class="btn btn-primary pull-right">[[admin/manage/users:download-csv]]</a>
|
||||
|
||||
<!-- IF inviteOnly -->
|
||||
<!-- IF loggedIn -->
|
||||
<button component="user/invite" class="btn btn-success form-control"><i class="fa fa-users"></i> Invite</button>
|
||||
<button component="user/invite" class="btn btn-success form-control"><i class="fa fa-users"></i> [[admin/manage/users:invite]]</button>
|
||||
<!-- ENDIF loggedIn -->
|
||||
<!-- ENDIF inviteOnly -->
|
||||
|
||||
<button id="createUser" class="btn btn-primary pull-right">New User</button>
|
||||
<button id="createUser" class="btn btn-primary pull-right">[[admin/manage/users:new]]</button>
|
||||
</div>
|
||||
|
||||
<ul class="nav nav-pills">
|
||||
<li><a href='{config.relative_path}/admin/manage/users/latest'>Latest Users</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/not-validated'>Not validated</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/no-posts'>No Posts</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/top-posters'>Top Posters</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/most-reputation'>Most Reputation</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/inactive'>Inactive</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/flagged'>Most Flags</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/banned'>Banned</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/search'>User Search</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/latest'>[[admin/manage/users:pills.latest]]</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/not-validated'>[[admin/manage/users:pills.unvalidated]]</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/no-posts'>[[admin/manage/users:pills.no-posts]]</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/top-posters'>[[admin/manage/users:pills.top-posters]]</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/most-reputation'>[[admin/manage/users:pills.top-rep]]</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/inactive'>[[admin/manage/users:pills.inactive]]</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/flagged'>[[admin/manage/users:pills.flagged]]</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/banned'>[[admin/manage/users:pills.banned]]</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/search'>[[admin/manage/users:pills.search]]</a></li>
|
||||
</ul>
|
||||
|
||||
<br />
|
||||
|
||||
<div class="search {search_display}">
|
||||
<label>By User Name</label>
|
||||
<input class="form-control" id="search-user-name" data-search-type="username" type="text" placeholder="Enter a username to search"/><br />
|
||||
<label>[[admin/manage/users:search.username]]</label>
|
||||
<input class="form-control" id="search-user-name" data-search-type="username" type="text" placeholder="[[admin/manage/users:search.username-placeholder]]"/><br />
|
||||
|
||||
<label>By Email </label>
|
||||
<input class="form-control" id="search-user-email" data-search-type="email" type="text" placeholder="Enter a email to search"/><br />
|
||||
<label>[[admin/manage/users:search.email]]</label>
|
||||
<input class="form-control" id="search-user-email" data-search-type="email" type="text" placeholder="[[admin/manage/users:search.email-placeholder]]"/><br />
|
||||
|
||||
<label>By IP Address </label>
|
||||
<input class="form-control" id="search-user-ip" data-search-type="ip" type="text" placeholder="Enter an IP Address to search"/><br />
|
||||
<label>[[admin/manage/users:search.ip]]</label>
|
||||
<input class="form-control" id="search-user-ip" data-search-type="ip" type="text" placeholder="[[admin/manage/users:search.ip-placeholder]]"/><br />
|
||||
|
||||
<i class="fa fa-spinner fa-spin hidden"></i>
|
||||
<span id="user-notfound-notify" class="label label-danger hide">User not found!</span><br/>
|
||||
<span id="user-notfound-notify" class="label label-danger hide">[[admin/manage/users:search.not-found]]</span><br/>
|
||||
</div>
|
||||
|
||||
<!-- IF inactive -->
|
||||
<a href="{config.relative_path}/admin/manage/users/inactive?months=3" class="btn btn-default">3 months</a>
|
||||
<a href="{config.relative_path}/admin/manage/users/inactive?months=6" class="btn btn-default">6 months</a>
|
||||
<a href="{config.relative_path}/admin/manage/users/inactive?months=12" class="btn btn-default">12 months</a>
|
||||
<a href="{config.relative_path}/admin/manage/users/inactive?months=3" class="btn btn-default">[[admin/manage/users:inactive.3-months]]</a>
|
||||
<a href="{config.relative_path}/admin/manage/users/inactive?months=6" class="btn btn-default">[[admin/manage/users:inactive.6-months]]</a>
|
||||
<a href="{config.relative_path}/admin/manage/users/inactive?months=12" class="btn btn-default">[[admin/manage/users:inactive.12-months]]</a>
|
||||
<!-- ENDIF inactive -->
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped users-table">
|
||||
<tr>
|
||||
<th><input component="user/select/all" type="checkbox"/></th>
|
||||
<th>uid</th>
|
||||
<th>username</th>
|
||||
<th>email</th>
|
||||
<th class="text-right">postcount</th>
|
||||
<th class="text-right">reputation</th>
|
||||
<th class="text-right">flags</th>
|
||||
<th>joined</th>
|
||||
<th>last online</th>
|
||||
<th>banned</th>
|
||||
<th>[[admin/manage/users:users.uid]]</th>
|
||||
<th>[[admin/manage/users:users.username]]</th>
|
||||
<th>[[admin/manage/users:users.email]]</th>
|
||||
<th class="text-right">[[admin/manage/users:users.postcount]]</th>
|
||||
<th class="text-right">[[admin/manage/users:users.reputation]]</th>
|
||||
<th class="text-right">[[admin/manage/users:users.flags]]</th>
|
||||
<th>[[admin/manage/users:users.joined]]</th>
|
||||
<th>[[admin/manage/users:users.last-online]]</th>
|
||||
<th>[[admin/manage/users:users.banned]]</th>
|
||||
</tr>
|
||||
<!-- BEGIN users -->
|
||||
<tr class="user-row">
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<p class="lead">
|
||||
<strong>{valid.length}</strong> out of <strong>{numRules}</strong> rule(s) valid.
|
||||
[[admin/manage/ip-blacklist:validate.x-valid, {valid.length}, {numRules}]]
|
||||
</p>
|
||||
|
||||
<!-- IF invalid.length -->
|
||||
<p>
|
||||
The following <strong>{invalid.length}</strong> rules are invalid:
|
||||
[[admin/manage/ip-blacklist:validate.x-invalid, {invalid.length}]]
|
||||
</p>
|
||||
<ul>
|
||||
<!-- BEGIN invalid -->
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
<div class="alert alert-danger hide" id="create-modal-error"></div>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="group-name">User Name</label>
|
||||
<input type="text" class="form-control" id="create-user-name" placeholder="User Name" />
|
||||
<label for="group-name">[[admin/manage/users:create.username]]</label>
|
||||
<input type="text" class="form-control" id="create-user-name" placeholder="[[admin/manage/users:create.username]]" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="group-name">Email</label>
|
||||
<input type="text" class="form-control" id="create-user-email" placeholder="Email of this user" />
|
||||
<label for="group-name">[[admin/manage/users:create.email]]</label>
|
||||
<input type="text" class="form-control" id="create-user-email" placeholder="[[admin/manage/users:create.email-placeholder]]" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="group-name">Password</label>
|
||||
<input type="password" class="form-control" id="create-user-password" placeholder="Password" />
|
||||
<label for="group-name">[[admin/manage/users:create.password]]</label>
|
||||
<input type="password" class="form-control" id="create-user-password" placeholder="[[admin/manage/users:create.password]]" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="group-name">Password Confirm</label>
|
||||
<input type="password" class="form-control" id="create-user-password-again" placeholder="Password" />
|
||||
<label for="group-name">[[admin/manage/users:create.password-confirm]]</label>
|
||||
<input type="password" class="form-control" id="create-user-password-again" placeholder="[[admin/manage/users:create.password]]" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<li id="{download.id}" data-plugin-id="{download.id}" class="clearfix">
|
||||
<div class="pull-right">
|
||||
<button data-action="toggleActive" class="btn btn-success hidden"><i class="fa fa-power-off"></i> Activate</button>
|
||||
<button data-action="toggleInstall" data-installed="0" class="btn btn-success"><i class="fa fa-download"></i> Install</button>
|
||||
<button data-action="toggleActive" class="btn btn-success hidden"><i class="fa fa-power-off"></i> [[admin/extend/plugins:plugin-item.activate]]</button>
|
||||
<button data-action="toggleInstall" data-installed="0" class="btn btn-success"><i class="fa fa-download"></i> [[admin/extend/plugins:plugin-item.install]]</button>
|
||||
</div>
|
||||
|
||||
<h2><strong>{download.name}</strong></h2>
|
||||
@@ -10,9 +10,9 @@
|
||||
<p>{download.description}</p>
|
||||
<!-- ENDIF download.description -->
|
||||
|
||||
<small>Latest <strong class="latestVersion">{download.latest}</strong></small>
|
||||
<small>[[admin/extend/plugins:plugin-item.latest]] <strong class="latestVersion">{download.latest}</strong></small>
|
||||
|
||||
<!-- IF download.url -->
|
||||
<p>For more information: <a target="_blank" href="{download.url}">{download.url}</a></p>
|
||||
<p>[[admin/extend/plugins:plugin-item.more-info]] <a target="_blank" href="{download.url}">{download.url}</a></p>
|
||||
<!-- ENDIF download.url -->
|
||||
</li>
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
<div class="form-group">
|
||||
<label for="length">Ban Length</label>
|
||||
<label for="length">[[admin/manage/users:temp-ban.length]]</label>
|
||||
<input class="form-control" id="length" name="length" type="number" min="0" value="1" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-8">
|
||||
<div class="form-group">
|
||||
<label for="reason">Reason <span class="text-muted">(Optional)</span></label>
|
||||
<label for="reason">[[admin/manage/users:temp-ban.reason]]</label>
|
||||
<input type="text" class="form-control" id="reason" name="reason" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -16,16 +16,16 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-4 text-center">
|
||||
<div class="form-group units">
|
||||
<label>Hours</label>
|
||||
<label>[[admin/manage/users:temp-ban.hours]]</label>
|
||||
<input type="radio" name="unit" value="0" checked />
|
||||
|
||||
<label>Days</label>
|
||||
<label>[[admin/manage/users:temp-ban.days]]</label>
|
||||
<input type="radio" name="unit" value="1" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-8">
|
||||
<p class="help-block">
|
||||
Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban.
|
||||
[[admin/manage/users:temp-ban.explanation]]
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user