Merge branch 'master' of https://github.com/NodeBB/NodeBB
commit
6abb0ff4c8
@ -0,0 +1,4 @@
|
||||
<div class="alert alert-danger">
|
||||
<strong>[[global:403.title]]</strong>
|
||||
<p>[[global:403.message]]</p>
|
||||
</div>
|
@ -0,0 +1,4 @@
|
||||
<div class="alert alert-danger">
|
||||
<strong>[[global:404.title]]</strong>
|
||||
<p>[[global:404.message]]</p>
|
||||
</div>
|
@ -0,0 +1,5 @@
|
||||
<div class="alert alert-danger">
|
||||
<strong>[[global:500.title]]</strong>
|
||||
<p>[[global:500.message]]</p>
|
||||
<!-- IF errorMessage --><p>{errorMessage}</p><!-- ENDIF errorMessage -->
|
||||
</div>
|
@ -0,0 +1,148 @@
|
||||
|
||||
<div class="categories">
|
||||
<h1><i class="fa fa-folder"></i> Categories
|
||||
<div class="pull-right">
|
||||
<button class="btn btn-default" id="revertChanges">Revert Changes</button>
|
||||
<button class="btn btn-primary" id="addNew">New Category</button>
|
||||
</div>
|
||||
</h1>
|
||||
<hr />
|
||||
<ul class="nav nav-pills">
|
||||
<li class='active'><a href='/admin/categories/active'>Active</a></li>
|
||||
<li class=''><a href='/admin/categories/disabled'>Disabled</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="row admin-categories">
|
||||
<ul class="col-md-12" id="entry-container">
|
||||
<!-- BEGIN categories -->
|
||||
<li data-cid="{categories.cid}" class="entry-row">
|
||||
<div class="well">
|
||||
<form class="form">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 hidden-xs text-center">
|
||||
<div class="preview-box" style="
|
||||
<!-- IF categories.backgroundImage -->background-image: url({categories.backgroundImage});<!-- ENDIF categories.backgroundImage -->
|
||||
<!-- IF categories.bgColor -->background-color: {categories.bgColor};<!-- ENDIF categories.bgColor -->
|
||||
color: {categories.color};
|
||||
background-size:cover;
|
||||
">
|
||||
<div class="icon">
|
||||
<i data-name="icon" value="{categories.icon}" class="fa {categories.icon} fa-2x"></i>
|
||||
</div>
|
||||
</div><br />
|
||||
<button type="button" data-name="image" data-value="{categories.image}" class="btn btn-default upload-button"><i class="fa fa-upload"></i> Image</button>
|
||||
<!-- IF categories.image -->
|
||||
<br/>
|
||||
<small class="pointer delete-image"><i data-name="icon" value="fa-times" class="fa fa-times"></i> Delete Image</small>
|
||||
<!-- ENDIF categories.image -->
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<div class="pull-right text-right">
|
||||
<div class="form-group">
|
||||
<div class="dropdown">
|
||||
<button type="button" class="btn btn-default" data-toggle="dropdown"><i class="fa fa-cogs"></i> Options</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li class="permissions"><a href="#"><i class="fa fa-ban"></i> Access Control</a></li>
|
||||
<hr />
|
||||
<li data-disabled="{categories.disabled}">
|
||||
<!-- IF categories.disabled -->
|
||||
<a href="#"><i class="fa fa-power-off"></i> Enable</a>
|
||||
<!-- ELSE -->
|
||||
<a href="#"><i class="fa fa-power-off"></i> Disable</a>
|
||||
<!-- ENDIF categories.disabled -->
|
||||
</li>
|
||||
<li><a href="#" class="purge"><i class="fa fa-eraser"></i> Purge</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<button class="btn btn-primary save">Save</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h3 data-edit-target="#cid-{categories.cid}-name"><span>{categories.name}</span> <small><i class="fa fa-edit"></i></small></h3>
|
||||
<input id="cid-{categories.cid}-name" type="text" class="form-control hide" placeholder="Category Name" data-name="name" value="{categories.name}" />
|
||||
<h4 data-edit-target="#cid-{categories.cid}-description"><span>{categories.description}</span> <small><i class="fa fa-edit"></i></small></h4>
|
||||
<input id="cid-{categories.cid}-description" data-name="description" placeholder="Category Description" value="{categories.description}" class="form-control category_description input-sm description hide"></input>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{categories.cid}-parentCid">Parent Category</label>
|
||||
<!-- IF categories.parent.name -->
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default" data-action="setParent" data-parentCid="{categories.parent.cid}"><i class="fa {categories.parent.icon}"></i> {categories.parent.name}</button>
|
||||
<button type="button" class="btn btn-warning" data-action="removeParent" data-parentCid="{categories.parent.cid}"><i class="fa fa-times"></i></button>
|
||||
</div>
|
||||
<!-- ELSE -->
|
||||
<button type="button" class="btn btn-default form-control" data-action="setParent"><i class="fa fa-sitemap"></i> (None)</button>
|
||||
<!-- ENDIF categories.parent.name -->
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{categories.cid}-bgColor">Background Colour</label>
|
||||
<input id="cid-{categories.cid}-bgColor" placeholder="#0059b2" data-name="bgColor" value="{categories.bgColor}" class="form-control category_bgColor" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{categories.cid}-color">Text Colour</label>
|
||||
<input id="cid-{categories.cid}-color" placeholder="#fff" data-name="color" value="{categories.color}" class="form-control category_color" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{categories.cid}-imageClass">Image Class</label>
|
||||
<select id="cid-{categories.cid}-imageClass" class="form-control" data-name="imageClass" data-value="{categories.imageClass}">
|
||||
<option value="auto">auto</option>
|
||||
<option value="cover">cover</option>
|
||||
<option value="contain">contain</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{categories.cid}-class">Custom Class</label>
|
||||
<input id="cid-{categories.cid}-class" type="text" class="form-control" placeholder="col-md-6 col-xs-6" data-name="class" value="{categories.class}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{categories.cid}-numRecentReplies"># of Recent Replies Displayed</label>
|
||||
<input id="cid-{categories.cid}-numRecentReplies" type="text" class="form-control" placeholder="2" data-name="numRecentReplies" value="{categories.numRecentReplies}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{categories.cid}-link">External Link</label>
|
||||
<input id="cid-{categories.cid}-link" type="text" class="form-control" placeholder="http://domain.com" data-name="link" value="{categories.link}" />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<input type="hidden" data-name="order" data-value="{categories.order}"></input>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</li>
|
||||
<!-- END categories -->
|
||||
</ul>
|
||||
</div>
|
||||
<span class="hidden" id="csrf" data-csrf="{csrf}"></span>
|
||||
|
||||
<!-- IMPORT partials/admin/categories/new.tpl -->
|
||||
<!-- IMPORT partials/admin/categories/permissions.tpl -->
|
||||
<!-- IMPORT partials/admin/categories/setParent.tpl -->
|
||||
<div id="icons" style="display:none;">
|
||||
<div class="icon-container">
|
||||
<div class="row fa-icons">
|
||||
<i class="fa fa-doesnt-exist"></i>
|
||||
<!-- IMPORT partials/fontawesome.tpl -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,54 @@
|
||||
|
||||
|
||||
<!-- IF redis -->
|
||||
<h1><i class="fa fa-hdd-o"></i> Redis</h1>
|
||||
<hr />
|
||||
<div id="admin-redis-info">
|
||||
<span>Redis Version</span> <span class="text-right">{redis_version}</span><br/>
|
||||
<hr/>
|
||||
<span>Uptime in Seconds</span> <span class="text-right formatted-number">{uptime_in_seconds}</span><br/>
|
||||
<span>Uptime in Days</span> <span class="text-right">{uptime_in_days}</span><br/>
|
||||
<hr/>
|
||||
<span>Connected Clients</span> <span class="text-right">{connected_clients}</span><br/>
|
||||
<span>Connected Slaves</span> <span class="text-right">{connected_slaves}</span><br/>
|
||||
<span>Blocked Clients</span> <span class="text-right">{blocked_clients}</span><br/>
|
||||
<hr/>
|
||||
|
||||
<span>Used Memory</span> <span class="text-right">{used_memory_human}</span><br/>
|
||||
<span>Memory Fragmentation Ratio</span> <span class="text-right">{mem_fragmentation_ratio}</span><br/>
|
||||
<hr/>
|
||||
<span>Total Connections Received</span> <span class="text-right formatted-number">{total_connections_received}</span><br/>
|
||||
<span>Total Commands Processed</span> <span class="text-right formatted-number">{total_commands_processed}</span><br/>
|
||||
<span>Instantaneous Ops. Per Second</span> <span class="text-right formatted-number">{instantaneous_ops_per_sec}</span><br/>
|
||||
<hr/>
|
||||
<span>Keyspace Hits</span> <span class="text-right formatted-number">{keyspace_hits}</span><br/>
|
||||
<span>Keyspace Misses</span> <span class="text-right formatted-number">{keyspace_misses}</span><br/>
|
||||
</div>
|
||||
<hr />
|
||||
<h3>Raw Info </h3>
|
||||
<div class="highlight">
|
||||
<pre>{raw}</pre>
|
||||
</div>
|
||||
<!-- ENDIF redis -->
|
||||
|
||||
<!-- IF mongo -->
|
||||
<h1><i class="fa fa-hdd-o"></i> Mongo</h1>
|
||||
<hr />
|
||||
<div id="admin-redis-info">
|
||||
|
||||
<span>Collections</span> <span class="text-right formatted-number">{collections}</span><br/>
|
||||
<span>Objects</span> <span class="text-right formatted-number">{objects}</span><br/>
|
||||
<span>Avg. Object Size</span> <span class="text-right">{avgObjSize} kb</span><br/>
|
||||
<hr/>
|
||||
<span>Data Size</span> <span class="text-right">{dataSize} mb</span><br/>
|
||||
<span>Storage Size</span> <span class="text-right">{storageSize} mb</span><br/>
|
||||
<span>Index Size</span> <span class="text-right">{indexSize} mb</span><br/>
|
||||
<span>File Size</span> <span class="text-right">{fileSize} mb</span><br/>
|
||||
|
||||
</div>
|
||||
<hr />
|
||||
<h3>Raw Info </h3>
|
||||
<div class="highlight">
|
||||
<pre>{raw}</pre>
|
||||
</div>
|
||||
<!-- ENDIF mongo -->
|
@ -0,0 +1,5 @@
|
||||
<h1><i class="fa fa-calendar-o"></i> Events</h1>
|
||||
|
||||
<pre>
|
||||
{eventdata}
|
||||
</pre>
|
@ -0,0 +1,130 @@
|
||||
<h1><i class="fa fa-group"></i> Groups</h1>
|
||||
|
||||
<div>
|
||||
<button class="btn btn-primary" id="create">New Group</button>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="groups">
|
||||
<ul id="groups-list">
|
||||
<!-- BEGIN groups -->
|
||||
<li data-groupname="{groups.name}">
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<h2>
|
||||
{groups.name}
|
||||
<!-- IF groups.system -->
|
||||
<span class="badge">System Group</span>
|
||||
<!-- ENDIF groups.system -->
|
||||
</h2>
|
||||
<p>{groups.description}</p>
|
||||
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-default" data-action="members">Edit</button>
|
||||
<!-- IF groups.deletable -->
|
||||
<button class="btn btn-danger" data-action="delete">Delete Group</button>
|
||||
<!-- ENDIF groups.deletable -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<ul class="pull-right members">
|
||||
<!-- BEGIN members --><li data-uid="{groups.members.uid}" data-toggle="tooltip" title="{groups.members.username}"><img src="{groups.members.picture}" /></li><!-- END members -->
|
||||
<!-- IF groups.truncated --><li data-toggle="tooltip" title="Total: {groups.memberCount}" class="more"><i class="fa fa-users fa-2x"></i></li><!-- ENDIF groups.truncated -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<!-- END groups -->
|
||||
</ul>
|
||||
|
||||
<div class="modal fade" id="create-modal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Create Group</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert alert-danger hide" id="create-modal-error"></div>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="group-name">Group Name</label>
|
||||
<input type="text" class="form-control" id="create-group-name" placeholder="Group Name" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="group-name">Description</label>
|
||||
<input type="text" class="form-control" id="create-group-desc" placeholder="A short description about your group" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-primary" id="create-modal-go">Create</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="group-details-modal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Manage Group</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert alert-danger hide" id="create-modal-error"></div>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="change-group-name">Group Name</label>
|
||||
<input type="text" class="form-control" id="change-group-name" placeholder="Group Name" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="change-group-desc">Description</label>
|
||||
<input type="text" class="form-control" id="change-group-desc" placeholder="A short description about your group" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="change-group-user-title">Title of Members</label>
|
||||
<input type="text" class="form-control" id="change-group-user-title" placeholder="The title of users if they are a member of this group" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="change-group-icon">Group Icon</label><br/>
|
||||
<i id="group-icon" class="fa fa-shield fa-2x"></i>
|
||||
<button type="button" class="btn btn-default btn-sm" id="change-group-icon" placeholder="">Change Icon</button>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="change-group-label-color">Group Label Color</label>
|
||||
<span id="group-label-preview" class="label label-default"></span>
|
||||
<input id="change-group-label-color" placeholder="#0059b2" data-name="bgColor" value="" class="form-control" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Members</label>
|
||||
<p>Click on a user to remove them from the group</p>
|
||||
<ul class="members current_members" id="group-details-members"></ul>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="add-member">Add User to Group</label>
|
||||
<input type="text" class="form-control" id="group-details-search" placeholder="Search Users" />
|
||||
<ul class="members" id="group-details-search-results"></ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" id="details-modal-save" data-dismiss="modal">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" template-variable="yourid" value="{yourid}" />
|
||||
|
||||
<div id="icons" style="display:none;">
|
||||
<div class="icon-container">
|
||||
<div class="row fa-icons">
|
||||
<i class="fa fa-doesnt-exist"></i>
|
||||
<!-- IMPORT partials/fontawesome.tpl -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,145 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>NodeBB Administration Panel</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" href="{relative_path}/vendor/jquery/css/smoothness/jquery-ui-1.10.4.custom.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="{relative_path}/vendor/colorpicker/colorpicker.css">
|
||||
<link rel="stylesheet" type="text/css" href="{relative_path}/stylesheet.css?{cache-buster}" />
|
||||
|
||||
<script>
|
||||
var RELATIVE_PATH = "{relative_path}";
|
||||
</script>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/es5-shim/2.3.0/es5-shim.min.js"></script>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.js"></script>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js"></script>
|
||||
<script>__lt_ie_9__ = 1;</script>
|
||||
<![endif]-->
|
||||
|
||||
<script src="{relative_path}/socket.io/socket.io.js"></script>
|
||||
<script src="{relative_path}/nodebb.min.js"></script>
|
||||
<script src="{relative_path}/vendor/colorpicker/colorpicker.js"></script>
|
||||
<script src="{relative_path}/vendor/tabIndent/tabIndent.js"></script>
|
||||
<script src="{relative_path}/src/admin.js?{cache-buster}"></script>
|
||||
|
||||
<script>
|
||||
require.config({
|
||||
baseUrl: "{relative_path}/src/modules",
|
||||
waitSeconds: 3,
|
||||
urlArgs: "{cache-buster}",
|
||||
paths: {
|
||||
'forum': '../forum',
|
||||
'vendor': '../../vendor',
|
||||
'buzz': '../../vendor/buzz/buzz.min'
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- BEGIN scripts -->
|
||||
<script type="text/javascript" src="{scripts.src}"></script>
|
||||
<!-- END scripts -->
|
||||
</head>
|
||||
|
||||
<body class="admin">
|
||||
<div class="navbar navbar-inverse navbar-fixed-top header">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="{relative_path}/admin/index">NodeBB ACP</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li>
|
||||
<a href="{relative_path}/admin/index"><i class="fa fa-home" title="Home"></i><span class="visible-xs-inline"> Home</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{relative_path}/admin/settings"><i class="fa fa-cogs" title="Settings"></i><span class="visible-xs-inline"> Settings</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{relative_path}/" target="_top"><i class="fa fa-book" title="Forum"></i><span class="visible-xs-inline"> Forum</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" id="reconnect"></a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul id="logged-in-menu" class="nav navbar-nav navbar-right">
|
||||
<li id="user_label" class="dropdown">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="user_dropdown">
|
||||
<img src="{userpicture}"/>
|
||||
</a>
|
||||
<ul id="user-control-list" class="dropdown-menu" aria-labelledby="user_dropdown">
|
||||
<li>
|
||||
<a id="user-profile-link" href="{relative_path}/user/{userslug}" target="_top"><span>Profile</span></a>
|
||||
</li>
|
||||
<li id="logout-link">
|
||||
<a href="#">Log out</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="well sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header">NodeBB</li>
|
||||
<li class="active"><a href="{relative_path}/admin/index"><i class="fa fa-fw fa-home"></i> Home</a></li>
|
||||
<li><a href="{relative_path}/admin/categories/active"><i class="fa fa-fw fa-folder"></i> Categories</a></li>
|
||||
<li><a href="{relative_path}/admin/tags"><i class="fa fa-fw fa-tags"></i> Tags</a></li>
|
||||
<li><a href="{relative_path}/admin/users/latest"><i class="fa fa-fw fa-user"></i> Users</a></li>
|
||||
<li><a href="{relative_path}/admin/groups"><i class="fa fa-fw fa-group"></i> Groups</a></li>
|
||||
<li><a href="{relative_path}/admin/settings"><i class="fa fa-fw fa-cogs"></i> General Settings</a></li>
|
||||
<li><a href="{relative_path}/admin/themes"><i class="fa fa-fw fa-th"></i> Themes</a></li>
|
||||
<li><a href="{relative_path}/admin/plugins"><i class="fa fa-fw fa-code-fork"></i> Plugins</a></li>
|
||||
<li><a href="{relative_path}/admin/languages"><i class="fa fa-fw fa-language"></i> Languages</a></li>
|
||||
<li><a href="{relative_path}/admin/sounds"><i class="fa fa-fw fa-volume-up"></i> Sounds</a></li>
|
||||
<li><a href="{relative_path}/admin/database"><i class="fa fa-fw fa-hdd-o"></i> Database</a></li>
|
||||
<li><a href="{relative_path}/admin/events"><i class="fa fa-fw fa-calendar-o"></i> Events</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- IF authentication.length -->
|
||||
<div class="well sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header">Social Authentication</li>
|
||||
<!-- BEGIN authentication -->
|
||||
<li>
|
||||
<a href="{relative_path}/admin{authentication.route}"><i class="fa fa-fw {authentication.icon}"></i> {authentication.name}</a>
|
||||
</li>
|
||||
<!-- END authentication -->
|
||||
</ul>
|
||||
</div>
|
||||
<!-- ENDIF authentication.length -->
|
||||
<div class="well sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header">Plugins</li>
|
||||
<!-- BEGIN plugins -->
|
||||
<li>
|
||||
<a href="{relative_path}/admin{plugins.route}"><i class="fa fa-fw {plugins.icon}"></i> {plugins.name}</a>
|
||||
</li>
|
||||
<!-- END plugins -->
|
||||
</ul>
|
||||
</div>
|
||||
<!-- IF env -->
|
||||
<div class="well sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header">Development</li>
|
||||
<li><a href="{relative_path}/admin/logger"><i class="fa fa-fw fa-th"></i> Logger</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- ENDIF env -->
|
||||
</div><!--/span-->
|
||||
|
||||
<div class="col-sm-9" id="content">
|
@ -0,0 +1,95 @@
|
||||
<div class="col-sm-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Welcome to NodeBB</div>
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
<a target="_blank" href="http://community.nodebb.org" class="btn btn-default btn-sm"><i class="fa fa-comment"></i> NodeBB Community Forum</a>
|
||||
<a target="_blank" href="http://community.nodebb.org/" class="btn btn-default btn-sm"><i class="fa fa-github-alt"></i> Get Plugins and Themes</a>
|
||||
<a target="_blank" href="http://www.twitter.com/NodeBB" class="btn btn-default btn-sm"><i class="fa fa-twitter"></i> Follow @NodeBB</a>
|
||||
<a target="_blank" href="https://docs.nodebb.org/en/latest" class="btn btn-default btn-sm"><i class="fa fa-question-circle"></i> NodeBB Documentation</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Notices</div>
|
||||
<div class="panel-body">
|
||||
<!-- BEGIN notices -->
|
||||
<div>
|
||||
<!-- IF notices.done --><i class="fa fa-fw fa-check text-success"></i> {notices.doneText}<!-- ELSE --><i class="fa fa-fw fa-times text-danger"></i> {notices.notDoneText}<!-- ENDIF notices.done -->
|
||||
</div>
|
||||
<!-- END notices -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Pageviews</div>
|
||||
<div class="panel-body">
|
||||
<div class="col-xs-6 text-center">
|
||||
<h3>Monthly<br /><small>{pageviews.monthly}</small></h3>
|
||||
</div>
|
||||
<div class="col-xs-6 text-center">
|
||||
<h3>Daily<br /><small>{pageviews.daily}</small></h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- BEGIN stats -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">{stats.name}</div>
|
||||
<div class="panel-body">
|
||||
<div id="unique-visitors">
|
||||
<div class="text-center pull-left">
|
||||
<div>{stats.day}</div>
|
||||
<div>Day</div>
|
||||
</div>
|
||||
<div class="text-center pull-left">
|
||||
<div>{stats.week}</div>
|
||||
<div>Week</div>
|
||||
</div>
|
||||
<div class="text-center pull-left">
|
||||
<div>{stats.month}</div>
|
||||
<div>Month</div>
|
||||
</div>
|
||||
<div class="text-center pull-left">
|
||||
<div>{stats.alltime}</div>
|
||||
<div>All Time</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END stats -->
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-sm-6 pull-right">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Updates</div>
|
||||
<div class="panel-body">
|
||||
<div class="alert alert-info version-check">
|
||||
<p>You are running <strong>NodeBB v<span id="version">{version}</span></strong>.</p>
|
||||
</div>
|
||||
<p>
|
||||
Always make sure that your NodeBB is up to date for the latest security patches and bug fixes.
|
||||
</p>
|
||||
<p class="text-center">
|
||||
<button class="btn btn-warning reload">Reload</button>
|
||||
<button class="btn btn-danger restart">Restart</button>
|
||||
</p>
|
||||
<p class="help-block text-center">
|
||||
Restarting your NodeBB will drop all existing connections. A reload is lighter and is probably
|
||||
what you want 99% of the time.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Active Users</div>
|
||||
<div class="panel-body">
|
||||
<div id="active_users"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
@ -0,0 +1,27 @@
|
||||
|
||||
<div class="languages">
|
||||
<h1><i class="fa fa-language"></i> Languages</h1>
|
||||
<hr />
|
||||
<p>
|
||||
The following setting(s) determine the language settings for your NodeBB.
|
||||
The default language determines the language settings for all users who
|
||||
are visiting your NodeBB. <!-- Keep in mind that individual users may decide
|
||||
to switch languages for their own accounts. -->
|
||||
</p>
|
||||
|
||||
<form class="row">
|
||||
<div class="form-group col-sm-6">
|
||||
<label for="defaultLang">Default Language</label>
|
||||
<select id="language" data-field="defaultLang" class="form-control">
|
||||
<!-- BEGIN languages -->
|
||||
<option value="{languages.code}">{languages.name} ({languages.code})</option>
|
||||
<!-- END languages -->
|
||||
</select>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary" id="save">Save</button>
|
||||
<script type="text/javascript">
|
||||
$('#language').val(translator.getLanguage());
|
||||
</script>
|
@ -0,0 +1,46 @@
|
||||
<h1><i class="fa fa-th"></i> Logger</h1>
|
||||
<hr />
|
||||
|
||||
<h3>Logger Settings</h3>
|
||||
<div class="alert alert-warning">
|
||||
|
||||
<p>
|
||||
By enabling the check boxes, you will receive logs to your terminal. If you specify a path, logs will then be saved to a file instead. HTTP logging is useful for collecting statistics about who, when, and what people access on your forum. In addition to logging HTTP requests, we can also log socket.io events. Socket.io logging, in combination with redis-cli monitor, can be very helpful for learning NodeBB's internals.
|
||||
</p>
|
||||
<br/>
|
||||
<p>
|
||||
Simply check/uncheck the logging settings to enable or disable logging on the fly. No restart needed.
|
||||
</p>
|
||||
<br/>
|
||||
|
||||
<form>
|
||||
|
||||
<label>
|
||||
<input type="checkbox" data-field="loggerStatus"> <strong>Enable HTTP logging</strong>
|
||||
</label>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<label>
|
||||
<input type="checkbox" data-field="loggerIOStatus"> <strong>Enable socket.io event logging</strong>
|
||||
</label>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
<label>Path to log file</label>
|
||||
<input class="form-control" type="text" placeholder="/path/to/log/file.log ::: leave blank to log to your terminal" data-field="loggerPath" />
|
||||
<br />
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary" id="save">Save</button>
|
||||
|
||||
<script>
|
||||
require(['forum/admin/settings'], function(Settings) {
|
||||
Settings.prepare();
|
||||
});
|
||||
</script>
|
@ -0,0 +1,42 @@
|
||||
<h1><i class="fa fa-code-fork"></i> Plugins</h1>
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<strong>Interested in writing plugins for NodeBB?</strong>
|
||||
</p>
|
||||
<p>
|
||||
Full documentation regarding plugin authoring can be found in the <a target="_blank" href="https://docs.nodebb.org/en/latest/plugins/create.html">NodeBB Wiki</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<input class="form-control" type="text" id="plugin-search" placeholder="Search plugins"/>
|
||||
<br/>
|
||||
|
||||
<ul class="plugins">
|
||||
<!-- BEGIN plugins -->
|
||||
<li data-plugin-id="{plugins.id}" class="clearfix">
|
||||
<div class="pull-right">
|
||||
|
||||
<button data-action="toggleActive" class="btn <!-- IF plugins.active --> btn-warning<!-- ELSE --> btn-success<!-- ENDIF plugins.active --><!-- IF !plugins.installed --> hide<!-- ENDIF !plugins.installed -->"><i class="fa fa-power-off"></i> <!-- IF plugins.active -->Deactivate<!-- ELSE -->Activate<!-- ENDIF plugins.active --></button>
|
||||
|
||||
|
||||
<!-- IF plugins.installed -->
|
||||
<button data-action="toggleInstall" class="btn btn-danger"><i class="fa fa-trash-o"></i> Uninstall</button>
|
||||
<!-- ELSE -->
|
||||
<button data-action="toggleInstall" class="btn btn-success"><i class="fa fa-download"></i> Install</button>
|
||||
<!-- ENDIF plugins.installed -->
|
||||
</div>
|
||||
|
||||
<h2><strong>{plugins.name}</strong></h2>
|
||||
|
||||
<!-- IF plugins.description -->
|
||||
<p>{plugins.description}</p>
|
||||
<!-- ENDIF plugins.description -->
|
||||
<!-- IF plugins.url -->
|
||||
<p>For more information: <a href="{plugins.url}">{plugins.url}</a></p>
|
||||
<!-- ENDIF plugins.url -->
|
||||
</li>
|
||||
<!-- END plugins -->
|
||||
</ul>
|
||||
|
||||
|
@ -0,0 +1,73 @@
|
||||
<h1><i class="fa fa-cogs"></i> Settings</h1>
|
||||
<hr />
|
||||
|
||||
<ul id="settings-tab" class="nav nav-tabs">
|
||||
<li class="active"><a href="#general" data-toggle="tab">General</a></li>
|
||||
<li><a href="#reputation" data-toggle="tab">Reputation</a></li>
|
||||
<li><a href="#email" data-toggle="tab">Email</a></li>
|
||||
<li><a href="#user" data-toggle="tab">User</a></li>
|
||||
<li><a href="#post" data-toggle="tab">Post</a></li>
|
||||
<li><a href="#pagination" data-toggle="tab">Pagination</a></li>
|
||||
<li><a href="#tags" data-toggle="tab">Tags</a></li>
|
||||
<li><a href="#web-crawler" data-toggle="tab">Web Crawler</a></li>
|
||||
<li><a href="#sockets" data-toggle="tab">Sockets</a></li>
|
||||
<li><a href="#advanced" data-toggle="tab">Advanced</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<!-- IMPORT admin/settings/general.tpl -->
|
||||
<!-- IMPORT admin/settings/email.tpl -->
|
||||
<!-- IMPORT admin/settings/user.tpl -->
|
||||
<!-- IMPORT admin/settings/post.tpl -->
|
||||
<!-- IMPORT admin/settings/pagination.tpl -->
|
||||
<!-- IMPORT admin/settings/tags.tpl -->
|
||||
<!-- IMPORT admin/settings/web-crawler.tpl -->
|
||||
<!-- IMPORT admin/settings/sockets.tpl -->
|
||||
<!-- IMPORT admin/settings/advanced.tpl -->
|
||||
|
||||
<!-- This was not moved into a partial because I am removing it soon (@julianlam) -->
|
||||
<!-- ^ Heh, when did I add this... this section is still here apparently. (@julianlam July 2014) -->
|
||||
<div class="tab-pane" id="reputation">
|
||||
<form>
|
||||
<div class="alert alert-warning">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="reputation:disabled"> <strong>Disable Reputation System</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="downvote:disabled"> <strong>Disable Down Voting</trong>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<h3>Privilege Thresholds</h3>
|
||||
<p>Use <strong>privilege thresholds</strong> to manage how much reputation a user must gain to receive moderator access.</p><br />
|
||||
<strong>Manage Thread</strong><br /> <input type="text" class="form-control" value="1000" data-field="privileges:manage_topic"><br />
|
||||
<strong>Manage Content</strong><br /> <input type="text" class="form-control" value="1000" data-field="privileges:manage_content"><br />
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="privileges:disabled"> <strong>Disable Privilege Threshold System</strong>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<h3>Activity Thresholds</h3>
|
||||
<strong>Minimum reputation to downvote posts</strong><br /> <input type="text" class="form-control" data-field="privileges:downvote"><br />
|
||||
<strong>Minimum reputation to flag posts</strong><br /> <input type="text" class="form-control" data-field="privileges:flag"><br />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span class="hidden" id="csrf" data-csrf="{csrf}"></span>
|
||||
<button class="btn btn-primary" id="save">Save</button>
|
||||
|
||||
<script>
|
||||
require(['forum/admin/settings'], function(Settings) {
|
||||
Settings.prepare();
|
||||
});
|
||||
</script>
|
@ -0,0 +1,30 @@
|
||||
<div class="tab-pane active" id="advanced">
|
||||
<div class="alert alert-warning">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="maintenanceMode"> <strong>Maintenance Mode</strong>
|
||||
</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.
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
<div class="alert alert-warning">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="allow-from-uri">Set ALLOW-FROM to Place NodeBB in an iFrame:</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="cookieDomain">Set domain for session cookie</label>
|
||||
<input class="form-control" id="cookieDomain" type="text" placeholder=".domain.tld" data-field="cookieDomain" /><br />
|
||||
<p class="help-block">
|
||||
Leave blank for default
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,29 @@
|
||||
<div class="tab-pane" id="email">
|
||||
<form>
|
||||
<div class="alert alert-warning">
|
||||
<div>
|
||||
<p>
|
||||
Please ensure that you have installed a third-party emailer (e.g. PostageApp, Mailgun, Mandrill, SendGrid, etc), otherwise emails will not be sent by NodeBB
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<label for="email:from"><strong>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>
|
||||
<button class="btn btn-block btn-default" type="button" data-action="email.test">Send Test Email</button>
|
||||
<p class="help-block">
|
||||
The test email will be sent to the currently logged in user's email address.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="alert alert-warning">
|
||||
<div class="checkbox">
|
||||
<label for="disableEmailSubscriptions">
|
||||
<input type="checkbox" id="disableEmailSubscriptions" data-field="disableEmailSubscriptions" name="disableEmailSubscriptions" /> Disable subscriber notification emails
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -0,0 +1,51 @@
|
||||
<div class="tab-pane active" id="general">
|
||||
<div class="alert alert-warning">
|
||||
<form>
|
||||
<label>Site Title</label>
|
||||
<input class="form-control" type="text" placeholder="Your Community Name" data-field="title" />
|
||||
|
||||
<div class="checkbox">
|
||||
<label for="showSiteTitle">
|
||||
<input type="checkbox" id="showSiteTitle" data-field="showSiteTitle" name="showSiteTitle" /> Show Site Title in Header
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<label>Browser Title</label>
|
||||
<input class="form-control" type="text" placeholder="Browser Title" data-field="browserTitle" />
|
||||
<p class="help-block">
|
||||
If no browser title is specified, the site title will be used
|
||||
</p>
|
||||
|
||||
<label>Site Description</label>
|
||||
<input type="text" class="form-control" placeholder="A short description about your community" data-field="description" /><br />
|
||||
|
||||
<label>Site Keywords</label>
|
||||
<input type="text" class="form-control" placeholder="Keywords describing your community, comma-seperated" data-field="keywords" /><br />
|
||||
|
||||
<label>Site Logo</label>
|
||||
<input id="logoUrl" type="text" class="form-control" placeholder="Path to a logo to display on forum header" data-field="brand:logo" /><br />
|
||||
<input data-action="upload" data-target="logoUrl" data-route="{relative_path}/admin/uploadlogo" type="button" class="btn btn-default" value="Upload Logo"></input> <br /> <br/>
|
||||
|
||||
<label>Favicon</label><br />
|
||||
<input id="faviconUrl" type="text" class="form-control" placeholder="favicon.ico" data-field="brand:favicon" /><br />
|
||||
<input data-action="upload" data-target="faviconUrl" data-route="{relative_path}/admin/uploadfavicon" type="button" class="btn btn-default" value="Upload"></input> <br /> <br/>
|
||||
|
||||
<hr/>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowGuestSearching"> <strong>Allow guests to search without logging in</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="useOutgoingLinksPage"> <strong>Use Outgoing Links Warning Page</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="disableSocialButtons"> <strong>Disable social buttons</strong>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,16 @@
|
||||
<div class="tab-pane" id="pagination">
|
||||
<form>
|
||||
<div class="alert alert-warning">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="usePagination"> <strong>Paginate topics and posts instead of using infinite scroll.</strong>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<strong>Topics per Page</strong><br /> <input type="text" class="form-control" value="20" data-field="topicsPerPage"><br />
|
||||
<strong>Posts per Page</strong><br /> <input type="text" class="form-control" value="20" data-field="postsPerPage"><br />
|
||||
<hr/>
|
||||
<strong>Initial Number of Topics to Load (Unread, Recent, Popular etc.)</strong><br /> <input type="text" class="form-control" value="20" data-field="topicsPerList"><br />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -0,0 +1,61 @@
|
||||
<div class="tab-pane" id="post">
|
||||
<form>
|
||||
<div class="alert alert-warning">
|
||||
<div class="form-group">
|
||||
<label>Default Post Sorting</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>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<strong>Seconds between Posts</strong><br /> <input type="text" class="form-control" value="10" data-field="postDelay"><br />
|
||||
<strong>Seconds before new user can post</strong><br /> <input type="text" class="form-control" value="10" data-field="initialPostDelay"><br />
|
||||
<strong>Minimum Title Length</strong><br /> <input type="text" class="form-control" value="3" data-field="minimumTitleLength"><br />
|
||||
<strong>Maximum Title Length</strong><br /> <input type="text" class="form-control" value="255" data-field="maximumTitleLength"><br />
|
||||
<strong>Minimum Post Length</strong><br /> <input type="text" class="form-control" value="8" data-field="minimumPostLength"><br />
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="disableSignatures"> <strong>Disable signatures</strong>
|
||||
</label>
|
||||
</div>
|
||||
<strong>Chat Message Inbox Size</strong><br /> <input type="text" class="form-control" value="250" data-field="chatMessageInboxSize"><br />
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowFileUploads"> <strong>Allow users to upload regular files</strong>
|
||||
</label>
|
||||
</div>
|
||||
<strong>Maximum File Size</strong><br /> <input type="text" class="form-control" value="2048" data-field="maximumFileSize"><br />
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowTopicsThumbnail"> <strong>Allow users to upload topic thumbnails</strong>
|
||||
</label>
|
||||
</div>
|
||||
<strong>Topic Thumb Size</strong><br /> <input type="text" class="form-control" value="120" data-field="topicThumbSize"><br />
|
||||
|
||||
<h3>Composer Settings</h3>
|
||||
<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.
|
||||
</p>
|
||||
<div class="checkbox">
|
||||
<label for="composer:showHelpTab">
|
||||
<input type="checkbox" id="composer:showHelpTab" data-field="composer:showHelpTab" checked />
|
||||
Show "Help" tab
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label for="composer:allowPluginHelp">
|
||||
<input type="checkbox" id="composer:allowPluginHelp" data-field="composer:allowPluginHelp" checked />
|
||||
Allow plugins to add content to the help tab
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="composer:customHelpText">Custom Help Text</label>
|
||||
<textarea class="form-control" id="composer:customHelpText" data-field="composer:customHelpText" rows="5"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -0,0 +1,21 @@
|
||||
<div class="tab-pane" id="sockets">
|
||||
<form>
|
||||
<div class="alert alert-warning">
|
||||
<div class="form-group">
|
||||
<label for="maxReconnectionAttempts">Max Reconnection Attempts</label>
|
||||
<input class="form-control" id="maxReconnectionAttempts" type="text" value="5" data-field="maxReconnectionAttempts" /><br />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="reconnectionDelay">Reconnection Delay</label>
|
||||
<input class="form-control" id="reconnectionDelay" type="text" value="200" data-field="reconnectionDelay" /><br />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="websocketAddress">Websocket Address</label>
|
||||
<input class="form-control" id="websocketAddress" type="text" data-field="websocketAddress" /><br />
|
||||
<p class="help-block">
|
||||
Leave blank if unsure.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -0,0 +1,9 @@
|
||||
<div class="tab-pane" id="tags">
|
||||
<form>
|
||||
<div class="alert alert-warning">
|
||||
<strong>Tags per Topic</strong><br /> <input type="text" class="form-control" value="5" data-field="tagsPerTopic"><br />
|
||||
<strong>Minimum Tag Length</strong><br /> <input type="text" class="form-control" value="3" data-field="minimumTagLength"><br />
|
||||
<strong>Maximum Tag Length</strong><br /> <input type="text" class="form-control" value="15" data-field="maximumTagLength"><br />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -0,0 +1,117 @@
|
||||
<div class="tab-pane" id="user">
|
||||
<form role="form">
|
||||
<div class="alert alert-warning">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowRegistration" checked> <strong>Allow registration</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowLocalLogin" checked> <strong>Allow local login</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowAccountDelete" checked> <strong>Allow account deletion</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="privateUserInfo"> <strong>Make user info private</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="requireEmailConfirmation"> <strong>Require Email Confirmation</strong>
|
||||
</label>
|
||||
</div>
|
||||
<h3>Avatars</h3>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="profile:convertProfileImageToPNG"> <strong>Convert profile image uploads to PNG</strong>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Default Gravatar Image</label>
|
||||
<select class="form-control" data-field="defaultGravatarImage">
|
||||
<option value="">default</option>
|
||||
<option value="identicon">identicon</option>
|
||||
<option value="mm">mystery-man</option>
|
||||
<option value="monsterid">monsterid</option>
|
||||
<option value="wavatar">wavatar</option>
|
||||
<option value="retro">retro</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Custom Gravatar Default Image</label>
|
||||
<input id="customGravatarDefaultImage" type="text" class="form-control" placeholder="A custom image to use instead of gravatar defaults" data-field="customGravatarDefaultImage" /><br />
|
||||
<input data-action="upload" data-target="customGravatarDefaultImage" data-route="{relative_path}/admin/uploadgravatardefault" type="button" class="btn btn-default" value="Upload"></input>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="profileImageDimension">Profile Image Dimension</label>
|
||||
<input id="profileImageDimension" type="text" class="form-control" data-field="profileImageDimension" placeholder="128" />
|
||||
</div>
|
||||
|
||||
|
||||
<h3>Account Protection</h3>
|
||||
<div class="form-group">
|
||||
<label for="loginAttempts">Login attempts per hour</label>
|
||||
<input id="loginAttempts" type="text" class="form-control" data-field="loginAttempts" placeholder="5" />
|
||||
<p class="help-block">
|
||||
If login attempts to a user's account exceeds this threshold, that account will be locked for a pre-configured amount of time
|
||||
</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lockoutDuration">Account Lockout Duration (minutes)</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>
|
||||
<input type="text" class="form-control" data-field="loginDays" placeholder="14" />
|
||||
</div>
|
||||
|
||||
<h3>Other</h3>
|
||||
<div class="form-group">
|
||||
<label>Number of flags to ban user</label>
|
||||
<input type="text" class="form-control" value="3" placeholder="" data-field="flagsForBan" />
|
||||
</div>
|
||||
<hr />
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="autoban:downvote"> <strong>Enable automatic banning for reaching below a reputation threshold</strong>
|
||||
</label>
|
||||
</div>
|
||||
<label>Reputation threshold before receiving an automatic ban</label>
|
||||
<input type="text" class="form-control" value="" placeholder="-50" data-field="autoban:downvote:threshold" />
|
||||
<hr />
|
||||
<div class="form-group">
|
||||
<label>Maximum User Image File Size</label>
|
||||
<input type="text" class="form-control" placeholder="Maximum size of uploaded user images in kilobytes" data-field="maximumProfileImageSize" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Minimum Username Length</label>
|
||||
<input type="text" class="form-control" value="2" data-field="minimumUsernameLength">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Maximum Username Length</label>
|
||||
<input type="text" class="form-control" value="16" data-field="maximumUsernameLength">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Minimum Password Length</label>
|
||||
<input type="text" class="form-control" value="6" data-field="minimumPasswordLength">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Maximum Signature Length</label>
|
||||
<input type="text" class="form-control" value="255" data-field="maximumSignatureLength">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Forum Terms of Use <small>(Leave blank to disable)</small></label>
|
||||
<textarea class="form-control" data-field="termsOfUse"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -0,0 +1,23 @@
|
||||
<div class="tab-pane" id="web-crawler">
|
||||
<form>
|
||||
<div class="alert alert-warning">
|
||||
<strong>Custom Robots.txt <small>Leave blank for default</small></strong><br />
|
||||
<textarea class="form-control" data-field="robots.txt"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-warning">
|
||||
<strong>Feeds</strong>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="feeds:disableRSS"> <strong>Disable RSS Feeds</strong>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="feeds:disableSitemap"> <strong>Disable Sitemap.xml</strong>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
@ -0,0 +1,64 @@
|
||||
|
||||
<div class="sounds">
|
||||
<h1><i class="fa fa-volume-up"></i> Sounds</h1>
|
||||
<hr />
|
||||
<p>
|
||||
Sounds for various actions in NodeBB can be configured here.
|
||||
</p>
|
||||
|
||||
<form role="form">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">General</div>
|
||||
<div class="panel-body">
|
||||
<label for="notification">Notifications</label>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-9">
|
||||
<select class="form-control" id="notification" name="notification">
|
||||
<!-- BEGIN sounds -->
|
||||
<option value="{sounds.name}">{sounds.name}</option>
|
||||
<!-- END sounds -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group col-xs-3">
|
||||
<button type="button" class="form-control btn btn-sm btn-default" data-action="play">Play <i class="fa fa-play"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Chat</div>
|
||||
<div class="panel-body">
|
||||
<label for="chat-incoming">Incoming Message</label>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-9">
|
||||
<select class="form-control" id="chat-incoming" name="chat-incoming">
|
||||
<!-- BEGIN sounds -->
|
||||
<option value="{sounds.name}">{sounds.name}</option>
|
||||
<!-- END sounds -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group col-xs-3">
|
||||
<button type="button" class="form-control btn btn-sm btn-default" data-action="play">Play <i class="fa fa-play"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="chat-outgoing">Outgoing Message</label>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-9">
|
||||
<select class="form-control" id="chat-outgoing" name="chat-outgoing">
|
||||
<!-- BEGIN sounds -->
|
||||
<option value="{sounds.name}">{sounds.name}</option>
|
||||
<!-- END sounds -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group col-xs-3">
|
||||
<button type="button" class="form-control btn btn-sm btn-default" data-action="play">Play <i class="fa fa-play"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary" id="save">Save</button>
|
@ -0,0 +1,38 @@
|
||||
<div class="tags">
|
||||
<!-- IF !tags.length -->
|
||||
<div class="alert alert-warning">
|
||||
<strong>No Tags</strong>
|
||||
</div>
|
||||
<!-- ENDIF !tags.length -->
|
||||
|
||||
<input class="form-control" type="text" id="tag-search" placeholder="Search"/><br/>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="tag-list">
|
||||
<!-- BEGIN tags -->
|
||||
<div class="tag-row col-md-12" data-tag="{tags.value}">
|
||||
<div class="col-sm-5 col-xs-12">
|
||||
<a href="{relative_path}/tags/{tags.value}" data-value="{tags.value}"><span class="tag-item" data-tag="{tags.value}" style="<!-- IF tags.color -->color: {tags.color};<!-- ENDIF tags.color --><!-- IF tags.bgColor -->background-color: {tags.bgColor};<!-- ENDIF tags.bgColor -->">{tags.value}</span><span class="tag-topic-count">{tags.score}</span></a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-3 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="bgColor">Background Colour</label>
|
||||
<input id="bgColor" placeholder="#ffffff" data-name="bgColor" value="{tags.bgColor}" class="form-control category_bgColor" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-3 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="color">Text Colour</label>
|
||||
<input id="color" placeholder="#a2a2a2" data-name="color" value="{tags.color}" class="form-control category_color" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-1 col-xs-12">
|
||||
<button class="btn btn-primary save">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END tags -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,194 @@
|
||||
<h1><i class="fa fa-th"></i> Themes</h1>
|
||||
<hr />
|
||||
|
||||
<div class="themes">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#" data-target="#themes" data-toggle="tab">Themes</a></li>
|
||||
<li><a href="#" data-target="#skins" data-toggle="tab">Skins</a></li>
|
||||
<li><a href="#" data-target="#customise" data-toggle="tab">Customise</a></li>
|
||||
<li><a href="#" data-target="#widgets" data-toggle="tab">Widgets</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="themes">
|
||||
<h3>Installed Themes</h3>
|
||||
<p>
|
||||
The following themes are currently installed in this NodeBB instance.
|
||||
</p>
|
||||
<ul class="directory" id="installed_themes">
|
||||
<li><i class="fa fa-refresh fa-spin"></i> Checking for installed themes...</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tab-pane" id="skins">
|
||||
<h3>Bootswatch Themes</h3>
|
||||
<p>
|
||||
NodeBB's skins are powered by Bootswatch, a repository containing themes built
|
||||
with Bootstrap as a base theme. Currently, the Vanilla base theme is best optimized for use with Bootswatch.
|
||||
</p>
|
||||
<ul class="directory" id="bootstrap_themes">
|
||||
<li><i class="fa fa-refresh fa-spin"></i> Loading Themes</li>
|
||||
</ul>
|
||||
|
||||
<h3>Revert to Default</h3>
|
||||
<p class="alert">
|
||||
<button class="btn btn-warning" id="revert_theme">Revert</button> This will remove any custom theme applied to your NodeBB, and restore the base theme.
|
||||
</p>
|
||||
</div>
|
||||
<div class="tab-pane" id="customise">
|
||||
<h3>Custom CSS</h3>
|
||||
<p>
|
||||
You may also opt to enter your own CSS declarations here, which will be applied after all other styles.
|
||||
</p>
|
||||
<textarea class="well" data-field="customCSS" placeholder="Enter your custom CSS here..."></textarea>
|
||||
|
||||
<form class="form">
|
||||
<div class="form-group">
|
||||
<label for="useCustomCSS">
|
||||
Use Custom CSS?
|
||||
<input id="useCustomCSS" type="checkbox" data-field="useCustomCSS" />
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<h3>Custom JS</h3>
|
||||
<p>
|
||||
You can enter custom JS here, it will be added to the head tag.
|
||||
</p>
|
||||
<textarea class="well" data-field="customJS" placeholder="Enter your custom JS here..."></textarea>
|
||||
|
||||
<form class="form">
|
||||
<div class="form-group">
|
||||
<label for="useCustomJS">
|
||||
Use Custom JS?
|
||||
<input id="useCustomJS" type="checkbox" data-field="useCustomJS" />
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<button class="btn btn-primary" id="save">Save</button>
|
||||
|
||||
<hr />
|
||||
|
||||
<h3>Custom Branding</h3>
|
||||
|
||||
<form id="branding">
|
||||
<!-- BEGIN branding -->
|
||||
<label>{branding.key}:</label>
|
||||
<input type="text" class="form-control branding" data-key="{branding.key}" data-empty="{branding.value}" /><br />
|
||||
<!-- END branding -->
|
||||
</form>
|
||||
|
||||
<button class="btn btn-primary" id="save-branding">Save Branding</button>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane" id="widgets">
|
||||
<h3>Widgets</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-6 pull-right">
|
||||
<ul class="nav nav-pills">
|
||||
<!-- BEGIN templates -->
|
||||
<li class="<!-- IF @first -->active<!-- ENDIF @first -->"><a href="#" data-template="{templates.template}" data-toggle="pill">{templates.template}</a></li>
|
||||
<!-- END templates -->
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<!-- BEGIN templates -->
|
||||
<div class="tab-pane <!-- IF @first -->active<!-- ENDIF @first -->" data-template="{templates.template}">
|
||||
<!-- BEGIN areas -->
|
||||
<div class="area" data-template="{templates.template}" data-location="{templates.areas.location}">
|
||||
<h4>{templates.areas.name} <small>{templates.template} / {templates.areas.location}</small></h4>
|
||||
<div class="well widget-area">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- END areas -->
|
||||
</div>
|
||||
<!-- END templates -->
|
||||
</div>
|
||||
|
||||
<button class="btn btn-success save pull-right">Save</button>
|
||||
</div>
|
||||
<div class="col-xs-6 pull-left">
|
||||
<div class="available-widgets">
|
||||
<h4>Available Widgets <small>Drag and drop widgets into templates</small></h4>
|
||||
<!-- IF !widgets.length -->
|
||||
<div class="alert alert-info">No widgets found! Activate the essential widgets plugin in the <a href="/admin/plugins">plugins</a> control panel.</div>
|
||||
<!-- ENDIF !widgets.length -->
|
||||
<div class="row">
|
||||
<!-- BEGIN widgets -->
|
||||
<div class="col-lg-6 col-md-12">
|
||||
<div data-widget="{widgets.widget}" class="panel panel-default pointer">
|
||||
<div class="panel-heading">
|
||||
<strong>{widgets.name}</strong>
|
||||
<small><br />{widgets.description}</small>
|
||||
</div>
|
||||
<div class="panel-body hidden">
|
||||
<form>
|
||||
{widgets.content}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END widgets -->
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="available-containers">
|
||||
<h4>Available Containers <small>Drag and drop on top of any widget</small></h4>
|
||||
<div class="containers">
|
||||
<div class="pointer" style="padding: 20px; border: 1px dotted #dedede; margin-bottom: 20px;" data-container-html=" ">
|
||||
None
|
||||
</div>
|
||||
<div class="well pointer" data-container-html='<div class="well">{body}</div>'>
|
||||
Well
|
||||
</div>
|
||||
<div class="jumbotron pointer" data-container-html='<div class="jumbotron">{body}</div>'>
|
||||
Jumbotron
|
||||
</div>
|
||||
<div class="panel" data-container-html='<div class="panel"><div class="panel-body">{body}</div></div>'>
|
||||
<div class="panel-body pointer">
|
||||
Panel
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default pointer" data-container-html='<div class="panel panel-default"><div class="panel-heading">{title}</div><div class="panel-body">{body}</div></div>'>
|
||||
<div class="panel-heading">
|
||||
Panel Header
|
||||
<div class="pull-right color-selector">
|
||||
<button data-class="panel-default" class="btn btn-xs"> </button>
|
||||
<button data-class="panel-primary" class="btn btn-xs btn-primary"> </button>
|
||||
<button data-class="panel-success" class="btn btn-xs btn-success"> </button>
|
||||
<button data-class="panel-info" class="btn btn-xs btn-info"> </button>
|
||||
<button data-class="panel-warning" class="btn btn-xs btn-warning"> </button>
|
||||
<button data-class="panel-danger" class="btn btn-xs btn-danger"> </button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
Panel Body
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info pointer" data-container-html='<div class="alert alert-info">{body}</div>'>
|
||||
Alert
|
||||
<div class="pull-right color-selector">
|
||||
<button data-class="alert-success" class="btn btn-xs btn-success"> </button>
|
||||
<button data-class="alert-info" class="btn btn-xs btn-info"> </button>
|
||||
<button data-class="alert-warning" class="btn btn-xs btn-warning"> </button>
|
||||
<button data-class="alert-danger" class="btn btn-xs btn-danger"> </button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var bootswatchListener = function(data) {
|
||||
require(['forum/admin/themes'], function(t) {
|
||||
t.render(data);
|
||||
});
|
||||
}
|
||||
</script>
|
@ -0,0 +1,107 @@
|
||||
<h1><i class="fa fa-user"></i> Users</h1>
|
||||
|
||||
<button id="createUser" class="btn btn-primary">New User</button>
|
||||
<a target="_blank" href="/admin/users/csv" class="btn btn-primary">Download CSV</a>
|
||||
<hr />
|
||||
<ul class="nav nav-pills">
|
||||
<li class='active'><a href='{relative_path}/admin/users/search'>Search</a></li>
|
||||
<li class=''><a href='{relative_path}/admin/users/latest'>Latest Users</a></li>
|
||||
<li class=''><a href='{relative_path}/admin/users/sort-posts'>Top Posters</a></li>
|
||||
<li class=''><a href='{relative_path}/admin/users/sort-reputation'>Most Reputation</a></li>
|
||||
|
||||
|
||||
<div class="btn-group pull-right">
|
||||
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">Edit <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#" class="admin-user"><i class="fa fa-fw fa-shield"></i> Make Admin</a></li>
|
||||
<li><a href="#" class="remove-admin-user"><i class="fa fa-fw fa-ban"></i> Remove Admin</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#" class="ban-user"><i class="fa fa-fw fa-gavel"></i> Ban User</a></li>
|
||||
<li><a href="#" class="unban-user"><i class="fa fa-fw fa-comment-o"></i> Unban User</a></li>
|
||||
<li><a href="#" class="reset-lockout"><i class="fa fa-fw fa-unlock"></i> Reset Lockout</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#" class="delete-user"><i class="fa fa-fw fa-trash-o"></i> Delete User</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
<br />
|
||||
|
||||
<div class="search {search_display} well">
|
||||
<input class="form-control" id="search-user" type="text" placeholder="Enter a username to search"/><br />
|
||||
<i class="fa fa-spinner fa-spin none"></i>
|
||||
<span id="user-notfound-notify" class="label label-danger hide">User not found!</span><br/>
|
||||
</div>
|
||||
|
||||
|
||||
<ul id="users-container" class="users admin">
|
||||
<!-- BEGIN users -->
|
||||
<div class="users-box" data-uid="{users.uid}" data-username="{users.username}">
|
||||
|
||||
<a href="{relative_path}/user/{users.userslug}" target="_blank"><img src="{users.picture}" class="img-thumbnail"/></a>
|
||||
<br/>
|
||||
|
||||
<i class="fa fa-fw fa-square-o select pointer"></i>
|
||||
<a href="{relative_path}/user/{users.userslug}" target="_blank">{users.username}</a>
|
||||
<br/>
|
||||
|
||||
<div title="uid">
|
||||
<i class='fa fa-user'></i>
|
||||
<span>{users.uid}</span>
|
||||
</div>
|
||||
|
||||
<span class="administrator label label-primary <!-- IF !users.administrator -->hide<!-- ENDIF !users.administrator -->">Admin</span>
|
||||
|
||||
<br/>
|
||||
|
||||
<span class="ban label label-danger <!-- IF !users.banned -->hide<!-- ENDIF !users.banned -->">Banned</span>
|
||||
|
||||
</div>
|
||||
<!-- END users -->
|
||||
</ul>
|
||||
|
||||
<div class="modal fade" id="create-modal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title">Create User</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert alert-danger hide" id="create-modal-error"></div>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="group-name">User Name</label>
|
||||
<input type="text" class="form-control" id="create-user-name" placeholder="User Name" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="group-name">Email</label>
|
||||
<input type="text" class="form-control" id="create-user-email" placeholder="Email of this user" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="group-name">Password</label>
|
||||
<input type="password" class="form-control" id="create-user-password" placeholder="Password" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="group-name">Password Confirm</label>
|
||||
<input type="password" class="form-control" id="create-user-password-again" placeholder="Password" />
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-primary" id="create-modal-go">Create</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="text-center {loadmore_display}">
|
||||
<button id="load-more-users-btn" class="btn btn-primary">Load More</button>
|
||||
</div>
|
||||
<input type="hidden" template-variable="yourid" value="{yourid}" />
|
@ -0,0 +1,44 @@
|
||||
<p>[[email:greeting_with_name, {username}]],</p>
|
||||
|
||||
<!-- IF notifications.length -->
|
||||
<p>[[email:digest.notifications, {site_title}]]</p>
|
||||
|
||||
<ul>
|
||||
<!-- BEGIN notifications -->
|
||||
<li style="text-decoration: none; list-style-type: none; padding-bottom: 0.5em;">
|
||||
<a href="{url}{notifications.path}"><img style="vertical-align: middle; width: 16px; height: 16px; padding-right: 1em;" src="{notifications.image}" />{notifications.bodyShort}</a>
|
||||
</li>
|
||||
<!-- END notifications -->
|
||||
</ul>
|
||||
|
||||
<hr />
|
||||
<!-- ENDIF notifications.length -->
|
||||
|
||||
<p>[[email:digest.latest_topics, {site_title}]]</p>
|
||||
<ul>
|
||||
<!-- IF recent.length -->
|
||||
<!-- BEGIN recent -->
|
||||
<li style="text-decoration: none; list-style-type: none; padding-bottom: 0.5em;">
|
||||
<a href="{url}/topic/{recent.slug}"><img style="vertical-align: middle; width: 16px; height: 16px; padding-right: 1em;" src="{recent.teaser.user.picture}" title="{recent.teaser.user.username}" />{recent.title}</a>
|
||||
</li>
|
||||
<!-- END recent -->
|
||||
<!-- ELSE -->
|
||||
<li style="text-decoration: none; list-style-type: none; padding-bottom: 0.5em; font-style: italic;">
|
||||
[[email:digest.daily.no_topics]]
|
||||
</li>
|
||||
<!-- ENDIF recent.length -->
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
<a href="{url}">[[email:digest.cta, {site_title}]]</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
[[email:closing]]<br />
|
||||
<strong>{site_title}</strong>
|
||||
</p>
|
||||
|
||||
<hr />
|
||||
<p>
|
||||
[[email:digest.unsub.info]] <a href="{url}/user/{username}/settings">[[email:unsub.cta]]</a>.
|
||||
</p>
|
@ -0,0 +1,31 @@
|
||||
[[email:welcome.greeting, {username}]],
|
||||
|
||||
<!-- IF notifications.length -->
|
||||
[[email:digest.notifications, {site_title}]]
|
||||
|
||||
<!-- BEGIN notifications -->
|
||||
* {notifications.text} ({url}{notifications.path})
|
||||
<!-- END notifications -->
|
||||
|
||||
===
|
||||
<!-- ENDIF notifications.length -->
|
||||
|
||||
[[email:digest.latest_topics]]
|
||||
|
||||
<!-- IF recent.length -->
|
||||
<!-- BEGIN recent -->
|
||||
* {recent.title} ({url}/topic/{recent.slug})
|
||||
<!-- END recent -->
|
||||
<!-- ELSE -->
|
||||
* [[email:digest.daily.no_topics]]
|
||||
<!-- ENDIF recent.length -->
|
||||
|
||||
[[email:digest.cta, {site_title}]]: {url}
|
||||
|
||||
|
||||
[[email:closing]]
|
||||
{site_title}
|
||||
|
||||
===
|
||||
|
||||
[[email:digest.unsub.info]] [[email:unsub.cta]]: {url}/user/{username}/settings.
|
@ -0,0 +1,16 @@
|
||||
<p>[[email:greeting_with_name, {username}]],</p>
|
||||
|
||||
<p>{summary}:</p>
|
||||
<blockquote>{message.content}</blockquote>
|
||||
|
||||
<a href="{url}">[[email:notif.chat.cta]]</a>
|
||||
|
||||
<p>
|
||||
[[email:closing]]<br />
|
||||
<strong>{site_title}</strong>
|
||||
</p>
|
||||
|
||||
<hr />
|
||||
<p>
|
||||
[[email:notif.chat.unsub.info]] <a href="{url}/user/{username}/settings">[[email:unsub.cta]]</a>.
|
||||
</p>
|
@ -0,0 +1,15 @@
|
||||
[[email:greeting_with_name, {username}]],
|
||||
|
||||
{summary}:
|
||||
|
||||
{message.content}
|
||||
|
||||
[[email:notif.chat.cta]]: {url}
|
||||
|
||||
|
||||
[[email:closing]]
|
||||
{site_title}
|
||||
|
||||
===
|
||||
|
||||
[[email:notif.chat.unsub.info]] <a href="{url}/user/{username}/settings">[[email:unsub.cta]]</a>.
|
@ -0,0 +1,14 @@
|
||||
<p>[[email:greeting_no_name]],</p>
|
||||
|
||||
<p>[[email:reset.text1]]</p>
|
||||
|
||||
<p>[[email:reset.text2]]</p>
|
||||
|
||||
<blockquote>
|
||||
<a href="{reset_link}">[[email:reset.cta]]</a>
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
[[email:closing]]<br />
|
||||
<strong>{site_title}</strong>
|
||||
</p>
|
@ -0,0 +1,10 @@
|
||||
[[email:greeting_no_name]],
|
||||
|
||||
[[email:reset.text1]]
|
||||
|
||||
[[email:reset.text2]] [[email:reset.cta]]
|
||||
|
||||
{reset_link}
|
||||
|
||||
[[email:closing]]
|
||||
{site_title}
|
@ -0,0 +1,8 @@
|
||||
<p>[[email:greeting_no_name]],</p>
|
||||
|
||||
<p>[[email:test.text1]]</p>
|
||||
|
||||
<p>
|
||||
[[email:closing]]<br />
|
||||
<strong>{site_title}</strong>
|
||||
</p>
|
@ -0,0 +1,6 @@
|
||||
[[email:greeting_no_name]],
|
||||
|
||||
[[email:test.text1]]
|
||||
|
||||
[[email:closing]]
|
||||
{site_title}
|
@ -0,0 +1,16 @@
|
||||
<p>[[email:greeting_with_name, {username}]],</p>
|
||||
|
||||
<p>
|
||||
<strong>[[email:welcome.text1, {site_title}]]</strong>
|
||||
</p>
|
||||
|
||||
<p>[[email:welcome.text2]]</p>
|
||||
|
||||
<blockquote>
|
||||
<a href="{confirm_link}">[[email:welcome.cta]]</a>
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
[[email:closing]]<br />
|
||||
<strong>{site_title}</strong>
|
||||
</p>
|
@ -0,0 +1,11 @@
|
||||
[[email:greeting_with_name, {username}]],
|
||||
|
||||
[[email:welcome.text1, {site_title}]]
|
||||
|
||||
[[email:welcome.text2]] [[email:welcome.cta]]:
|
||||
|
||||
{confirm_link}
|
||||
|
||||
|
||||
[[email:closing]]
|
||||
{site_title}
|
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{site_title} is currently in Maintenance Mode</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>This site is in maintenance mode. Try again later.</h1>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue