v1.18.x
Peter Jaszkowiak 8 years ago committed by Julian Lam
parent 038c45f4b6
commit daf3ab4db4

@ -2,5 +2,6 @@
"alert.confirm-reload": "Are you sure you wish to reload NodeBB?",
"alert.confirm-restart": "Are you sure you wish to restart NodeBB?",
"acp-title": "%1 | NodeBB Admin Control Panel"
"acp-title": "%1 | NodeBB Admin Control Panel",
"settings-header-contents": "Contents"
}

@ -0,0 +1,19 @@
{
"maintenance-mode": "Maintenance Mode",
"maintenance-mode.help": "When the forum is in maintenance mode, all requests will be redirected to a static holding page. Administrators are exempt from this redirection, and are able to access the site normally.",
"maintenance-mode.message": "Maintenance Message",
"headers": "Headers",
"headers.allow-from": "Set ALLOW-FROM to Place NodeBB in an iFrame",
"headers.powered-by": "Customise the \"Powered By\" header sent by NodeBB",
"headers.acao": "Access-Control-Allow-Origin",
"headers.acao-help": "To deny access to all sites, leave empty or set to <code>null</code>",
"headers.acam": "Access-Control-Allow-Methods",
"headers.acah": "Access-Control-Allow-Headers",
"traffic-management": "Traffic Management",
"traffic.help": "NodeBB deploys equipped with a module that automatically denies requests in high-traffic situations. You can tune these settings here, although the defaults are a good starting point.",
"traffic.enable": "Enable Traffic Management",
"traffic.event-lag": "Event Loop Lag Threshold (in milliseconds)",
"traffic.event-lag-help": "Lowering this value decreases wait times for page loads, but will also show the \"excessive load\" message to more users. (Restart required)",
"traffic.lag-check-interval": "Check Interval (in milliseconds)",
"traffic.lag-check-interval-help": "Lowering this value causes NodeBB to become more sensitive to spikes in load, but may also cause the check to become too sensitive. (Restart required)"
}

@ -0,0 +1,9 @@
{
"chat-settings": "Chat Settings",
"disable": "Disable chat",
"disable-editing": "Disable chat message editing/deletion",
"disable-editing-help": "Administrators and global moderators are exempt from this restriction",
"max-length": "Maximum length of chat messages",
"max-room-size": "Maximum number of users in chat rooms",
"delay": "Time between chat messages in milliseconds"
}

@ -0,0 +1,11 @@
{
"eu-consent": "EU Consent",
"consent.enabled": "Enabled",
"consent.message": "Notification message",
"consent.acceptance": "Acceptance message",
"consent.link-text": "Policy Link Text",
"consent.blank-localised-default": "Leave blank to use NodeBB localised defaults",
"settings": "Settings",
"cookie-domain": "Session cookie domain",
"blank-default": "Leave blank for default"
}

@ -0,0 +1,25 @@
{
"email-settings": "Email Settings",
"address": "Email Address",
"address-help": "The following email address refers to the email that the recipient will see in the \"From\" and \"Reply To\" fields.",
"from": "From Name",
"from-help": "The from name to display in the email.",
"gmail-routing": "Gmail Routing",
"gmail-routing-help1": "There have been reports of Gmail Routing not working on accounts with heightened security. In those scenarios, you will have to <a href=\"https://www.google.com/settings/security/lesssecureapps\">configure your GMail account to allow less secure apps</a>.",
"gmail-routing-help2": "For more information about this workaround, <a href=\"https://nodemailer.com/using-gmail/\">please consult this NodeMailer article on the issue.</a> An alternative would be to utilise a third-party emailer plugin such as SendGrid, Mailgun, etc. <a href=\"{config.relative_path}/admin/extend/plugins\">Browse available plugins here</a>.",
"gmail-transport": "Route emails through a Gmail/Google Apps account",
"gmail-transport.username": "Username",
"gmail-transport.username-help": "Enter the full email address here, especially if you are using a Google Apps managed domain.",
"gmail-transport.password": "Password",
"template": "Edit Email Template",
"template.select": "Select Email Template",
"template.revert": "Revert to Original",
"testing": "Email Testing",
"testing.select": "Select Email Template",
"testing.send": "Send Test Email",
"testing.send-help": "The test email will be sent to the currently logged in user's email address.",
"subscriptions": "Email Subscriptions",
"subscriptions.disable": "Disable subscriber notification emails",
"subscriptions.hour": "Digest Hour",
"subscriptions.hour-help": "Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm). Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br /> The approximate server time is: <span id=\"serverTime\"></span><br /> The next daily digest is scheduled to be sent <span id=\"nextDigestTime\"></span>"
}

@ -0,0 +1,30 @@
{
"site-settings": "Site Settings",
"title": "Site Title",
"title.name": "Your Community Name",
"title.show-in-header": "Show Site Title in Header",
"browser-title": "Browser Title",
"browser-title-help": "If no browser title is specified, the site title will be used",
"title-layout": "Title Layout",
"title-layout-help": "Define how the browser title will be structured ie. &#123;pageTitle&#125; | &#123;browserTitle&#125;",
"description.placeholder": "A short description about your community",
"description": "Site Description",
"keywords": "Site Keywords",
"keywords-placeholder": "Keywords describing your community, comma-separated",
"logo": "Site Logo",
"logo.image": "Image",
"logo.image-placeholder": "Path to a logo to display on forum header",
"logo.upload": "Upload",
"logo.url": "URL",
"logo.url-placeholder": "The URL of the site logo",
"logo.url-help": "When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.",
"logo.alt-text": "Alt Text",
"log.alt-text-placeholder": "Alternative text for accessibility",
"favicon": "Favicon",
"favicon.upload": "Upload",
"touch-icon": "Homescreen/Touch Icon",
"touch-icon.upload": "Upload",
"touch-icon.help": "Recommended size and format: 192x192, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.",
"outgoing-links": "Outgoing Links",
"outgoing-links.warning-page": "Use Outgoing Links Warning Page"
}

@ -0,0 +1,12 @@
{
"general": "General",
"private-groups": "Private Groups",
"private-groups.help": "If enabled, joining of groups requires the approval of the group owner <em>(Default: enabled)</em>",
"private-groups.warning": "<strong>Beware!</strong> If this option is disabled and you have private groups, they automatically become public.",
"allow-creation": "Allow Group Creation",
"allow-creation-help": "If enabled, users can create groups <em>(Default: disabled)</em>",
"max-name-length": "Maximum Group Name Length",
"cover-image": "Group Cover Image",
"default-cover": "Default Cover Images",
"default-cover-help": "Add comma-separated default cover images for groups that don't have an uploaded cover image"
}

@ -0,0 +1,8 @@
{
"handles": "Guest Handles",
"handles.enabled": "Allow guest handles",
"handles.enabled-help": "This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled, they will simply be called \"Guest\"",
"privileges": "Guest Privileges",
"privileges.can-search": "Allow guests to search without logging in",
"privileges.can-search-users": "Allow guests to search users without logging in"
}

@ -0,0 +1,5 @@
{
"notifications": "Notifications",
"welcome-notification": "Welcome Notification",
"welcome-notification-link": "Welcome Notification Link"
}

@ -0,0 +1,9 @@
{
"pagination": "Pagination Settings",
"enable": "Paginate topics and posts instead of using infinite scroll.",
"topics": "Topic Pagination",
"posts-per-page": "Posts per Page",
"categories": "Category Pagination",
"topics-per-page": "Topics per Page",
"initial-num-load": "Initial Number of Topics to Load on Unread, Recent, and Popular"
}

@ -0,0 +1,44 @@
{
"sorting": "Post Sorting",
"sorting.post-default": "Default Post Sorting",
"sorting.oldest-to-newest": "Oldest to Newest",
"sorting.newest-to-oldest": ">Newest to Oldest",
"sorting.most-votes": "Most Votes",
"sorting.topic-default": "Default Topic Sorting",
"restrictions": "Posting Restrictions",
"restrictions.seconds-between": "Seconds between Posts",
"restrictions.seconds-between-new": "Seconds between Posts for New Users",
"restrictions.rep-threshold": "Reputation threshold before this restriction is lifted",
"restrictions.seconds-defore-new": "Seconds before new user can post",
"restrictions.seconds-edit-after": "Number of seconds users are allowed to edit posts after posting. (0 disabled)",
"restrictions.seconds-delete-after": "Number of seconds users are allowed to delete posts after posting. (0 disabled)",
"restrictions.replies-no-delete": "Number of replies after users are disallowed to delete their own topics. (0 disabled)",
"restrictions.min-title-length": "Minimum Title Length",
"restrictions.max-title-length": "Maximum Title Length",
"restrictions.min-post-length": "Minimum Post Length",
"restrictions.max-post-length": "Maximum Post Length",
"restrictions.days-until-stale": "Days until Topic is considered stale",
"restrictions.stale-help": "If a topic is considered \"stale\", then a warning will be shown to users who attempt to reply to that topic.",
"timestamp": "Timestamp",
"timestamp.cut-off": "Date cut-off (in days)",
"timestamp.cut-off-help": "Dates &amp; times will be shown in a relative manner (e.g. \"3 hours ago\" / \"5 days ago\"), and localised into various\n\t\t\t\t\tlanguages. After a certain point, this text can be switched to display the localised date itself\n\t\t\t\t\t(e.g. 5 Nov 2016 15:30).<br /><em>(Default: <code>30</code>, or one month). Set to 0 to always display dates, leave blank to always display relative times.</em>",
"teaser": "Teaser Post",
"teaser.last-post": "Last &ndash; Show the latest post, including the original post, if no replies",
"teaser.last-reply": "Last &ndash; Show the latest reply, or a \"No replies\" placeholder if no replies",
"teaser.first": "First",
"unread": "Unread Settings",
"unread.cutoff": "Unread cutoff days",
"unread.min-track-last": "Minimum posts in topic before tracking last read",
"signature": "Signature Settings",
"signature.disable": "Disable signatures",
"signature.no-links": "Disable links in signatures",
"signature.no-images": "Disable images in signatures",
"signature.max-length": "Maximum Signature Length",
"composer": "Composer Settings",
"composer-help": "The following settings govern the functionality and/or appearance of the post composer shown\n\t\t\t\tto users when they create new topics, or reply to existing topics.",
"composer.show-help": "Show \"Help\" tab",
"composer.enable-plugin-help": "Allow plugins to add content to the help tab",
"composer.custom-help": "Custom Help Text",
"ip-tracking": "IP Tracking",
"ip-tracking.each-post": "Track IP Address for each post"
}

@ -0,0 +1,8 @@
{
"reputation": "Reputation Settings",
"disable": "Disable Reputation System",
"disable-down-voting": "Disable Down Voting",
"thresholds": "Activity Thresholds",
"min-rep-downvote": "Minimum reputation to downvote posts",
"min-rep-flag": "Minimum reputation to flag posts"
}

@ -0,0 +1,6 @@
{
"reconnection": "Reconnection Settings",
"max-attempts": "Max Reconnection Attempts",
"default-placeholder": "Default: %1",
"delay": "Reconnection Delay"
}

@ -0,0 +1,12 @@
{
"tag": "Tag Settings",
"min-per-topic": "Minimum Tags per Topic",
"max-per-topic": "Maximum Tags per Topic",
"min-length": "Minimum Tag Length",
"max-length": "Maximum Tag Length",
"goto-manage": "Click here to visit the tag management page.",
"privacy": "Privacy",
"list-private": "Make the tags list private",
"related-topics": "Related Topics",
"max-related-topics": "Maximum related topics to display (if supported by theme)"
}

@ -0,0 +1,28 @@
{
"posts": "Posts",
"allow-files": "Allow users to upload regular files",
"private": "Make uploaded files private",
"max-image-width": "Resize images down to specified width (in pixels)",
"max-image-width-help": "(in pixels, default: 760 pixels, set to 0 to disable)",
"max-file-size": "Maximum File Size (in KiB)",
"max-file-size-help": "(in kilobytes, default: 2048 KiB)",
"allow-topic-thumbnails": "Allow users to upload topic thumbnails",
"topic-thumb-size": "Topic Thumb Size",
"allowed-file-extensions": "Allowed File Extensions",
"allowed-file-extensions-help": "Enter comma-separated list of file extensions here (e.g. <code>pdf,xls,doc</code>).\n\t\t\t\t\tAn empty list means all extensions are allowed.",
"profile-avatars": "Profile Avatars",
"allow-profile-image-uploads": "Allow users to upload profile images",
"convert-profile-image-png": "Convert profile image uploads to PNG",
"default-avatar": "Custom Default Avatar",
"upload": "Upload",
"profile-image-dimension": "Profile Image Dimension",
"profile-image-dimension-help": "(in pixels, default: 128 pixels)",
"max-profile-image-size": "Maximum Profile Image File Size",
"max-profile-image-size-help": "(in kilobytes, default: 256 KiB)",
"max-cover-image-size": "Maximum Cover Image File Size",
"max-cover-image-size-help": "(in kilobytes, default: 2,048 KiB)",
"keep-all-user-images": "Keep old versions of avatars and profile covers on the server",
"profile-covers": "Profile Covers",
"default-covers": "Default Cover Images",
"default-covers-help": "Add comma-separated default cover images for accounts that don't have an uploaded cover image"
}

@ -0,0 +1,59 @@
{
"authentication": "Authentication",
"allow-local-login": "Allow local login",
"require-email-confirmation": "Require Email Confirmation",
"email-confirm-interval": "User may not resend a confirmation email until",
"email-confirm-email2": "minutes have elapsed",
"allow-login-with": "Allow login with",
"allow-login-with.username-email": "Username or Email",
"allow-login-with.username": "Username Only",
"allow-login-with.email": "Email Only",
"account-settings": "Account Settings",
"disable-username-changes": "Disable username changes",
"disable-email-changes": "Disable email changes",
"disable-password-changes": "Disable password changes",
"allow-account-deletion": "Allow account deletion",
"user-info-private": "Make user info private",
"themes": "Themes",
"disable-user-skins": "Prevent users from choosing a custom skin",
"account-protection": "Account Protection",
"login-attempts": "Login attempts per hour",
"login-attempts-help": "If login attempts to a user&apos;s account exceeds this threshold, that account will be locked for a pre-configured amount of time",
"lockout-duration": "Account Lockout Duration (minutes)",
"login-days": "Days to remember user login sessions",
"password-expiry-days": "Force password reset after a set number of days",
"registration": "User Registration",
"registration-type": "Registration Type",
"registration-type.normal": "Normal",
"registration-type.admin-approval": "Admin Approval",
"registration-type.admin-approval-ip": "Admin Approval for IPs",
"registration-type.invite-only": "Invite Only",
"registration-type.admin-invite-only": "Admin Invite Only",
"registration-type.disabled": "No registration",
"registration-type.help": "Normal - Users can register from the /register page.<br/>\nAdmin Approval - User registrations are placed in an <a href=\"%1/admin/manage/registration\">approval queue</a> for administrators.<br/>\nAdmin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.<br/>\nInvite Only - Users can invite others from the <a href=\"%1/users\" target=\"_blank\">users</a> page.<br/>\nAdmin Invite Only - Only administrators can invite others from <a href=\"%1/users\" target=\"_blank\">users</a> and <a href=\"%1/admin/manage/users\">admin/manage/users</a> pages.<br/>\nNo registration - No user registration.<br/>",
"registration.max-invites": "Maximum Invitations per User",
"max-invites": "Maximum Invitations per User",
"max-invites-help": "0 for no restriction. Admins get infinite invitations<br>Only applicable for \"Invite Only\"",
"min-username-length": "Minimum Username Length",
"max-username-length": "Maximum Username Length",
"min-password-length": "Minimum Password Length",
"max-about-me-length": "Maximum About Me Length",
"terms-of-use": "Forum Terms of Use <small>(Leave blank to disable)</small>",
"user-search": "User Search",
"user-search-results-per-page": "Number of results to display",
"default-user-settings": "Default User Settings",
"show-email": "Show email",
"show-fullname": "Show fullname",
"restrict-chat": "Only allow chat messages from users I follow",
"outgoing-new-tab": "Open outgoing links in new tab",
"topic-search": "Enable In-Topic Searching",
"digest-freq": "Subscribe to Digest",
"digest-freq.off": "Off",
"digest-freq.daily": "Daily",
"digest-freq.weekly": "Weekly",
"digest-freq.monthly": "Monthly",
"email-chat-notifs": "Send an email if a new chat message arrives and I am not online",
"email-post-notif": "Send an email when replies are made to topics I am subscribed to",
"follow-created-topics": "Follow topics you create",
"follow-replied-topics": "Follow topics that you reply to"
}

@ -0,0 +1,10 @@
{
"crawlability-settings": "Crawlability Settings",
"robots-txt": "Custom Robots.txt <small>Leave blank for default</small>",
"sitemap-feed-settings": "Sitemap & Feed Settings",
"disable-rss-feeds": "Disable RSS Feeds",
"disable-sitemap-xml": "Disable Sitemap.xml",
"sitemap-topics": "Number of Topics to display in the Sitemap",
"clear-sitemap-cache": "Clear Sitemap Cache",
"view-sitemap": "View Sitemap"
}

@ -148,7 +148,7 @@
<form class="pull-right hidden-sm hidden-xs" role="search">
<div class="" id="acp-search" >
<div class="dropdown">
<input type="text" data-toggle="dropdown" class="form-control" placeholder="[[admin/menu:search.placeholder]]">
<input type="text" autofocus data-toggle="dropdown" class="form-control" placeholder="[[admin/menu:search.placeholder]]">
<ul class="dropdown-menu dropdown-menu-right state-start-typing" role="menu">
<li role="presentation" class="no-results">
<a>[[admin/menu:search.no-results]]</a>

@ -1,7 +1,7 @@
<div class="settings">
<div class="row">
<div class="col-sm-2 col-xs-12 content-header">
Contents
[[admin/admin:settings-header-contents]]
</div>
<div class="col-sm-10 col-xs-12">
<nav class="section-content">

@ -1,21 +1,20 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Maintenance Mode</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/advanced:maintenance-mode]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="maintenanceMode">
<span class="mdl-switch__label"><strong>Maintenance Mode</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/advanced:maintenance-mode]]</strong></span>
</label>
</div>
<p class="help-block">
When the forum is in maintenance mode, all requests will be redirected to a static holding page.
Administrators are exempt from this redirection, and are able to access the site normally.
[[admin/settings/advanced:maintenance-mode.help]]
</p>
<div class="form-group">
<label for="maintenanceModeMessage">Maintenance Message</label>
<label for="maintenanceModeMessage">[[admin/settings/advanced:maintenance-mode.message]]</label>
<textarea class="form-control" data-field="maintenanceModeMessage"></textarea>
</div>
</form>
@ -23,30 +22,30 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Headers</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/advanced:headers]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="allow-from-uri">Set ALLOW-FROM to Place NodeBB in an iFrame</label>
<label for="allow-from-uri">[[admin/settings/advanced:headers.allow-from]]</label>
<input class="form-control" id="allow-from-uri" type="text" placeholder="external-domain.com" data-field="allow-from-uri" /><br />
</div>
<div class="form-group">
<label for="powered-by">Customise the "Powered By" header sent by NodeBB</label>
<label for="powered-by">[[admin/settings/advanced:headers.powered-by]]</label>
<input class="form-control" id="powered-by" type="text" placeholder="NodeBB" data-field="powered-by" /><br />
</div>
<div class="form-group">
<label for="access-control-allow-origin">Access-Control-Allow-Origin</label>
<label for="access-control-allow-origin">[[admin/settings/advanced:headers.acao]]</label>
<input class="form-control" id="access-control-allow-origin" type="text" placeholder="null" value="null" data-field="access-control-allow-origin" /><br />
<p class="help-block">
To deny access to all sites, leave empty or set to <code>null</code>
[[admin/settings/advanced:headers.acao-help]]
</p>
</div>
<div class="form-group">
<label for="access-control-allow-methods">Access-Control-Allow-Methods</label>
<label for="access-control-allow-methods">[[admin/settings/advanced:headers.acam]]</label>
<input class="form-control" id="access-control-allow-methods" type="text" placeholder="" data-field="access-control-allow-methods" /><br />
</div>
<div class="form-group">
<label for="access-control-allow-headers">Access-Control-Allow-Headers</label>
<label for="access-control-allow-headers">[[admin/settings/advanced:headers.acah]]</label>
<input class="form-control" id="access-control-allow-headers" type="text" placeholder="" data-field="access-control-allow-headers" /><br />
</div>
</form>
@ -54,38 +53,34 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Traffic Management</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/advanced:traffic-management]]</div>
<div class="col-sm-10 col-xs-12">
<p class="help-block">
NodeBB deploys equipped with a module that automatically denies requests in high-traffic
situations. You can tune these settings here, although the defaults are a good starting
point.
[[admin/settings/advanced:traffic.help]]
</p>
<form>
<div class="form-group">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="eventLoopCheckEnabled">
<input class="mdl-switch__input" id="eventLoopCheckEnabled" type="checkbox" data-field="eventLoopCheckEnabled" checked />
<span class="mdl-switch__label">Enable Traffic Management</span>
<span class="mdl-switch__label">[[admin/settings/advanced:traffic.enable]]</span>
</label>
</div>
<div class="form-group">
<label for="eventLoopLagThreshold">Event Loop Lag Threshold (in milliseconds)</label>
<label for="eventLoopLagThreshold">[[admin/settings/advanced:traffic.event-lag]]</label>
<input class="form-control" id="eventLoopLagThreshold" type="number" data-field="eventLoopLagThreshold" placeholder="Default: 70" step="10" min="10" value="70" />
<p class="help-block">
Lowering this value decreases wait times for page loads, but will also show the
"excessive load" message to more users. (Restart required)
[[admin/settings/advanced:traffic.event-lag-help]]
</p>
</div>
<div class="form-group">
<label for="eventLoopInterval">Check Interval (in milliseconds)</label>
<label for="eventLoopInterval">[[admin/settings/advanced:traffic.lag-check-interval]]</label>
<input class="form-control" id="eventLoopInterval" type="number" data-field="eventLoopInterval" placeholder="Default: 500" value="500" step="50" />
<p class="help-block">
Lowering this value causes NodeBB to become more sensitive to spikes in load, but
may also cause the check to become too sensitive. (Restart required)
[[admin/settings/advanced:traffic.lag-check-interval-help]]
</p>
</div>
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,14 +1,14 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Chat Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/chat:chat-settings]]</div>
<div class="col-sm-10 col-xs-12">
<div class="form-group">
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" class="mdl-switch__input" id="disableChat" data-field="disableChat">
<span class="mdl-switch__label"><strong>Disable chat</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/chat:disable]]</strong></span>
</label>
</div>
</div>
@ -17,28 +17,28 @@
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" class="mdl-switch__input" id="disableChatMessageEditing" data-field="disableChatMessageEditing">
<span class="mdl-switch__label"><strong>Disable chat message editing/deletion</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/chat:disable-editing]]</strong></span>
</label>
</div>
<p class="help-block">Administrators and global moderators are exempt from this restriction</p>
<p class="help-block">[[admin/settings/chat:disable-editing-help]]</p>
</div>
<div class="form-group">
<label>Maximum length of chat messages</label>
<label>[[admin/settings/chat:max-length]]</label>
<input type="text" class="form-control" value="1000" data-field="maximumChatMessageLength">
</div>
<div class="form-group">
<label>Maximum number of users in chat rooms</label>
<label>[[admin/settings/chat:max-room-size]]</label>
<input type="text" class="form-control" value="0" data-field="maximumUsersInChatRoom">
</div>
<div class="form-group">
<label>Time between chat messages in milliseconds</label>
<label>[[admin/settings/chat:delay]]</label>
<input type="text" class="form-control" value="200" data-field="chatMessageDelay">
</div>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,36 +1,36 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">EU Consent</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/cookies:eu-consent]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" class="mdl-switch__input" id="cookieConsentEnabled" data-field="cookieConsentEnabled">
<span class="mdl-switch__label"><strong>Enabled</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/cookies:consent.enabled]]</strong></span>
</label>
</div>
</div>
<div class="form-group">
<label for="cookieConsentMessage">Notification message</label>
<label for="cookieConsentMessage">[[admin/settings/cookies:consent.message]]</label>
<input class="form-control" id="cookieConsentMessage" type="text" data-field="cookieConsentMessage" />
<p class="help-block">
Leave blank to use NodeBB localised defaults
[[admin/settings/cookies:consent.blank-localised-default]]
</p>
</div>
<div class="form-group">
<label for="cookieConsentDismiss">Acceptance message</label>
<label for="cookieConsentDismiss">[[admin/settings/cookies:consent.acceptance]]</label>
<input class="form-control" id="cookieConsentDismiss" type="text" data-field="cookieConsentDismiss" />
<p class="help-block">
Leave blank to use NodeBB localised defaults
[[admin/settings/cookies:consent.blank-localised-default]]
</p>
</div>
<div class="form-group">
<label for="cookieConsentLink">Policy Link Text</label>
<label for="cookieConsentLink">[[admin/settings/cookies:consent.link-text]]</label>
<input class="form-control" id="cookieConsentLink" type="text" data-field="cookieConsentLink" />
<p class="help-block">
Leave blank to use NodeBB localised defaults
[[admin/settings/cookies:consent.blank-localised-default]]
</p>
</div>
</form>
@ -42,10 +42,10 @@
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="cookieDomain">Session cookie domain</label>
<label for="cookieDomain">[[admin/settings/cookies:cookie-domain]]</label>
<input class="form-control" id="cookieDomain" type="text" placeholder=".domain.tld" data-field="cookieDomain" /><br />
<p class="help-block">
Leave blank for default
[[admin/settings/cookies:blank-default]]
</p>
</div>
@ -59,4 +59,4 @@
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,20 +1,20 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Email Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/email:email-settings]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="email:from"><strong>Email Address</strong></label>
<label for="email:from"><strong>[[admin/settings/email:address]]</strong></label>
<p class="help-block">
The following email address refers to the email that the recipient will see in the "From" and "Reply To" fields.
</p>
<input type="text" class="form-control input-lg" id="email:from" data-field="email:from" placeholder="info@example.org" /><br />
</div>
<div class="form-group">
<label for="email:from_name"><strong>From Name</strong></label>
<p class="help-block">
The from name to display in the email.
[[admin/settings/email:from-help]]
</p>
<input type="text" class="form-control input-lg" id="email:from_name" data-field="email:from_name" placeholder="NodeBB" /><br />
</div>
@ -23,37 +23,32 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Gmail Routing</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/email:gmail-routing]]</div>
<div class="col-sm-10 col-xs-12">
<div class="alert alert-warning">
<p>
There have been reports of Gmail Routing not working on accounts with heightened security. In those scenarios,
you will have to <a href="https://www.google.com/settings/security/lesssecureapps">configure your GMail account
to allow less secure apps</a>.
[[admin/settings/email:gmail-routing-help1]]
</p>
<p>
For more information about this workaround, <a href="https://nodemailer.com/using-gmail/">please consult
this NodeMailer article on the issue.</a> An alternative would be to utilise a third-party emailer plugin
such as SendGrid, Mailgun, etc. <a href="{config.relative_path}/admin/extend/plugins">Browse available plugins
here</a>.
[[admin/settings/email:gmail-routing-help2]]
</p>
</div>
<form>
<div class="checkbox">
<label for="email:GmailTransport:enabled" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" id="email:GmailTransport:enabled" data-field="email:GmailTransport:enabled" name="email:GmailTransport:enabled" />
<span class="mdl-switch__label">Route emails through a Gmail/Google Apps account</span>
<span class="mdl-switch__label">[[admin/settings/email:gmail-transport]]</span>
</label>
</div>
<div class="form-group">
<label for="email:GmailTransport:user"><strong>Username</strong></label>
<label for="email:GmailTransport:user"><strong>[[admin/settings/email:gmail-transport.username]]</strong></label>
<input type="text" class="form-control input-lg" id="email:GmailTransport:user" data-field="email:GmailTransport:user" placeholder="admin@example.org" />
<p class="help-block">
Enter the full email address here, especially if you are using a Google Apps managed domain.
[[admin/settings/email:gmail-transport.username-help]]
</p>
</div>
<div class="form-group">
<label for="email:GmailTransport:pass"><strong>Password</strong></label>
<label for="email:GmailTransport:pass"><strong>[[admin/settings/email:gmail-transport.password]]</strong></label>
<input type="password" class="form-control input-lg" id="email:GmailTransport:pass" data-field="email:GmailTransport:pass" />
</div>
</form>
@ -61,9 +56,9 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Edit Email Template</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/email:template]]</div>
<div class="col-sm-10 col-xs-12">
<label>Select Email Template</label><br />
<label>[[admin/settings/email:template.select]]</label><br />
<select id="email-editor-selector" class="form-control">
<!-- BEGIN emails -->
<option value="{emails.path}">{emails.path}</option>
@ -73,51 +68,48 @@
<div id="email-editor"></div>
<input type="hidden" id="email-editor-holder" value="" data-field="" />
<br />
<button class="btn btn-warning" type="button" data-action="email.revert">Revert to Original</button>
<button class="btn btn-warning" type="button" data-action="email.revert">[[admin/settings/email:template.revert]]</button>
</div>
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Email Testing</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/email:testing]]</div>
<div class="col-sm-10 col-xs-12">
<div class="form-group">
<label>Select Email Template</label>
<label>[[admin/settings/email:testing.select]]</label>
<select id="test-email" class="form-control">
<!-- BEGIN sendable -->
<option value="{sendable.path}">{sendable.path}</option>
<!-- END sendable -->
</select>
</div>
<button class="btn btn-primary" type="button" data-action="email.test">Send Test Email</button>
<button class="btn btn-primary" type="button" data-action="email.test">[[admin/settings/email:testing.send]]</button>
<p class="help-block">
The test email will be sent to the currently logged in user's email address.
[[admin/settings/email:testing.send-help]]
</p>
</div>
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Email Subscriptions</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/email:subscriptions]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label for="disableEmailSubscriptions" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" id="disableEmailSubscriptions" data-field="disableEmailSubscriptions" name="disableEmailSubscriptions" />
<span class="mdl-switch__label">Disable subscriber notification emails</span>
<span class="mdl-switch__label">[[admin/settings/email:subscriptions.disable]]</span>
</label>
</div>
<div class="form-group">
<label for="digestHour"><strong>Digest Hour</strong></label>
<label for="digestHour"><strong>[[admin/settings/email:subscriptions.hour]]</strong></label>
<input type="number" class="form-control input-lg" id="digestHour" data-field="digestHour" placeholder="17" min="0" max="24" />
<p class="help-block">
Please enter a number representing the hour to send scheduled email digests (e.g. <code>0</code> for midnight, <code>17</code> for 5:00pm).
Keep in mind that this is the hour according to the server itself, and may not exactly match your system clock.<br />
The approximate server time is: <span id="serverTime"></span><br />
The next daily digest is scheduled to be sent <span id="nextDigestTime"></span>
[[admin/settings/email:subscriptions.hour-help]]
</p>
</div>
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,66 +1,66 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">
Site Settings
[[admin/settings/general:site-settings]]
</div>
<div class="col-sm-10 col-xs-12">
<form>
<label>Site Title</label>
<input class="form-control" type="text" placeholder="Your Community Name" data-field="title" />
<label>[[admin/settings/general:title]]</label>
<input class="form-control" type="text" placeholder="[[admin/settings/general:title.name]]" data-field="title" />
<div class="checkbox">
<label for="showSiteTitle" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" class="mdl-switch__input" id="showSiteTitle" data-field="showSiteTitle" name="showSiteTitle" />
<span class="mdl-switch__label">Show Site Title in Header</span>
<span class="mdl-switch__label">[[admin/settings/general:title.show-in-header]]</span>
</label>
</div>
<label>Browser Title</label>
<input class="form-control" type="text" placeholder="Browser Title" data-field="browserTitle" />
<label>[[admin/settings/general:browser-title]]</label>
<input class="form-control" type="text" placeholder="[[admin/settings/general:browser-title]]" data-field="browserTitle" />
<p class="help-block">
If no browser title is specified, the site title will be used
[[admin/settings/general:browser-title-help]]
</p>
<label>Title Layout</label>
<input class="form-control" type="text" placeholder="Title Layout" data-field="titleLayout" />
<label>[[admin/settings/general:title-layout]]</label>
<input class="form-control" type="text" placeholder="[[admin/settings/general:title-layout]]" data-field="titleLayout" />
<p class="help-block">
Define how the browser title will be structured ie. &#123;pageTitle&#125; | &#123;browserTitle&#125;
[[admin/settings/general:title-layout-help]]
</p>
<label>Site Description</label>
<input type="text" class="form-control" placeholder="A short description about your community" data-field="description" /><br />
<label>[[admin/settings/general:description]]</label>
<input type="text" class="form-control" placeholder="[[admin/settings/general:description.placeholder]]" data-field="description" /><br />
<label>Site Keywords</label>
<input type="text" class="form-control" placeholder="Keywords describing your community, comma-separated" data-field="keywords" /><br />
<label>[[admin/settings/general:keywords]]</label>
<input type="text" class="form-control" placeholder="[[admin/settings/general:keywords-placeholder]]" data-field="keywords" /><br />
</form>
</div>
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Site Logo</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/general:logo]]</div>
<div class="col-sm-10 col-xs-12">
<div class="form-group">
<label for="logoUrl">Image</label>
<label for="logoUrl">[[admin/settings/general:logo.image]]</label>
<div class="input-group">
<input id="logoUrl" type="text" class="form-control" placeholder="Path to a logo to display on forum header" data-field="brand:logo" data-action="upload" data-target="logoUrl" data-route="{config.relative_path}/api/admin/uploadlogo" readonly />
<input id="logoUrl" type="text" class="form-control" placeholder="[[admin/settings/general:logo.image-placeholder]]" data-field="brand:logo" data-action="upload" data-target="logoUrl" data-route="{config.relative_path}/api/admin/uploadlogo" readonly />
<span class="input-group-btn">
<input data-action="upload" data-target="logoUrl" data-route="{config.relative_path}/api/admin/uploadlogo" type="button" class="btn btn-default" value="Upload"></input>
<input data-action="upload" data-target="logoUrl" data-route="{config.relative_path}/api/admin/uploadlogo" type="button" class="btn btn-default" value="[[admin/settings/general:logo.upload]]"></input>
<button data-action="removeLogo" type="button" class="btn btn-default btn-danger"><i class="fa fa-times"></i></button>
</span>
</div>
</div>
<div class="form-group">
<label for="brand:logo:url">URL</label>
<input id ="brand:logo:url" type="text" class="form-control" placeholder="The URL of the site logo" data-field="brand:logo:url" />
<label for="brand:logo:url">[[admin/settings/general:logo.url]]</label>
<input id ="brand:logo:url" type="text" class="form-control" placeholder="[[admin/settings/general:logo.url-placeholder]]" data-field="brand:logo:url" />
<p class="help-block">
When the logo is clicked, send users to this address. If left blank, user will be sent to the forum index.
[[admin/settings/general:logo.url-help]]
</p>
</div>
<div class="form-group">
<label for="brand:logo:alt">Alt Text</label>
<input id ="brand:logo:alt" type="text" class="form-control" placeholder="Alternative text for accessibility" data-field="brand:logo:alt" />
<label for="brand:logo:alt">[[admin/settings/general:logo.alt-text]]</label>
<input id ="brand:logo:alt" type="text" class="form-control" placeholder="[[admin/settings/general:log.alt-text-placeholder]]" data-field="brand:logo:alt" />
</div>
<div class="form-group">
@ -68,7 +68,7 @@
<div class="input-group">
<input id="og_image" type="text" class="form-control" placeholder="" data-field="og:image" data-action="upload" data-target="og_image" data-route="{config.relative_path}/api/admin/uploadOgImage" readonly />
<span class="input-group-btn">
<input data-action="upload" data-target="og_image" data-route="{config.relative_path}/api/admin/uploadOgImage" type="button" class="btn btn-default" value="Upload"></input>
<input data-action="upload" data-target="og_image" data-route="{config.relative_path}/api/admin/uploadOgImage" type="button" class="btn btn-default" value="[[admin/settings/general:logo.upload]]"></input>
<button data-action="removeOgImage" type="button" class="btn btn-default btn-danger"><i class="fa fa-times"></i></button>
</span>
</div>
@ -78,14 +78,14 @@
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">
Favicon
[[admin/settings/general:favicon]]
</div>
<div class="col-sm-10 col-xs-12">
<div class="form-group">
<div class="input-group">
<input id="faviconUrl" type="text" class="form-control" placeholder="favicon.ico" data-field="brand:favicon" data-action="upload" data-target="faviconUrl" data-route="{config.relative_path}/api/admin/uploadfavicon" readonly />
<span class="input-group-btn">
<input data-action="upload" data-target="faviconUrl" data-route="{config.relative_path}/api/admin/uploadfavicon" data-help="0" type="button" class="btn btn-default" value="Upload"></input>
<input data-action="upload" data-target="faviconUrl" data-route="{config.relative_path}/api/admin/uploadfavicon" data-help="0" type="button" class="btn btn-default" value="[[admin/settings/general:favicon.upload]]"></input>
<button data-action="removeFavicon" type="button" class="btn btn-default btn-danger"><i class="fa fa-times"></i></button>
</span>
</div>
@ -95,36 +95,36 @@
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">
Homescreen/Touch Icon
[[admin/settings/general:touch-icon]]
</div>
<div class="col-sm-10 col-xs-12">
<div class="form-group">
<div class="input-group">
<input id="touchIconUrl" type="text" class="form-control" data-field="brand:touchIcon" data-action="upload" data-target="touchIconUrl" data-route="{config.relative_path}/api/admin/uploadTouchIcon" readonly />
<span class="input-group-btn">
<input data-action="upload" data-target="touchIconUrl" data-route="{config.relative_path}/api/admin/uploadTouchIcon" type="button" class="btn btn-default" value="Upload"></input>
<input data-action="upload" data-target="touchIconUrl" data-route="{config.relative_path}/api/admin/uploadTouchIcon" type="button" class="btn btn-default" value="[[admin/settings/general:touch-icon.upload]]"></input>
<button data-action="removeTouchIcon" type="button" class="btn btn-default btn-danger"><i class="fa fa-times"></i></button>
</span>
</div>
<p class="help-block">
Recommended size and format: 192x192, PNG format only. If no touch icon is specified, NodeBB will fall back to using the favicon.
[[admin/settings/general:touch-icon.help]]
</p>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Outgoing Links</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/general:outgoing-links]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" class="mdl-switch__input" id="showSiteTitle" data-field="useOutgoingLinksPage">
<span class="mdl-switch__label"><strong>Use Outgoing Links Warning Page</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/general:outgoing-links.warning-page]]</strong></span>
</label>
</div>
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,51 +1,51 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">General</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/group:general]]</div>
<div class="col-sm-10 col-xs-12">
<form role="form">
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowPrivateGroups">
<span class="mdl-switch__label"><strong>Private Groups</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/group:private-groups]]</strong></span>
</label>
</div>
<p class="help-block">
If enabled, joining of groups requires the approval of the group owner <em>(Default: enabled)</em>
[[admin/settings/group:private-groups.help]]
</p>
<p class="help-block">
<strong>Beware!</strong> If this option is disabled and you have private groups, they automatically become public.
[[admin/settings/group:private-groups.warning]]
</p>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowGroupCreation">
<span class="mdl-switch__label"><strong>Allow Group Creation</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/group:allow-creation]]</strong></span>
</label>
</div>
<p class="help-block">
If enabled, users can create groups <em>(Default: disabled)</em>
[[admin/settings/group:allow-creation-help]]
</p>
<label>Maximum Group Name Length</label>
<label>[[admin/settings/group:max-name-length]]</label>
<input class="form-control" type="text" placeholder="255" data-field="maximumGroupNameLength" />
</form>
</div>
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Group Cover Image</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/group:cover-image]]</div>
<div class="col-sm-10 col-xs-12">
<form role="form">
<label for="groups:defaultCovers"><strong>Default Cover Images</strong></label>
<label for="groups:defaultCovers"><strong>[[admin/settings/group:default-cover]]</strong></label>
<p class="help-block">
Add comma-separated default cover images for groups that don't have an uploaded cover image
[[admin/settings/group:default-cover-help]]
</p>
<input type="text" class="form-control input-lg" id="groups:defaultCovers" data-field="groups:defaultCovers" value="{config.relative_path}/images/cover-default.png" placeholder="https://example.com/group1.png, https://example.com/group2.png" /><br />
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,18 +1,17 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Guest Handles</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/guest:handles]]</div>
<div class="col-sm-10 col-xs-12">
<form role="form">
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowGuestHandles">
<span class="mdl-switch__label"><strong>Allow guest handles</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/guest:handles.enabled]]</strong></span>
</label>
</div>
<p class="help-block">
This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled,
the will simply be called "Guest"
[[admin/settings/guest:handles.enabled-help]]
</p>
</form>
</div>
@ -20,24 +19,24 @@
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Guest Privileges</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/guest:privileges]]</div>
<div class="col-sm-10 col-xs-12">
<form role="form">
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowGuestSearching">
<span class="mdl-switch__label"><strong>Allow guests to search without logging in</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/guest:privileges.can-search]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowGuestUserSearching">
<span class="mdl-switch__label"><strong>Allow guests to search users without logging in</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/guest:privileges.can-search-users]]</strong></span>
</label>
</div>
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,13 +1,13 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Notifications</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/notifications:notifications]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<strong>Welcome Notification</strong><br /> <textarea class="form-control" data-field="welcomeNotification"></textarea><br />
<strong>Welcome Notification Link</strong><br /> <input type="text" class="form-control" data-field="welcomeLink"><br />
<strong>[[admin/settings/notifications:welcome-notification]]</strong><br /> <textarea class="form-control" data-field="welcomeNotification"></textarea><br />
<strong>[[admin/settings/notifications:welcome-notification-link]]</strong><br /> <input type="text" class="form-control" data-field="welcomeLink"><br />
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,13 +1,13 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Pagination Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/pagination:pagination]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="usePagination">
<span class="mdl-switch__label"><strong>Paginate topics and posts instead of using infinite scroll.</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/pagination:enable]]</strong></span>
</label>
</div>
</form>
@ -15,22 +15,22 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Topic Pagination</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/pagination:topics]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<strong>Posts per Page</strong><br /> <input type="text" class="form-control" value="20" data-field="postsPerPage">
<strong>[[admin/settings/pagination:posts-per-page]]</strong><br /> <input type="text" class="form-control" value="20" data-field="postsPerPage">
</form>
</div>
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Category Pagination</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/pagination:categories]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<strong>Topics per Page</strong><br /> <input type="text" class="form-control" value="20" data-field="topicsPerPage"><br />
<strong>Initial Number of Topics to Load on Unread, Recent, and Popular</strong><br /> <input type="text" class="form-control" value="20" data-field="topicsPerList">
<strong>[[admin/settings/pagination:topics-per-page]]</strong><br /> <input type="text" class="form-control" value="20" data-field="topicsPerPage"><br />
<strong>[[admin/settings/pagination:initial-num-load]]</strong><br /> <input type="text" class="form-control" value="20" data-field="topicsPerList">
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,23 +1,23 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Post Sorting</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/post:sorting]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label>Default Post Sorting</label>
<label>[[admin/settings/post:sorting.post-default]]</label>
<select class="form-control" data-field="topicPostSort">
<option value="oldest_to_newest">Oldest to Newest</option>
<option value="newest_to_oldest">Newest to Oldest</option>
<option value="most_votes">Most Votes</option>
<option value="oldest_to_newest">[[admin/settings/post:sorting.oldest-to-newest]]</option>
<option value="newest_to_oldest">[[admin/settings/post:sorting.newest-to-oldest]]</option>
<option value="most_votes">[[admin/settings/post:sorting.most-votes]]</option>
</select>
</div>
<div class="form-group">
<label>Default Topic Sorting</label>
<label>[[admin/settings/post:sorting.topic-default]]</label>
<select class="form-control" data-field="categoryTopicSort">
<option value="newest_to_oldest">Newest to Oldest</option>
<option value="oldest_to_newest">Oldest to Newest</option>
<option value="most_posts">Most Posts</option>
<option value="oldest_to_newest">[[admin/settings/post:sorting.oldest-to-newest]]</option>
<option value="newest_to_oldest">[[admin/settings/post:sorting.newest-to-oldest]]</option>
<option value="most_votes">[[admin/settings/post:sorting.most-votes]]</option>
</select>
</div>
</form>
@ -25,59 +25,58 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Posting Restrictions</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/post:restrictions]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="postDelay">Seconds between Posts</label>
<label for="postDelay">[[admin/settings/post:restrictions.seconds-between]]</label>
<input id="postDelay" type="text" class="form-control" value="10" data-field="postDelay">
</div>
<div class="form-group">
<label for="newbiePostDelay">Seconds between Posts for New Users</label>
<label for="newbiePostDelay">[[admin/settings/post:restrictions.seconds-between-new]]</label>
<input id="newbiePostDelay" type="text" class="form-control" value="120" data-field="newbiePostDelay">
</div>
<div class="form-group">
<label for="newbiePostDelayThreshold">Reputation threshold before this restriction is lifted</label>
<label for="newbiePostDelayThreshold">[[admin/settings/post:restrictions.rep-threshold]]</label>
<input id="newbiePostDelayThreshold" type="text" class="form-control" value="3" data-field="newbiePostDelayThreshold">
</div>
<div class="form-group">
<label for="initialPostDelay">Seconds before new user can post</label>
<label for="initialPostDelay">[[admin/settings/post:restrictions.seconds-defore-new]]</label>
<input id="initialPostDelay" type="text" class="form-control" value="10" data-field="initialPostDelay">
</div>
<div class="form-group">
<label for="postEditDuration">Number of seconds users are allowed to edit posts after posting. (0 disabled)</label>
<label for="postEditDuration">[[admin/settings/post:restrictions.seconds-edit-after]]</label>
<input id="postEditDuration" type="text" class="form-control" value="0" data-field="postEditDuration">
</div>
<div class="form-group">
<label for="postDeleteDuration">Number of seconds users are allowed to delete posts after posting. (0 disabled)</label>
<label for="postDeleteDuration">[[admin/settings/post:restrictions.seconds-delete-after]]</label>
<input id="postDeleteDuration" type="text" class="form-control" value="0" data-field="postDeleteDuration">
</div>
<div class="form-group">
<label for="preventTopicDeleteAfterReplies">Number of replies after users are disallowed to delete their own topics. (0 disabled)</label>
<label for="preventTopicDeleteAfterReplies">[[admin/settings/post:restrictions.replies-no-delete]]</label>
<input id="preventTopicDeleteAfterReplies" type="text" class="form-control" value="0" data-field="preventTopicDeleteAfterReplies">
</div>
<div class="form-group">
<label for="minimumTitleLength">Minimum Title Length</label>
<label for="minimumTitleLength">[[admin/settings/post:restrictions.min-title-length]]</label>
<input id="minimumTitleLength" type="text" class="form-control" value="3" data-field="minimumTitleLength">
</div>
<div class="form-group">
<label for="maximumTitleLength">Maximum Title Length</label>
<label for="maximumTitleLength">[[admin/settings/post:restrictions.max-title-length]]</label>
<input id="maximumTitleLength" type="text" class="form-control" value="255" data-field="maximumTitleLength">
</div>
<div class="form-group">
<label for="minimumPostLength">Minimum Post Length</label>
<label for="minimumPostLength">[[admin/settings/post:restrictions.min-post-length]]</label>
<input id="minimumPostLength" type="text" class="form-control" value="8" data-field="minimumPostLength">
</div>
<div class="form-group">
<label for="maximumPostLength">Maximum Post Length</label>
<label for="maximumPostLength">[[admin/settings/post:restrictions.max-post-length]]</label>
<input id="maximumPostLength" type="text" class="form-control" value="32767" data-field="maximumPostLength">
</div>
<div class="form-group">
<label for="topicStaleDays">Days until Topic is considered stale</label>
<label for="topicStaleDays">[[admin/settings/post:restrictions.days-until-stale]]</label>
<input id="topicStaleDays" type="text" class="form-control" value="60" data-field="topicStaleDays">
<p class="help-block">
If a topic is considered "stale", then a warning will be shown to users who attempt to reply
to that topic.
[[admin/settings/post:restrictions.stale-help]]
</p>
</div>
</form>
@ -85,16 +84,14 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Timestamp</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/post:timestamp]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="timeagoCutoff">Date cut-off (in days)</label>
<label for="timeagoCutoff">[[admin/settings/post:timestamp.cut-off]]</label>
<input type="number" class="form-control" id="timeagoCutoff" data-field="timeagoCutoff" />
<p class="help-block">
Dates &amp; times will be shown in a relative manner (e.g. "3 hours ago" / "5 days ago"), and localised into various
languages. After a certain point, this text can be switched to display the localised date itself
(e.g. 5 Nov 2016 15:30).<br /><em>(Default: <code>30</code>, or one month). Set to 0 to always display dates, leave blank to always display relative times.</em>
[[admin/settings/post:timestamp.cut-off-help]]
</p>
</div>
</form>
@ -106,11 +103,11 @@
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label>Teaser Post</label>
<label>[[admin/settings/post:teaser]]</label>
<select class="form-control" data-field="teaserPost">
<option value="last-post">Last &ndash; Show the latest post, including the original post, if no replies</option>
<option value="last-reply">Last &ndash; Show the latest reply, or a "No replies" placeholder if no replies</option>
<option value="first">First</option>
<option value="last-post">[[admin/settings/post:teaser.last-post]]</option>
<option value="last-reply">[[admin/settings/post:teaser.last-reply]]</option>
<option value="first">[[admin/settings/post:teaser.first]]</option>
</select>
</div>
</form>
@ -118,15 +115,15 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Unread Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/post:unread]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="unreadCutoff">Unread cutoff days</label>
<label for="unreadCutoff">[[admin/settings/post:unread.cutoff]]</label>
<input id="unreadCutoff" type="text" class="form-control" value="2" data-field="unreadCutoff">
</div>
<div class="form-group">
<label for="bookmarkthreshold">Minimum posts in topic before tracking last read</label>
<label for="bookmarkthreshold">[[admin/settings/post:unread.min-track-last]]</label>
<input id="bookmarkthreshold" type="text" class="form-control" value="5" data-field="bookmarkThreshold">
</div>
</form>
@ -134,29 +131,29 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Signature Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/post:signature]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="disableSignatures">
<span class="mdl-switch__label"><strong>Disable signatures</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/post:signature.disable]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="signatures:disableLinks">
<span class="mdl-switch__label"><strong>Disable links in signatures</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/post:signature.no-links]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="signatures:disableImages">
<span class="mdl-switch__label"><strong>Disable images in signatures</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/post:signature.no-images]]</strong></span>
</label>
</div>
<div class="form-group">
<label>Maximum Signature Length</label>
<label>[[admin/settings/post:signature.max-length]]</label>
<input type="text" class="form-control" value="255" data-field="maximumSignatureLength">
</div>
</form>
@ -164,27 +161,26 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Composer Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/post:composer]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<p>
The following settings govern the functionality and/or appearance of the post composer shown
to users when they create new topics, or reply to existing topics.
[[admin/settings/post:composer-help]]
</p>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="composer:showHelpTab">
<input class="mdl-switch__input" type="checkbox" id="composer:showHelpTab" data-field="composer:showHelpTab" checked />
<span class="mdl-switch__label">Show "Help" tab</span>
<span class="mdl-switch__label">[[admin/settings/post:composer.show-help]]</span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="composer:allowPluginHelp">
<input class="mdl-switch__input" type="checkbox" id="composer:allowPluginHelp" data-field="composer:allowPluginHelp" checked />
<span class="mdl-switch__label">Allow plugins to add content to the help tab</span>
<span class="mdl-switch__label">[[admin/settings/post:composer.enable-plugin-help]]</span>
</label>
</div>
<div class="form-group">
<label for="composer:customHelpText">Custom Help Text</label>
<label for="composer:customHelpText">[[admin/settings/post:composer.custom-help]]</label>
<textarea class="form-control" id="composer:customHelpText" data-field="composer:customHelpText" rows="5"></textarea>
</div>
</form>
@ -192,16 +188,16 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">IP Tracking</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/post:ip-tracking]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="trackIpPerPost">
<span class="mdl-switch__label"><strong>Track IP Address for each post</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/post:ip-tracking.each-post]]</strong></span>
</label>
</div>
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,20 +1,20 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Reputation Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/reputation:reputation]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" class="mdl-switch__input" data-field="reputation:disabled">
<span class="mdl-switch__label"><strong>Disable Reputation System</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/reputation:disable]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" class="mdl-switch__input" data-field="downvote:disabled">
<span class="mdl-switch__label"><strong>Disable Down Voting</trong></strong>
<span class="mdl-switch__label"><strong>[[admin/settings/reputation:disable-down-voting]]</trong></strong>
</label>
</div>
</form>
@ -23,13 +23,13 @@
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Activity Thresholds</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/reputation:thresholds]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<strong>Minimum reputation to downvote posts</strong><br /> <input type="text" class="form-control" placeholder="0" data-field="privileges:downvote"><br />
<strong>Minimum reputation to flag posts</strong><br /> <input type="text" class="form-control" placeholder="0" data-field="privileges:flag"><br />
<strong>[[admin/settings/reputation:min-rep-downvote]]</strong><br /> <input type="text" class="form-control" placeholder="0" data-field="privileges:downvote"><br />
<strong>[[admin/settings/reputation:min-rep-flag]]</strong><br /> <input type="text" class="form-control" placeholder="0" data-field="privileges:flag"><br />
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,19 +1,19 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Reconnection Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/sockets:reconnection]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="maxReconnectionAttempts">Max Reconnection Attempts</label>
<input class="form-control" id="maxReconnectionAttempts" type="text" value="5" placeholder="Default: 5" data-field="maxReconnectionAttempts" />
<label for="maxReconnectionAttempts">[[admin/settings/sockets:max-attempts]]</label>
<input class="form-control" id="maxReconnectionAttempts" type="text" value="5" placeholder="[[admin/settings/sockets:default-placeholder, 5]]" data-field="maxReconnectionAttempts" />
</div>
<div class="form-group">
<label for="reconnectionDelay">Reconnection Delay</label>
<input class="form-control" id="reconnectionDelay" type="text" value="1500" placeholder="Default: 1500" data-field="reconnectionDelay" />
<label for="reconnectionDelay">[[admin/settings/sockets:delay]]</label>
<input class="form-control" id="reconnectionDelay" type="text" value="1500" placeholder="[[admin/settings/sockets:default-placeholder, 1500]]" data-field="reconnectionDelay" />
</div>
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,39 +1,39 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Tag Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/tags:tag]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="minimumTagsPerTopics">Minimum Tags per Topic</label>
<label for="minimumTagsPerTopics">[[admin/settings/tags:min-per-topic]]</label>
<input id="minimumTagsPerTopics" type="text" class="form-control" value="0" data-field="minimumTagsPerTopic">
</div>
<div class="form-group">
<label for="maximumTagsPerTopics">Maximum Tags per Topic</label>
<label for="maximumTagsPerTopics">[[admin/settings/tags:max-per-topic]]</label>
<input id="maximumTagsPerTopics" type="text" class="form-control" value="5" data-field="maximumTagsPerTopic">
</div>
<div class="form-group">
<label for="minimumTagLength">Minimum Tag Length</label>
<label for="minimumTagLength">[[admin/settings/tags:min-length]]</label>
<input id="minimumTagLength" type="text" class="form-control" value="3" data-field="minimumTagLength">
</div>
<div class="form-group">
<label for="maximumTagLength">Maximum Tag Length</label>
<label for="maximumTagLength">[[admin/settings/tags:max-length]]</label>
<input id="maximumTagLength" type="text" class="form-control" value="15" data-field="maximumTagLength">
</div>
</form>
Click <a href="{config.relative_path}/admin/manage/tags">here</a> to visit the tag management page.
<a href="{config.relative_path}/admin/manage/tags">[[admin/settings/tags:goto-manage]]</a>
</div>
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Privacy</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/tags:privacy]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="privateTagListing">
<span class="mdl-switch__label">Make the tags list private</span>
<span class="mdl-switch__label">[[admin/settings/tags:list-private]]</span>
</label>
</div>
</form>
@ -41,15 +41,15 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Related Topics</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/tags:related-topics]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="maximumRelatedTopics">Maximum related topics to display (if supported by theme)</label>
<label for="maximumRelatedTopics">[[admin/settings/tags:max-related-topics]]</label>
<input id="maximumRelatedTopics" type="text" class="form-control" value="5" data-field="maximumRelatedTopics">
</div>
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,59 +1,58 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">
Posts
[[admin/settings/uploads:posts]]
</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowFileUploads">
<span class="mdl-switch__label"><strong>Allow users to upload regular files</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/uploads:allow-files]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="privateUploads">
<span class="mdl-switch__label"><strong>Make uploaded files private</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/uploads:private]]</strong></span>
</label>
</div>
<div class="form-group">
<label for="maximumImageWidth">Resize images down to specified width (in pixels)</label>
<label for="maximumImageWidth">[[admin/settings/uploads:max-image-width]]</label>
<input type="text" class="form-control" value="760" data-field="maximumImageWidth" placeholder="760">
<p class="help-block">
(in pixels, default: 760 pixels, set to 0 to disable)
[[admin/settings/uploads:max-image-width-help]]
</p>
</div>
<div class="form-group">
<label for="maximumFileSize">Maximum File Size (in KiB)</label>
<label for="maximumFileSize">[[admin/settings/uploads:max-file-size]]</label>
<input type="text" class="form-control" value="2048" data-field="maximumFileSize">
<p class="help-block">
(in kilobytes, default: 2048 KiB)
[[admin/settings/uploads:max-file-size-help]]
</p>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowTopicsThumbnail">
<span class="mdl-switch__label"><strong>Allow users to upload topic thumbnails</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/uploads:allow-topic-thumbnails]]</strong></span>
</label>
</div>
<div class="form-group">
<label for="topicThumbSize">Topic Thumb Size</label>
<label for="topicThumbSize">[[admin/settings/uploads:topic-thumb-size]]</label>
<input type="text" class="form-control" value="120" data-field="topicThumbSize">
</div>
<div class="form-group">
<label for="allowedFileExtensions">Allowed File Extensions</label>
<label for="allowedFileExtensions">[[admin/settings/uploads:allowed-file-extensions]]</label>
<input type="text" class="form-control" value="" data-field="allowedFileExtensions" />
<p class="help-block">
Enter comma-separated list of file extensions here (e.g. <code>pdf,xls,doc</code>).
An empty list means all extensions are allowed.
[[admin/settings/uploads:allowed-file-extensions-help]]
</p>
</div>
</form>
@ -62,62 +61,62 @@
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">
Profile Avatars
[[admin/settings/uploads:profile-avatars]]
</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowProfileImageUploads">
<span class="mdl-switch__label"><strong>Allow users to upload profile images</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/uploads:allow-profile-image-uploads]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="profile:convertProfileImageToPNG">
<span class="mdl-switch__label"><strong>Convert profile image uploads to PNG</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/uploads:convert-profile-image-png]]</strong></span>
</label>
</div>
<div class="form-group">
<label>Custom Default Avatar</label>
<label>[[admin/settings/uploads:default-avatar]]</label>
<div class="input-group">
<input id="defaultAvatar" type="text" class="form-control" placeholder="A custom image to use instead of user icons" data-field="defaultAvatar" />
<span class="input-group-btn">
<input data-action="upload" data-target="defaultAvatar" data-route="{config.relative_path}/api/admin/uploadDefaultAvatar" type="button" class="btn btn-default" value="Upload"></input>
<input data-action="upload" data-target="defaultAvatar" data-route="{config.relative_path}/api/admin/uploadDefaultAvatar" type="button" class="btn btn-default" value="[[admin/settings/uploads:upload]]"></input>
</span>
</div>
</div>
<div class="form-group">
<label for="profileImageDimension">Profile Image Dimension</label>
<label for="profileImageDimension">[[admin/settings/uploads:profile-image-dimension]]</label>
<input id="profileImageDimension" type="text" class="form-control" data-field="profileImageDimension" placeholder="128" />
<p class="help-block">
(in pixels, default: 128 pixels)
[[admin/settings/uploads:profile-image-dimension-help]]
</p>
</div>
<div class="form-group">
<label>Maximum Profile Image File Size</label>
<label>[[admin/settings/uploads:max-profile-image-size]]</label>
<input type="text" class="form-control" placeholder="Maximum size of uploaded user images in kilobytes" data-field="maximumProfileImageSize" />
<p class="help-block">
(in kilobytes, default: 256 KiB)
[[admin/settings/uploads:max-profile-image-size-help]]
</p>
</div>
<div class="form-group">
<label>Maximum Cover Image File Size</label>
<label>[[admin/settings/uploads:max-cover-image-size]]</label>
<input type="text" class="form-control" placeholder="Maximum size of uploaded cover images in kilobytes" data-field="maximumCoverImageSize" />
<p class="help-block">
(in kilobytes, default: 2,048 KiB)
[[admin/settings/uploads:max-cover-image-size-help]]
</p>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="profile:keepAllUserImages">
<span class="mdl-switch__label"><strong>Keep old versions of avatars and profile covers on the server</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/uploads:keep-all-user-images]]</strong></span>
</label>
</div>
</form>
@ -125,16 +124,16 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Profile Covers</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/uploads:profile-covers]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<label for="profile:defaultCovers"><strong>Default Cover Images</strong></label>
<label for="profile:defaultCovers"><strong>[[admin/settings/uploads:default-covers]]</strong></label>
<p class="help-block">
Add comma-separated default cover images for accounts that don't have an uploaded cover image
[[admin/settings/uploads:default-covers-help]]
</p>
<input type="text" class="form-control input-lg" id="profile:defaultCovers" data-field="profile:defaultCovers" value="{config.relative_path}/images/cover-default.png" placeholder="https://example.com/group1.png, https://example.com/group2.png" />
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,35 +1,35 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Authentication</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/user:authentication]]</div>
<div class="col-sm-10 col-xs-12">
<form role="form">
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowLocalLogin" checked>
<span class="mdl-switch__label"><strong>Allow local login</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:allow-local-login]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="requireEmailConfirmation">
<span class="mdl-switch__label"><strong>Require Email Confirmation</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:require-email-confirmation]]</strong></span>
</label>
</div>
<div class="form-group form-inline">
<label for="emailConfirmInterval">User may not resend a confirmation email until</label>
<label for="emailConfirmInterval">[[admin/settings/user:email-confirm-interval]]</label>
<input class="form-control" data-field="emailConfirmInterval" type="number" id="emailConfirmInterval" placeholder="Default: 10" value="10" />
<label for="emailConfirmInterval">minutes have elapsed</label>
<label for="emailConfirmInterval">[[admin/settings/user:email-confirm-email2]]</label>
</div>
<div class="form-group">
<label>Allow login with</label>
<label>[[admin/settings/user:allow-login-with]]</label>
<select class="form-control" data-field="allowLoginWith">
<option value="username-email">Username or Email</option>
<option value="username">Username Only</option>
<option value="email">Email Only</option>
<option value="username-email">[[admin/settings/user:allow-login-with.username-email]]</option>
<option value="username">[[admin/settings/user:allow-login-with.username]]</option>
<option value="email">[[admin/settings/user:allow-login-with.email]]</option>
</select>
</div>
</form>
@ -37,37 +37,37 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Account Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/user:account-settings]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="username:disableEdit">
<span class="mdl-switch__label"><strong>Disable username changes</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:disable-username-changes]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="email:disableEdit">
<span class="mdl-switch__label"><strong>Disable email changes</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:disable-email-changes]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="password:disableEdit">
<span class="mdl-switch__label"><strong>Disable password changes</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:disable-password-changes]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="allowAccountDelete" checked>
<span class="mdl-switch__label"><strong>Allow account deletion</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:allow-account-deletion]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="privateUserInfo">
<span class="mdl-switch__label"><strong>Make user info private</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:user-info-private]]</strong></span>
</label>
</div>
</form>
@ -75,13 +75,13 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Themes</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/user:themes]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="disableCustomUserSkins">
<span class="mdl-switch__label"><strong>Prevent users from choosing a custom skin</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:disable-user-skins]]</strong></span>
</label>
</div>
</form>
@ -89,26 +89,26 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Account Protection</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/user:account-protection]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label for="loginAttempts">Login attempts per hour</label>
<label for="loginAttempts">[[admin/settings/user:login-attempts]]</label>
<input id="loginAttempts" type="text" class="form-control" data-field="loginAttempts" placeholder="5" />
<p class="help-block">
If login attempts to a user&apos;s account exceeds this threshold, that account will be locked for a pre-configured amount of time
[[admin/settings/user:login-attempts-help]]
</p>
</div>
<div class="form-group">
<label for="lockoutDuration">Account Lockout Duration (minutes)</label>
<label for="lockoutDuration">[[admin/settings/user:lockout-duration]]</label>
<input id="lockoutDuration" type="text" class="form-control" data-field="lockoutDuration" placeholder="60" />
</div>
<div class="form-group">
<label>Days to remember user login sessions</label>
<label>[[admin/settings/user:login-days]]</label>
<input type="text" class="form-control" data-field="loginDays" placeholder="14" />
</div>
<div class="form-group">
<label>Force password reset after a set number of days</label>
<label>[[admin/settings/user:password-expiry-days]]</label>
<input type="text" class="form-control" data-field="passwordExpiryDays" placeholder="0" />
</div>
</form>
@ -116,54 +116,48 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">User Registration</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/user:registration]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label>Registration Type</label>
<label>[[admin/settings/user:registration-type]]</label>
<select class="form-control" data-field="registrationType">
<option value="normal">Normal</option>
<option value="admin-approval">Admin Approval</option>
<option value="admin-approval-ip">Admin Approval for IPs</option>
<option value="invite-only">Invite Only</option>
<option value="admin-invite-only">Admin Invite Only</option>
<option value="disabled">No registration</option>
<option value="normal">[[admin/settings/user:registration-type.normal]]</option>
<option value="admin-approval">[[admin/settings/user:registration-type.admin-approval]]</option>
<option value="admin-approval-ip">[[admin/settings/user:registration-type.admin-approval-ip]]</option>
<option value="invite-only">[[admin/settings/user:registration-type.invite-only]]</option>
<option value="admin-invite-only">[[admin/settings/user:registration-type.admin-invite-only]]</option>
<option value="disabled">[[admin/settings/user:registration-type.disabled]]</option>
</select>
<p class="help-block">
Normal - Users can register from the /register page.<br/>
Admin Approval - User registrations are placed in an <a href="{config.relative_path}/admin/manage/registration">approval queue</a> for administrators.<br/>
Admin Approval for IPs - Normal for new users, Admin Approval for IP addresses that already have an account.<br/>
Invite Only - Users can invite others from the <a href="{config.relative_path}/users" target="_blank">users</a> page.<br/>
Admin Invite Only - Only administrators can invite others from <a href="{config.relative_path}/users" target="_blank">users</a> and <a href="{config.relative_path}/admin/manage/users">admin/manage/users</a> pages.<br/>
No registration - No user registration.<br/>
[[admin/settings/user:registration-type.help, {config.relative_path}]]
</p>
</div>
<div class="form-group">
<label>Maximum Invitations per User</label>
<label>[[admin/settings/user:max-invites]]</label>
<input type="number" class="form-control" data-field="maximumInvites" placeholder="0">
<p class="help-block">
0 for no restriction. Admins get infinite invitations<br>
Only applicable for "Invite Only"
[[admin/settings/user:max-invites-help]]
</p>
</div>
<div class="form-group">
<label>Minimum Username Length</label>
<label>[[admin/settings/user:min-username-length]]</label>
<input type="text" class="form-control" value="2" data-field="minimumUsernameLength">
</div>
<div class="form-group">
<label>Maximum Username Length</label>
<label>[[admin/settings/user:max-username-length]]</label>
<input type="text" class="form-control" value="16" data-field="maximumUsernameLength">
</div>
<div class="form-group">
<label>Minimum Password Length</label>
<label>[[admin/settings/user:min-password-length]]</label>
<input type="text" class="form-control" value="6" data-field="minimumPasswordLength">
</div>
<div class="form-group">
<label>Maximum About Me Length</label>
<label>[[admin/settings/user:max-about-me-length]]</label>
<input type="text" class="form-control" value="500" data-field="maximumAboutMeLength">
</div>
<div class="form-group">
<label>Forum Terms of Use <small>(Leave blank to disable)</small></label>
<label>[[admin/settings/user:terms-of-use]]</label>
<textarea class="form-control" data-field="termsOfUse"></textarea>
</div>
</form>
@ -171,11 +165,11 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">User Search</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/user:user-search]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="form-group">
<label>Number of results to display</label>
<label>[[admin/settings/user:user-search-results-per-page]]</label>
<input type="text" class="form-control" value="24" data-field="userSearchResultsPerPage">
</div>
@ -184,80 +178,80 @@
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Default User Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/user:default-user-settings]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="showemail">
<span class="mdl-switch__label"><strong>Show email</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:show-email]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="showfullname">
<span class="mdl-switch__label"><strong>Show fullname</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:show-fullname]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="restrictChat">
<span class="mdl-switch__label"><strong>Only allow chat messages from users I follow</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:restrict-chat]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="openOutgoingLinksInNewTab">
<span class="mdl-switch__label"><strong>Open outgoing links in new tab</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:outgoing-new-tab]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="topicSearchEnabled">
<span class="mdl-switch__label"><strong>Enable In-Topic Searching</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:topic-search]]</strong></span>
</label>
</div>
<div class="form-group">
<label>Subscribe to Digest</label>
<label>[[admin/settings/user:digest-freq]]</label>
<select class="form-control" data-field="dailyDigestFreq">
<option value="off">Off</option>
<option value="day">Daily</option>
<option value="week">Weekly</option>
<option value="month">Monthly</option>
<option value="off">[[admin/settings/user:digest-freq.off]]</option>
<option value="day">[[admin/settings/user:digest-freq.daily]]</option>
<option value="week">[[admin/settings/user:digest-freq.weekly]]</option>
<option value="month">[[admin/settings/user:digest-freq.monthly]]</option>
</select>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="sendChatNotifications">
<span class="mdl-switch__label"><strong>Send an email if a new chat message arrives and I am not online</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:email-chat-notifs]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="sendPostNotifications">
<span class="mdl-switch__label"><strong>Send an email when replies are made to topics I am subscribed to</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:email-post-notif]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="followTopicsOnCreate">
<span class="mdl-switch__label"><strong>Follow topics you create</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:follow-created-topics]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="followTopicsOnReply">
<span class="mdl-switch__label"><strong>Follow topics that you reply to</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/user:follow-replied-topics]]</strong></span>
</label>
</div>
@ -265,4 +259,4 @@
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->

@ -1,46 +1,46 @@
<!-- IMPORT admin/settings/header.tpl -->
<!-- IMPORT admin/partials/settings/header.tpl -->
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Crawlability Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/web-crawler:crawlability-settings]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<strong>Custom Robots.txt <small>Leave blank for default</small></strong><br />
<strong>[[admin/settings/web-crawler:robots-txt]]</strong><br />
<textarea class="form-control" data-field="robots.txt"></textarea>
</form>
</div>
</div>
<div class="row">
<div class="col-sm-2 col-xs-12 settings-header">Sitemap & Feed Settings</div>
<div class="col-sm-2 col-xs-12 settings-header">[[admin/settings/web-crawler:sitemap-feed-settings]]</div>
<div class="col-sm-10 col-xs-12">
<form>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="feeds:disableRSS">
<span class="mdl-switch__label"><strong>Disable RSS Feeds</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/web-crawler:disable-rss-feeds]]</strong></span>
</label>
</div>
<div class="checkbox">
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input class="mdl-switch__input" type="checkbox" data-field="feeds:disableSitemap">
<span class="mdl-switch__label"><strong>Disable Sitemap.xml</strong></span>
<span class="mdl-switch__label"><strong>[[admin/settings/web-crawler:disable-sitemap-xml]]</strong></span>
</label>
</div>
<div class="form-group">
<label>Number of Topics to display in the Sitemap</label>
<label>[[admin/settings/web-crawler:sitemap-topics]]</label>
<input class="form-control" type="text" data-field="sitemapTopics" />
</div>
<br />
<p>
<button id="clear-sitemap-cache" class="btn btn-warning">Clear Sitemap Cache</button>
<a href="/sitemap.xml" target="_blank" class="btn btn-link">View Sitemap</a>
<button id="clear-sitemap-cache" class="btn btn-warning">[[admin/settings/web-crawler:clear-sitemap-cache]]</button>
<a href="/sitemap.xml" target="_blank" class="btn btn-link">[[admin/settings/web-crawler:view-sitemap]]</a>
</p>
</form>
</div>
</div>
<!-- IMPORT admin/settings/footer.tpl -->
<!-- IMPORT admin/partials/settings/footer.tpl -->
Loading…
Cancel
Save