refactor: use new if/each syntax

This commit is contained in:
Barış Soner Uşaklı
2023-01-26 20:14:58 -05:00
parent 72fb61d321
commit 9fa498fa4a
57 changed files with 458 additions and 472 deletions

View File

@@ -1,12 +1,9 @@
<div class="alert alert-danger">
<strong>[[global:400.title]]</strong>
<!-- IF error -->
<p>{error}</p>
<!-- ELSE -->
<p>[[global:400.message, {config.relative_path}]]</p>
<!-- ENDIF error -->
<!-- IF returnLink -->
<p>{{{ if error }}}{error}{{{ else }}}[[global:400.message, {config.relative_path}]]{{{ end }}}</p>
{{{ if returnLink }}}
<p>[[error:goback]]</p>
<!-- ENDIF returnLink -->
{{{ end }}}
</div>

View File

@@ -1,16 +1,13 @@
<div class="alert alert-danger">
<strong>[[global:403.title]]</strong>
<!-- IF error -->
<p>{error}</p>
<!-- ELSE -->
<p>[[global:403.message]]</p>
<!-- ENDIF error -->
<!-- IF returnLink -->
<p>{{{ if error }}}{error}{{{ else }}}[[global:403.message]]{{{ end }}}</p>
{{{ if returnLink }}}
<p>[[error:goback]]</p>
<!-- ENDIF returnLink -->
{{{ end }}}
<!-- IF !loggedIn -->
{{{ if !loggedIn }}}
<p>[[global:403.login, {config.relative_path}]]</p>
<!-- ENDIF !loggedIn -->
{{{ end }}}
</div>

View File

@@ -1,8 +1,4 @@
<div class="alert alert-danger">
<strong>{path} [[global:404.title]]</strong>
<!-- IF error -->
<p>{error}</p>
<!-- ELSE -->
<p>[[global:404.message, {config.relative_path}]]</p>
<!-- ENDIF error -->
<p>{{{ if error }}}{error}{{{ else }}}[[global:404.message, {config.relative_path}]]{{{ end }}}</p>
</div>

View File

@@ -2,9 +2,9 @@
<strong>[[global:500.title]]</strong>
<p>[[global:500.message]]</p>
<p>{path}</p>
<!-- IF error --><p>{error}</p><!-- ENDIF error -->
{{{ if error }}}<p>{error}</p>{{{ end }}}
<!-- IF returnLink -->
{{{ if returnLink }}}
<p>[[error:goback]]</p>
<!-- ENDIF returnLink -->
{{{ end }}}
</div>

View File

@@ -1,6 +1,6 @@
<h1 class="text-center">[[pages:maintenance.text, {site_title}]]</h1>
<h2 class="text-center"><i class="fa fa-wrench fa-3x"></i></h2>
<!-- IF message -->
{{{ if message }}}
<div class="row maintenance">
<div class="col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2">
<p class="lead text-center">[[pages:maintenance.messageIntro]]</p>
@@ -9,4 +9,4 @@
</div>
</div>
</div>
<!-- ENDIF message -->
{{{ end }}}

View File

@@ -22,9 +22,9 @@
<span>[[admin/advanced/database:mongo.data-size]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {mongo.dataSize}]]</span><br/>
<span>[[admin/advanced/database:mongo.storage-size]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {mongo.storageSize}]]</span><br/>
<span>[[admin/advanced/database:mongo.index-size]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {mongo.indexSize}]]</span><br/>
<!-- IF mongo.fileSize -->
{{{ if mongo.fileSize }}}
<span>[[admin/advanced/database:mongo.file-size]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {mongo.fileSize}]]</span><br/>
<!-- ENDIF mongo.fileSize -->
{{{ end }}}
<hr/>
<span>[[admin/advanced/database:mongo.resident-memory]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {mongo.mem.resident}]]</span><br/>
<span>[[admin/advanced/database:mongo.virtual-memory]]</span> <span class="text-end">[[admin/advanced/database:x-gb, {mongo.mem.virtual}]]</span><br/>

View File

@@ -55,13 +55,13 @@
<th>[[admin/advanced/errors:count]]</th>
</thead>
<tbody>
<!-- BEGIN not-found -->
{{{ each not-found }}}
<tr>
<td>{../value}</td>
<td>{../score}</td>
<td>{./value}</td>
<td>{./score}</td>
</tr>
<!-- END not-found -->
<!-- IF !not-found.length -->
{{{ end }}}
{{{ if !not-found.length }}}
<tr>
<td colspan="2">
<div class="alert alert-success">
@@ -69,7 +69,7 @@
</div>
</td>
</tr>
<!-- ENDIF !not-found.length -->
{{{ end }}}
</tbody>
</table>
</div>

View File

@@ -13,7 +13,7 @@
<span class="badge bg-primary">#{events.eid}</span>
<span class="badge bg-info">{events.type}</span>
<span class="badge bg-info">uid {events.uid}</span>
<!-- IF events.ip --><span class="badge bg-info">{events.ip}</span><!-- END -->
{{{ if events.ip }}}<span class="badge bg-info">{events.ip}</span>{{{ end }}}
<a href="{config.relative_path}/user/{events.user.userslug}" target="_blank">{buildAvatar(events.user, "24px", true)}</a>
<a href="{config.relative_path}/user/{events.user.userslug}" target="_blank">{events.user.username}</a>
<span class="float-end delete-event ms-2 pointer"><i class="fa fa-trash-o"></i></span>
@@ -35,9 +35,9 @@
<div class="mb-3">
<label class="form-label" for="type">[[admin/advanced/events:filter-type]]</label>
<select id="type" name="type" class="form-select">
<!-- BEGIN types -->
<option value="{types.value}" <!-- IF types.selected -->selected<!-- ENDIF types.selected -->>{types.name} - ({types.count}) </option>
<!-- END types -->
{{{ each types }}}
<option value="{./value}" {{{ if ./selected }}}selected{{{ end }}}>{./name} - ({./count}) </option>
{{{ end }}}
</select>
</div>
<div class="mb-3">

View File

@@ -70,21 +70,21 @@
<div class="card-header">[[admin/dashboard:control-panel]]</div>
<div class="card-body text-center">
<div class="d-grid gap-2 mb-2">
<button class="btn btn-block btn-warning restart"<!-- IF !canRestart --> disabled<!-- END -->>[[admin/dashboard:restart]]</button>
<button class="btn btn-block btn-danger rebuild-and-restart"<!-- IF !canRestart --> disabled<!-- END -->>[[admin/dashboard:rebuild-and-restart]]</button>
<button class="btn btn-block btn-warning restart"{{{ if !canRestart }}} disabled{{{ end }}}>[[admin/dashboard:restart]]</button>
<button class="btn btn-block btn-danger rebuild-and-restart"{{{ if !canRestart }}} disabled{{{ end }}}>[[admin/dashboard:rebuild-and-restart]]</button>
</div>
<!-- IF lastrestart -->
{{{ if lastrestart }}}
<p>
[[admin/dashboard:last-restarted-by]]<br />
<a href="{config.relative_path}/uid/{lastrestart.uid}"><span class="badge bg-info">{lastrestart.user.username}</span></a> <span class="timeago" title="{lastrestart.timestampISO}"></span>
</p>
<!-- ENDIF lastrestart -->
<p class="<!-- IF canRestart -->form-text<!-- ELSE -->alert alert-warning<!-- END -->">
<!-- IF canRestart -->
{{{ end }}}
<p class="{{{ if canRestart }}}form-text{{{ else }}}alert alert-warning{{{ end }}}">
{{{ if canRestart }}}
[[admin/dashboard:restart-warning]]
<!-- ELSE -->
{{{ else }}}
[[admin/dashboard:restart-disabled]]
<!-- END -->
{{{ end }}}
</p>
<p>
<a href="{config.relative_path}/admin/settings/advanced" class="btn btn-info btn-block" data-bs-placement="bottom" data-bs-toggle="tooltip" title="[[admin/dashboard:maintenance-mode-title]]">[[admin/dashboard:maintenance-mode]]</a>
@@ -106,26 +106,26 @@
<div class="card mb-3">
<div class="card-header">[[admin/dashboard:updates]]</div>
<div class="card-body">
<div class="alert <!-- IF lookupFailed -->alert-danger<!-- ELSE --><!-- IF upgradeAvailable -->alert-warning<!-- ELSE --><!-- IF currentPrerelease -->alert-info<!-- ELSE -->alert-success<!-- END --><!-- END --><!-- END --> version-check">
<div class="alert {{{ if lookupFailed }}}alert-danger{{{ else }}}{{{ if upgradeAvailable }}}alert-warning{{{ else }}}{{{ if currentPrerelease }}}alert-info{{{ else }}}alert-success{{{ end }}}{{{ end }}}{{{ end }}} version-check">
<p>[[admin/dashboard:running-version, {version}]]</p>
<p>
<!-- IF lookupFailed -->
{{{ if lookupFailed }}}
[[admin/dashboard:latest-lookup-failed]]
<!-- ELSE -->
<!-- IF upgradeAvailable -->
<!-- IF currentPrerelease -->
{{{ else }}}
{{{ if upgradeAvailable }}}
{{{ if currentPrerelease }}}
[[admin/dashboard:prerelease-upgrade-available, {latestVersion}]]
<!-- ELSE -->
{{{ else }}}
[[admin/dashboard:upgrade-available, {latestVersion}]]
<!-- END -->
<!-- ELSE -->
<!-- IF currentPrerelease -->
{{{ end }}}
{{{ else }}}
{{{ if currentPrerelease }}}
[[admin/dashboard:prerelease-warning]]
<!-- ELSE -->
{{{ else }}}
[[admin/dashboard:up-to-date]]
<!-- END -->
<!-- END -->
<!-- END -->
{{{ end }}}
{{{ end }}}
{{{ end }}}
</p>
</div>
<p>
@@ -137,17 +137,17 @@
<div class="card">
<div class="card-header">[[admin/dashboard:notices]]</div>
<div class="card-body">
<!-- BEGIN notices -->
{{{ each notices}}}
<div>
<!-- IF notices.done -->
<i class="fa fa-fw fa-check text-success"></i> {notices.doneText}
<!-- ELSE -->
<!-- IF notices.link --><a href="{config.relative_path}{notices.link}" data-bs-toggle="tooltip" title="{notices.tooltip}"><!-- ENDIF notices.link -->
<i class="fa fa-fw fa-times text-danger"></i> {notices.notDoneText}
<!-- IF notices.link --></a><!-- ENDIF notices.link -->
<!-- ENDIF notices.done -->
{{{ if ./done }}}
<i class="fa fa-fw fa-check text-success"></i> {./doneText}
{{{ else }}}
{{{ if ./link }}}<a href="{config.relative_path}{./link}" data-bs-toggle="tooltip" title="{./tooltip}">{{{ end }}}
<i class="fa fa-fw fa-times text-danger"></i> {./notDoneText}
{{{ if ./link }}}</a>{{{ end }}}
{{{ end }}}
</div>
<!-- END notices -->
{{{ end }}}
</div>
</div>
</div>

View File

@@ -24,7 +24,7 @@
</tr>
</thead>
<tbody>
<!-- BEGIN info -->
{{{ each info }}}
<tr>
<td>{info.os.hostname}:{info.process.port}</td>
<td class="text-center">
@@ -50,7 +50,7 @@
<td>{info.os.load}</td>
<td>{info.process.uptimeHumanReadable}</td>
</tr>
<!-- END info -->
{{{ end }}}
</tbody>
</table>
</div>

View File

@@ -51,9 +51,9 @@
<div class="tab-pane fade show active" id="installed">
<!-- IMPORT admin/partials/plugins/no-plugins.tpl -->
<ul class="installed">
<!-- BEGIN installed -->
{{{ each installed }}}
<!-- IMPORT admin/partials/installed_plugin_item.tpl -->
<!-- END installed -->
{{{ end }}}
</ul>
</div>
<div class="tab-pane fade" id="active">
@@ -71,9 +71,9 @@
<div class="tab-pane fade" id="download">
<!-- IMPORT admin/partials/plugins/no-plugins.tpl -->
<ul class="download">
<!-- BEGIN download -->
{{{ each download }}}
<!-- IMPORT admin/partials/download_plugin_item.tpl -->
<!-- END download -->
{{{ end }}}
</ul>
</div>
</div>
@@ -90,7 +90,7 @@
<div class="card">
<div class="card-body">
<div class="form-check">
<input id="plugin-submit-usage" class="form-check-input" type="checkbox" data-field="submitPluginUsage" <!-- IF submitPluginUsage -->checked<!-- ENDIF submitPluginUsage -->/>
<input id="plugin-submit-usage" class="form-check-input" type="checkbox" data-field="submitPluginUsage" {{{ if submitPluginUsage }}}checked{{{ end }}}/>
<label for="plugin-submit-usage" class="form-check-label">[[admin/extend/plugins:submit-anonymous-usage]]</label>
</div>
</div>

View File

@@ -32,9 +32,9 @@
<div class="card card-body d-inline-block then-block">
<label class="form-label" for="condition-then">[[admin/extend/rewards:condition-then]]</label>
<select id="condition-then" class="form-select" name="rid" data-selected="{active.rid}">
<!-- BEGIN ../../rewards -->
{{{ each ../../rewards }}}
<option value="{rewards.rid}">{rewards.name}</option>
<!-- END ../../rewards -->
{{{ end }}}
</select>
</div>
</form>
@@ -58,11 +58,11 @@
<div class="float-end">
<div class="card-body d-inline-block">
<button class="btn btn-danger delete">[[admin/extend/rewards:delete]]</button>
<!-- IF active.disabled -->
{{{ if active.disabled }}}
<button class="btn btn-success toggle">[[admin/extend/rewards:enable]]</button>
<!-- ELSE -->
{{{ else }}}
<button class="btn btn-warning toggle">[[admin/extend/rewards:disable]]</button>
<!-- ENDIF active.disabled -->
{{{ end }}}
</div>
</div>
<div class="clearfix"></div>

View File

@@ -6,7 +6,7 @@
</button>
<ul class="dropdown-menu">
{{{ each templates }}}
<li><a class="dropdown-item" href="#" data-template="{../template}" data-toggle="pill">{../template}</a></li>
<li><a class="dropdown-item" href="#" data-template="{./template}" data-toggle="pill">{./template}</a></li>
{{{ end }}}
</ul>
</div>
@@ -15,10 +15,10 @@
<div class="col-12">
<div class="tab-content">
{{{ each templates }}}
<div class="tab-pane <!-- IF @first -->active<!-- ENDIF @first -->" data-template="{../template}">
<div class="tab-pane {{{ if @first }}}active{{{ end }}}" data-template="{./template}">
{{{ each templates.areas }}}
<div class="area" data-template="{templates.template}" data-location="{../location}">
<h4>{../name} <small>{templates.template} / {../location}</small></h4>
<div class="area" data-template="{templates.template}" data-location="{./location}">
<h4>{./name} <small>{templates.template} / {./location}</small></h4>
<div class="card card-body text-bg-light widget-area">
</div>
@@ -37,32 +37,32 @@
<div class="card-body">
<div class="available-widgets">
<p>[[admin/extend/widgets:explanation]]</p>
<!-- IF !availableWidgets.length -->
{{{ if !availableWidgets.length }}}
<div class="alert alert-info">[[admin/extend/widgets:none-installed, {config.relative_path}/admin/extend/plugins]]</div>
<!-- ENDIF !availableWidgets.length -->
{{{ end }}}
<p>
<select id="widget-selector" class="form-control">
<!-- BEGIN availableWidgets -->
<option value="{availableWidgets.widget}">{availableWidgets.name}</option>
<!-- END availableWidgets -->
{{{ each availableWidgets }}}
<option value="{./widget}">{./name}</option>
{{{ end }}}
</select>
</p>
<div class="row">
<!-- BEGIN availableWidgets -->
{{{ each availableWidgets }}}
<div class="col-12">
<div data-widget="{availableWidgets.widget}" class="card widget-panel pointer hide">
<div data-widget="{./widget}" class="card widget-panel pointer hide">
<div class="card-header">
<strong>{availableWidgets.name}</strong>
<small><br />{availableWidgets.description}</small>
<strong>{./name}</strong>
<small><br />{./description}</small>
</div>
<div class="card-body hidden">
<form>
{availableWidgets.content}
{./content}
</form>
</div>
</div>
</div>
<!-- END availableWidgets -->
{{{ end }}}
</div>
<div class="btn-group" component="clone">
@@ -71,11 +71,11 @@
<span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<!-- BEGIN templates -->
<!-- IF !@first -->
<li><a class="dropdown-item" href="#">{templates.template}</a></li>
<!-- END -->
<!-- END templates -->
{{{ each templates }}}
{{{ if !@first }}}
<li><a class="dropdown-item" href="#">{./template}</a></li>
{{{ end }}}
{{{ end }}}
</ul>
</div>
</div>

View File

@@ -19,9 +19,9 @@
<script type="text/javascript" src="{relative_path}/assets/admin.min.js?{cache-buster}"></script>
<!-- BEGIN scripts -->
<script type="text/javascript" src="{scripts.src}"></script>
<!-- END scripts -->
{{{ each scripts }}}
<script type="text/javascript" src="{./src}"></script>
{{{ end }}}
</head>
<body class="admin {bodyClass}">

View File

@@ -1,28 +1,28 @@
<div class="admins-mods">
<div class="mb-5">
<h4><!-- IF admins.icon --><i class="fa {admins.icon}"></i> <!-- ENDIF admins.icon -->[[admin/manage/admins-mods:administrators]]</h4>
<h4>{{{ if admins.icon }}}<i class="fa {admins.icon}"></i> {{{ end }}}[[admin/manage/admins-mods:administrators]]</h4>
<div class="administrator-area">
<!-- BEGIN admins.members -->
{{{ each admins.members }}}
<div class="badge text-bg-light m-1 p-1 float-start" data-uid="{admins.members.uid}">
{buildAvatar(admins.members, "24px", true)}
<a href="{config.relative_path}/user/{admins.members.userslug}">{admins.members.username}</a>
<i class="mx-1 remove-user-icon fa fa-times" role="button"></i>
</div>
<!-- END admins.members -->
{{{ end }}}
</div>
<input id="admin-search" class="form-control" placeholder="[[admin/manage/admins-mods:add-administrator]]" />
</div>
<div class="mb-5">
<h4><!-- IF globalMods.icon --><i class="fa {globalMods.icon}"></i> <!-- ENDIF globalMods.icon -->[[admin/manage/admins-mods:global-moderators]]</h4>
<h4>{{{ if globalMods.icon }}}<i class="fa {globalMods.icon}"></i> {{{ end }}}[[admin/manage/admins-mods:global-moderators]]</h4>
<div class="global-moderator-area">
<!-- BEGIN globalMods.members -->
{{{ each globalMods.members }}}
<div class="badge text-bg-light m-1 p-1 float-start" data-uid="{globalMods.members.uid}">
{buildAvatar(globalMods.members, "24px", true)}
<a href="{config.relative_path}/user/{globalMods.members.userslug}">{globalMods.members.username}</a>
<i class="mx-1 remove-user-icon fa fa-times" role="button"></i>
</div>
<!-- END globalMods.members -->
{{{ end }}}
</div>
<div id="no-global-mods-warning" class="alert alert-info {{{ if globalMods.members.length }}}hidden{{{ end }}}">[[admin/manage/admins-mods:no-global-moderators]]</div>

View File

@@ -61,11 +61,11 @@
<label class="form-label" for="cid-{category.cid}-class">
[[admin/manage/categories:custom-class]]
</label>
<input list="customClasses" id="cid-{category.cid}-class" type="text" class="form-control" placeholder="<!-- IF customClasses.length --><!-- BEGIN customClasses --><!-- IF @first -->{@value}<!-- ENDIF --><!-- END --><!-- ELSE -->col-md-6 col-6<!-- ENDIF -->" data-name="class" value="{category.class}" />
<input list="customClasses" id="cid-{category.cid}-class" type="text" class="form-control" placeholder="{{{ if customClasses.length }}}{{{ each customClasses }}}{{{ if @first }}}{@value}{{{ end }}}{{{ end }}}{{{ else }}}col-md-6 col-6{{{ end }}}" data-name="class" value="{category.class}" />
<datalist id="customClasses">
<!-- BEGIN customClasses -->
{{{ each customClasses }}}
<option>{@value}</option>
<!-- END customClasses -->
{{{ end }}}
</datalist>
</div>
</div>
@@ -125,7 +125,7 @@
<div class="col-lg-6">
<div class="form-group mb-3">
<div class="form-check form-switch">
<input type="checkbox" class="form-check-input" id="cid-{category.cid}-isSection" data-name="isSection" <!-- IF category.isSection -->checked<!-- ENDIF category.isSection --> />
<input type="checkbox" class="form-check-input" id="cid-{category.cid}-isSection" data-name="isSection" {{{ if category.isSection }}}checked{{{ end }}} />
<label class="form-check-label">[[admin/manage/categories:is-section]]</label>
</div>
</div>
@@ -148,9 +148,9 @@
<div class="card">
<div class="card-body">
<div class="category-preview" style="
<!-- IF category.backgroundImage -->background-image: url({category.backgroundImage});<!-- ENDIF category.backgroundImage -->
<!-- IF category.bgColor -->background-color: {category.bgColor};<!-- ENDIF category.bgColor -->
<!-- IF category.imageClass -->background-size: {category.imageClass};<!-- ENDIF category.imageClass -->
{{{ if category.backgroundImage }}}background-image: url({category.backgroundImage});{{{ end }}}
{{{ if category.bgColor }}}background-color: {category.bgColor};{{{ end }}}
{{{ if category.imageClass }}}background-size: {category.imageClass};{{{ end }}}
color: {category.color};
">
<div class="icon">
@@ -164,14 +164,14 @@
[[admin/manage/categories:upload-image]]
</button>
</div>
<!-- IF category.backgroundImage -->
{{{ if category.backgroundImage }}}
<div class="btn-group">
<button class="btn btn-warning delete-image">
<i data-name="icon" value="fa-times" class="fa fa-times"></i>
[[admin/manage/categories:delete-image]]
</button>
</div>
<!-- ENDIF category.backgroundImage -->
{{{ end }}}
</div>
@@ -185,11 +185,11 @@
<div class="mb-3">
<label class="form-label" for="cid-{category.cid}-parentCid">[[admin/manage/categories:parent-category]]</label>
<div class="d-grid">
<div class="btn-group <!-- IF !category.parent.name -->hide<!-- ENDIF !category.parent.name -->">
<div class="btn-group {{{ if !category.parent.name }}}hide{{{ end }}}">
<button type="button" class="btn btn-outline-secondary" data-action="changeParent" data-parentCid="{category.parent.cid}"><i class="fa {category.parent.icon}"></i> {category.parent.name}</button>
<button type="button" class="btn btn-warning" data-action="removeParent" data-parentCid="{category.parent.cid}"><i class="fa fa-times"></i></button>
</div>
<button type="button" class="btn btn-outline-secondary btn-block <!-- IF category.parent.name -->hide<!-- ENDIF category.parent.name -->" data-action="setParent">
<button type="button" class="btn btn-outline-secondary btn-block {{{ if category.parent.name }}}hide{{{ end }}}" data-action="setParent">
<i class="fa fa-sitemap"></i>
[[admin/manage/categories:parent-category-none]]
</button>
@@ -210,12 +210,12 @@
</div>
<hr />
<div class="d-grid gap-2">
<button data-action="toggle" data-disabled="{category.disabled}" class="btn btn-sm btn-block <!-- IF category.disabled -->btn-primary<!-- ELSE -->btn-danger<!-- ENDIF category.disabled -->">
<!-- IF category.disabled -->
<button data-action="toggle" data-disabled="{category.disabled}" class="btn btn-sm btn-block {{{ if category.disabled }}}btn-primary{{{ else }}}btn-danger{{{ end }}}">
{{{ if category.disabled }}}
[[admin/manage/categories:enable]]
<!-- ELSE -->
{{{ else }}}
[[admin/manage/categories:disable]]
<!-- ENDIF category.disabled -->
{{{ end }}}
</button>
<button class="btn btn-sm btn-danger btn-block purge">
<i class="fa fa-eraser"></i> [[admin/manage/categories:purge]]

View File

@@ -13,15 +13,15 @@
<th></th>
</thead>
<tbody>
<!-- BEGIN delivery -->
{{{ each delivery }}}
<tr>
<td>{buildAvatar(delivery, "24px", true)} <a href="{config.relative_path}/uid/{../uid}">{../username}</a></td>
<td>{{{if ../setting}}}{../setting}{{{else}}}<em>[[admin/manage/digest:default]]</em>{{{end}}}</td>
<td>{../lastDelivery}</td>
<td><button class="btn btn-sm btn-outline-secondary" data-action="resend" data-uid="{../uid}">[[admin/manage/digest:resend]]</button></td>
<td>{buildAvatar(delivery, "24px", true)} <a href="{config.relative_path}/uid/{./uid}">{./username}</a></td>
<td>{{{if ./setting}}}{./setting}{{{else}}}<em>[[admin/manage/digest:default]]</em>{{{end}}}</td>
<td>{./lastDelivery}</td>
<td><button class="btn btn-sm btn-outline-secondary" data-action="resend" data-uid="{./uid}">[[admin/manage/digest:resend]]</button></td>
</tr>
<!-- END delivery -->
<!-- IF !delivery.length -->
{{{ end }}}
{{{ if !delivery.length }}}
<tr>
<td colspan="4">
<div class="alert alert-success">
@@ -29,7 +29,7 @@
</div>
</td>
</tr>
<!-- ENDIF !delivery.length -->
{{{ end }}}
</tbody>
<tfoot>
<tr>

View File

@@ -4,7 +4,7 @@
<div class="group-settings-form">
<fieldset class="mb-3">
<label class="form-label" for="change-group-name">[[admin/manage/groups:edit.name]]</label>
<input type="text" class="form-control" id="change-group-name" placeholder="Group Name" value="{group.displayName}" maxlength="{maximumGroupNameLength}" data-property <!-- IF group.system -->readonly<!-- ENDIF group.system -->/><br />
<input type="text" class="form-control" id="change-group-name" placeholder="Group Name" value="{group.displayName}" maxlength="{maximumGroupNameLength}" data-property {{{ if group.system }}}readonly{{{ end }}}/><br />
</fieldset>
<fieldset class="mb-3">
@@ -16,14 +16,14 @@
<div class="col-md-4">
<fieldset>
<label class="form-label" for="change-group-user-title">[[admin/manage/groups:edit.user-title]]</label>
<span id="group-label-preview" class="badge" style="color:<!-- IF group.textColor -->{group.textColor}<!-- ELSE -->#ffffff<!-- ENDIF group.textColor -->; background:<!-- IF group.labelColor -->{group.labelColor}<!-- ELSE -->#000000<!-- ENDIF group.labelColor -->;"><i id="group-icon-preview" class="fa {group.icon} <!-- IF !group.icon -->hidden<!-- ENDIF -->"></i> <span id="group-label-preview-text">{group.userTitle}</span></span>
<span id="group-label-preview" class="badge" style="color:{{{ if group.textColor }}}{group.textColor}{{{ else }}}#ffffff{{{ end }}}; background:{{{ if group.labelColor }}}{group.labelColor}{{{ else }}}#000000{{{ end }}};"><i id="group-icon-preview" class="fa {group.icon} {{{ if !group.icon }}}hidden{{{ end }}}"></i> <span id="group-label-preview-text">{group.userTitle}</span></span>
<input type="text" class="form-control" id="change-group-user-title" placeholder="The title of users if they are a member of this group" value="{group.userTitleEscaped}" maxlength="{maximumGroupTitleLength}" data-property /><br />
</fieldset>
</div>
<div class="col-md-2">
<fieldset>
<label class="form-label" id="group-icon-label" for="change-group-icon">[[admin/manage/groups:edit.icon]]</label><br/>
<i id="group-icon" class="fa fa-2x <!-- IF group.icon -->{group.icon}<!-- ENDIF group.icon -->" value="{group.icon}"></i><br />
<i id="group-icon" class="fa fa-2x {{{ if group.icon }}}{group.icon}{{{ end }}}" value="{group.icon}"></i><br />
</fieldset>
</div>
<div class="col-md-3">
@@ -44,7 +44,7 @@
<fieldset class="mb-3">
<div class="checkbox">
<label>
<input id="group-userTitleEnabled" name="userTitleEnabled" data-property type="checkbox"<!-- IF group.userTitleEnabled --> checked<!-- ENDIF group.userTitleEnabled -->> <strong>[[admin/manage/groups:edit.show-badge]]</strong>
<input id="group-userTitleEnabled" name="userTitleEnabled" data-property type="checkbox"{{{ if group.userTitleEnabled }}} checked{{{ end }}}> <strong>[[admin/manage/groups:edit.show-badge]]</strong>
</label>
</div>
</fieldset>
@@ -52,16 +52,16 @@
<fieldset class="mb-3">
<div class="checkbox">
<label>
<input id="group-private" name="private" data-property type="checkbox"<!-- IF group.private --> checked<!-- ENDIF group.private -->>
<input id="group-private" name="private" data-property type="checkbox"{{{ if group.private }}} checked{{{ end }}}>
<strong>[[groups:details.private]]</strong>
<p class="form-text">
[[admin/manage/groups:edit.private-details]]
</p>
<!-- IF !allowPrivateGroups -->
{{{ if !allowPrivateGroups }}}
<p class="form-text">
[[admin/manage/groups:edit.private-override]]
</p>
<!-- ENDIF !allowPrivateGroups -->
{{{ end }}}
</label>
</div>
</fieldset>
@@ -69,7 +69,7 @@
<fieldset class="mb-3">
<div class="checkbox">
<label>
<input id="group-disableJoinRequests" name="disableJoinRequests" data-property type="checkbox"<!-- IF group.disableJoinRequests --> checked<!-- ENDIF group.disableJoinRequests -->>
<input id="group-disableJoinRequests" name="disableJoinRequests" data-property type="checkbox"{{{ if group.disableJoinRequests }}} checked{{{ end }}}>
<strong>[[admin/manage/groups:edit.disable-join]]</strong>
</label>
</div>
@@ -87,7 +87,7 @@
<fieldset class="mb-3">
<div class="checkbox">
<label>
<input id="group-hidden" name="hidden" data-property type="checkbox"<!-- IF group.hidden --> checked<!-- ENDIF group.hidden -->>
<input id="group-hidden" name="hidden" data-property type="checkbox"{{{ if group.hidden }}} checked{{{ end }}}>
<strong>[[admin/manage/groups:edit.hidden]]</strong>
<p class="form-text">
[[admin/manage/groups:edit.hidden-details]]
@@ -136,11 +136,11 @@
<li component="group-no-matches" role="presentation" class="group hidden">
<a class="dropdown-item" role="menuitem">[[search:no-matches]]</a>
</li>
<!-- BEGIN groupNames -->
{{{ each groupNames }}}
<li role="presentation" class="group" data-name="{groupNames.displayName}">
<a class="dropdown-item" href="{config.relative_path}/admin/manage/groups/{groupNames.encodedName}" role="menuitem">{groupNames.displayName}</a>
</li>
<!-- END groupNames -->
{{{ end }}}
</ul>
</div>
<hr />

View File

@@ -18,25 +18,25 @@
</tr>
</thead>
<tbody>
<!-- BEGIN groups -->
<tr data-groupname="{groups.displayName}" data-name-encoded="{groups.nameEncoded}">
{{{ each groups }}}
<tr data-groupname="{./displayName}" data-name-encoded="{./nameEncoded}">
<td>
<a href="{config.relative_path}/admin/manage/groups/{groups.slug}">{groups.displayName}</a> ({groups.memberCount})
<p class="description">{groups.description}</p>
<a href="{config.relative_path}/admin/manage/groups/{./slug}">{./displayName}</a> ({./memberCount})
<p class="description">{./description}</p>
</td>
<td>
<span class="badge" style="color:{groups.textColor}; background-color: {groups.labelColor};"><!-- IF groups.icon --><i class="fa {groups.icon}"></i> <!-- ENDIF groups.icon -->{groups.userTitle}</span>
<span class="badge" style="color:{./textColor}; background-color: {./labelColor};">{{{ if ./icon }}}<i class="fa {./icon}"></i> {{{ end }}}{./userTitle}</span>
</td>
<td>
<!-- IF groups.system -->
{{{ if ./system }}}
<span class="badge bg-danger">[[admin/manage/groups:system]]</span>
<!-- ENDIF groups.system -->
<!-- IF groups.private -->
{{{ end }}}
{{{ if ./private }}}
<span class="badge bg-primary">[[admin/manage/groups:private]]</span>
<!-- ENDIF groups.private -->
<!-- IF groups.hidden -->
{{{ end }}}
{{{ if ./hidden }}}
<span class="badge bg-default">[[admin/manage/groups:hidden]]</span>
<!-- ENDIF groups.hidden -->
{{{ end }}}
</td>
<td class="text-end">
@@ -49,7 +49,7 @@
</div>
</td>
</tr>
<!-- END groups -->
{{{ end }}}
</tbody>
<tfoot>
<tr>

View File

@@ -4,11 +4,11 @@
<div class="card-header text-bg-primary">
[[admin/manage/registration:queue]]
</div>
<!-- IF !users.length -->
{{{ if !users.length }}}
<p class="card-body">
[[admin/manage/registration:description, {config.relative_path}/admin/settings/user#user-registration]]
</p>
<!-- ENDIF !users.length -->
{{{ end }}}
<div class="table-responsive">
<table class="table table-striped users-list">
<thead>
@@ -17,65 +17,65 @@
<th>[[admin/manage/registration:list.email]]</th>
<th class="hidden-xs">[[admin/manage/registration:list.ip]]</th>
<th class="hidden-xs">[[admin/manage/registration:list.time]]</th>
<!-- BEGIN customHeaders -->
<th class="hidden-xs">{customHeaders.label}</th>
<!-- END customHeaders -->
{{{ each customHeaders }}}
<th class="hidden-xs">{./label}</th>
{{{ end }}}
<th></th>
</tr>
</thead>
<tbody>
{{{ each users }}}
<tr data-username="{users.usernameEscaped}">
<tr data-username="{./usernameEscaped}">
<td>
<!-- IF users.usernameSpam -->
<i class="fa fa-times-circle text-danger" title="[[admin/manage/registration:list.username-spam, {users.spamData.username.frequency}, {users.spamData.username.appears}, {users.spamData.username.confidence}]]"></i>
<!-- ELSE -->
<!-- IF users.spamChecked -->
{{{ if ./usernameSpam }}}
<i class="fa fa-times-circle text-danger" title="[[admin/manage/registration:list.username-spam, {./spamData.username.frequency}, {./spamData.username.appears}, {./spamData.username.confidence}]]"></i>
{{{ else }}}
{{{ if ./spamChecked }}}
<i class="fa fa-check text-success"></i>
<!-- ENDIF users.spamChecked -->
<!-- ENDIF users.usernameSpam -->
{users.username}
{{{ end }}}
{{{ end }}}
{./username}
</td>
<td>
<!-- IF users.emailSpam -->
<i class="fa fa-times-circle text-danger" title="[[admin/manage/registration:list.email-spam, {users.spamData.email.frequency}, {users.spamData.email.appears}]]"></i>
<!-- ELSE -->
<!-- IF users.spamChecked -->
{{{ if ./emailSpam }}}
<i class="fa fa-times-circle text-danger" title="[[admin/manage/registration:list.email-spam, {./spamData.email.frequency}, {./spamData.email.appears}]]"></i>
{{{ else }}}
{{{ if ./spamChecked }}}
<i class="fa fa-check text-success"></i>
<!-- ENDIF users.spamChecked -->
<!-- ENDIF users.emailSpam -->
{users.email}
{{{ end }}}
{{{ end }}}
{./email}
</td>
<td class="hidden-xs">
<!-- IF users.ipSpam -->
<i class="fa fa-times-circle text-danger" title="[[admin/manage/registration:list.ip-spam, {users.spamData.ip.frequency}, {users.spamData.ip.appears}]]"></i>
<!-- ELSE -->
<!-- IF users.spamChecked -->
{{{ if ./ipSpam }}}
<i class="fa fa-times-circle text-danger" title="[[admin/manage/registration:list.ip-spam, {./spamData.ip.frequency}, {./spamData.ip.appears}]]"></i>
{{{ else }}}
{{{ if ./spamChecked }}}
<i class="fa fa-check text-success"></i>
<!-- ENDIF users.spamChecked -->
<!-- ENDIF users.ipSpam -->
{users.ip}
{{{ each users.ipMatch }}}
{{{ end }}}
{{{ end }}}
{./ip}
{{{ each ./ipMatch }}}
<br>
{buildAvatar(users.ipMatch, "24px", true)}
<a href="{config.relative_path}/uid/{users.ipMatch.uid}">{users.ipMatch.username}</a>
{buildAvatar(@value, "24px", true)}
<a href="{config.relative_path}/uid/{./uid}">{./username}</a>
{{{ end }}}
</td>
<td class="hidden-xs">
<span class="timeago" title="{users.timestampISO}"></span>
<span class="timeago" title="{./timestampISO}"></span>
</td>
{{{ each users.customRows }}}
<td class="hidden-xs">{users.customRows.value}</td>
{{{ each ./customRows }}}
<td class="hidden-xs">{./value}</td>
{{{ end }}}
<td>
<div class="btn-group float-end">
<button class="btn btn-success btn-sm" data-action="accept"><i class="fa fa-check"></i></button>
<button class="btn btn-danger btn-sm" data-action="delete"><i class="fa fa-times"></i></button>
{{{ each users.customActions }}}
<button id="{users.customActions.id}" title="{users.customActions.title}" class="btn btn-sm {users.customActions.class}">
<i class="fa {users.customActions.icon}"></i>
{{{ each ./customActions }}}
<button id="{./id}" title="{./title}" class="btn btn-sm {./class}">
<i class="fa {./icon}"></i>
</button>
{{{ end }}}
</div>
@@ -110,7 +110,7 @@
{{{ each invites.invitations }}}
<tr data-invitation-mail="{invites.invitations.email}"
data-invited-by="{invites.username}">
<td class ="invited-by"><!-- IF @first -->{invites.username}<!-- ENDIF @first --></td>
<td class ="invited-by">{{{ if @first }}}{invites.username}{{{ end }}}</td>
<td>{invites.invitations.email}</td>
<td>{invites.invitations.username}
<div class="btn-group float-end">

View File

@@ -6,12 +6,12 @@
<p>[[admin/manage/tags:description]]</p>
</div>
<!-- IF !tags.length -->
{{{ if !tags.length }}}
[[admin/manage/tags:none]]
<!-- ENDIF !tags.length -->
{{{ end }}}
<div class="tag-list">
<!-- BEGIN tags -->
{{{ each tags }}}
<div class="tag-row" data-tag="{tags.valueEscaped}">
<div>
<button disabled class="rounded-3 btn btn-light">
@@ -20,7 +20,7 @@
</button>
</div>
</div>
<!-- END tags -->
{{{ end }}}
</div>
</div>
</div>

View File

@@ -15,42 +15,42 @@
<thead>
<tr>
<th>[[admin/manage/uploads:filename]]</th>
<!-- IF showPids --><th class="text-end">[[admin/manage/uploads:usage]]</th><!-- END -->
{{{ if showPids }}}<th class="text-end">[[admin/manage/uploads:usage]]</th>{{{ end }}}
<th class="text-end">[[admin/manage/uploads:size/filecount]]</th>
<th></th>
</tr>
</thead>
<tbody>
<!-- BEGIN files -->
{{{ each files }}}
<tr data-path="{files.path}">
<!-- IF files.isDirectory -->
{{{ if files.isDirectory }}}
<td class="col-md-6" role="button">
<i class="fa fa-fw fa-folder-o"></i> <a href="{config.relative_path}/admin/manage/uploads?dir={files.path}">{files.name}</a>
</td>
<!-- ENDIF files.isDirectory -->
{{{ end }}}
<!-- IF files.isFile -->
{{{ if files.isFile }}}
<td class="col-md-6">
<i class="fa fa-fw fa-file-text-o"></i> <a href="{config.relative_path}{files.url}" target="_blank">{files.name}</a>
</td>
<!-- ENDIF files.isFile -->
{{{ end }}}
<!-- IF showPids -->
{{{ if showPids }}}
<td class="col-md-3 text-end">
{{{ each ../inPids }}}
{{{ each ./inPids }}}
<a target="_blank" href="{config.relative_path}/post/{@value}"><span class="label label-default">{@value}</span></a>
{{{ end }}}
<!-- IF !../inPids.length -->
{{{ if !./inPids.length }}}
<span class="label label-danger">[[admin/manage/uploads:orphaned]]</span>
<!-- END -->
{{{ end }}}
</td>
<!-- END -->
{{{ end }}}
<td class="col-md-2 text-end"><!-- IF files.isFile -->{files.sizeHumanReadable}<!-- ELSE -->[[admin/manage/uploads:filecount, {files.fileCount}]]<!-- ENDIF files.isFile --></td>
<td class="col-md-2 text-end">{{{ if files.isFile }}}{files.sizeHumanReadable}{{{ else }}}[[admin/manage/uploads:filecount, {files.fileCount}]]{{{ end }}}</td>
<td role="button" class="col-md-1 text-end"><i class="delete fa fa-fw fa-trash-o <!-- IF !files.isFile --> hidden<!-- ENDIF !files.isFile -->"></i></td>
<td role="button" class="col-md-1 text-end"><i class="delete fa fa-fw fa-trash-o {{{ if !files.isFile }}} hidden{{{ end }}}"></i></td>
</tr>
<!-- END files -->
{{{ end }}}
</tbody>
</table>
</div>

View File

@@ -85,12 +85,6 @@
<div id="user-notfound-notify" class="label label-danger {{{if !query}}}hidden{{{end}}} {{{if matchCount}}}hidden{{{end}}}">[[admin/manage/users:search.not-found]]</div>
</div>
<!-- IF inactive -->
<a href="{config.relative_path}/admin/manage/users/inactive?months=3&resultsPerPage={resultsPerPage}" class="btn btn-outline-secondary">[[admin/manage/users:inactive.3-months]]</a>
<a href="{config.relative_path}/admin/manage/users/inactive?months=6&resultsPerPage={resultsPerPage}" class="btn btn-outline-secondary">[[admin/manage/users:inactive.6-months]]</a>
<a href="{config.relative_path}/admin/manage/users/inactive?months=12&resultsPerPage={resultsPerPage}" class="btn btn-outline-secondary">[[admin/manage/users:inactive.12-months]]</a>
<!-- ENDIF inactive -->
<div class="table-responsive">
<table class="table table-striped users-table">
<thead>
@@ -108,19 +102,19 @@
</tr>
</thead>
<tbody>
<!-- BEGIN users -->
{{{ each users }}}
<tr class="user-row">
<th><input component="user/select/single" data-uid="{users.uid}" type="checkbox"/></th>
<td class="text-end">{users.uid}</td>
<td>
<i title="[[admin/manage/users:users.banned]]" class="ban fa fa-gavel text-danger<!-- IF !users.banned --> hidden<!-- ENDIF !users.banned -->"></i>
<i class="administrator fa fa-shield text-success<!-- IF !users.administrator --> hidden<!-- ENDIF !users.administrator -->"></i>
<i title="[[admin/manage/users:users.banned]]" class="ban fa fa-gavel text-danger{{{ if !users.banned }}} hidden{{{ end }}}"></i>
<i class="administrator fa fa-shield text-success{{{ if !users.administrator }}} hidden{{{ end }}}"></i>
<a href="{config.relative_path}/user/{users.userslug}"> {users.username}</a>
</td>
<td>
{{{ if ../email }}}
<i class="validated fa fa-check text-success<!-- IF !users.email:confirmed --> hidden<!-- ENDIF !users.email:confirmed -->" title="validated"></i>
<i class="notvalidated fa fa-check text-muted<!-- IF users.email:confirmed --> hidden<!-- ENDIF users.email:confirmed -->" title="not validated"></i>
<i class="validated fa fa-check text-success{{{ if !users.email:confirmed }}} hidden{{{ end }}}" title="validated"></i>
<i class="notvalidated fa fa-check text-muted{{{ if users.email:confirmed }}} hidden{{{ end }}}" title="not validated"></i>
{../email}
{{{ else }}}
<i class="notvalidated fa fa-check text-muted" title="not validated"></i>
@@ -130,11 +124,11 @@
<td>{users.ip}</td>
<td class="text-end">{users.postcount}</td>
<td class="text-end">{users.reputation}</td>
<td class="text-end"><!-- IF users.flags -->{users.flags}<!-- ELSE -->0<!-- ENDIF users.flags --></td>
<td class="text-end">{{{ if users.flags }}}{users.flags}{{{ else }}}0{{{ end }}}</td>
<td><span class="timeago" title="{users.joindateISO}"></span></td>
<td><span class="timeago" title="{users.lastonlineISO}"></span></td>
</tr>
<!-- END users -->
{{{ end }}}
</tbody>
</table>
</div>

View File

@@ -2,13 +2,13 @@
[[ip-blacklist:validate.x-valid, {valid.length}, {numRules}]]
</p>
<!-- IF invalid.length -->
{{{ if invalid.length }}}
<p>
[[ip-blacklist:validate.x-invalid, {invalid.length}]]
</p>
<ul>
<!-- BEGIN invalid -->
{{{ each invalid }}}
<li><code>{@value}</code></li>
<!-- END invalid -->
{{{ end }}}
</ul>
<!-- ENDIF invalid.length -->
{{{ end }}}

View File

@@ -1,6 +1,6 @@
<ul data-cid="{cid}">
{{{ each categories }}}
<li data-cid="{categories.cid}" data-parent-cid="{categories.parentCid}" data-name="{categories.name}" <!-- IF categories.disabled -->class="disabled"<!-- ENDIF categories.disabled -->>
<li data-cid="{categories.cid}" data-parent-cid="{categories.parentCid}" data-name="{categories.name}" {{{ if categories.disabled }}}class="disabled"{{{ end }}}>
<div class="row category-row">
<div class="col-md-9">
<div class="clearfix">

View File

@@ -11,7 +11,7 @@
<li component="category/no-matches" role="presentation" class="category hidden">
<a class="dropdown-item" role="menuitem">[[search:no-matches]]</a>
</li>
<!-- BEGIN categories -->
{{{ each categories }}}
<li role="presentation" class="category {{{if categories.disabledClass}}}disabled{{{end}}}" data-cid="{categories.cid}" data-name="{categories.name}">
<a class="dropdown-item" role="menuitem">{categories.level}
<span component="category-markup">
@@ -22,7 +22,7 @@
</span>
</a>
</li>
<!-- END categories -->
{{{ end }}}
</ul>
</div>
</div>

View File

@@ -16,32 +16,32 @@
</tr>
</thead>
<tbody>
<!-- BEGIN stats -->
{{{ each stats }}}
<tr>
<td>
<strong>
{{{ if ../href }}}
<a href="{../href}">{../name}</a>
{{{ if ./href }}}
<a href="{./href}">{./name}</a>
{{{ else }}}
{../name}
{./name}
{{{ end }}}
</strong>
</td>
<td class="text-end formatted-number">{stats.yesterday}</td>
<td class="text-end formatted-number">{stats.today}</td>
<td class="{stats.dayTextClass}"><small>{stats.dayIncrease}%</small></td>
<td class="text-end formatted-number">{./yesterday}</td>
<td class="text-end formatted-number">{./today}</td>
<td class="{./dayTextClass}"><small>{./dayIncrease}%</small></td>
<td class="text-end formatted-number">{stats.lastweek}</td>
<td class="text-end formatted-number">{stats.thisweek}</td>
<td class="{stats.weekTextClass}"><small>{stats.weekIncrease}%</small></td>
<td class="text-end formatted-number">{./lastweek}</td>
<td class="text-end formatted-number">{./thisweek}</td>
<td class="{./weekTextClass}"><small>{./weekIncrease}%</small></td>
<td class="text-end formatted-number">{stats.lastmonth}</td>
<td class="text-end formatted-number">{stats.thismonth}</td>
<td class="{stats.monthTextClass}"><small>{stats.monthIncrease}%</small></td>
<td class="text-end formatted-number">{./lastmonth}</td>
<td class="text-end formatted-number">{./thismonth}</td>
<td class="{./monthTextClass}"><small>{./monthIncrease}%</small></td>
<td class="text-end formatted-number">{stats.alltime}</td>
<td class="text-end formatted-number">{./alltime}</td>
</tr>
<!-- END stats -->
{{{ end }}}
</tbody>
</table>
</div>

View File

@@ -1,25 +1,25 @@
<li id="{../id}" data-plugin-id="{../id}" class="clearfix">
<li id="{./id}" data-plugin-id="{./id}" class="clearfix">
<div class="float-end">
<button data-action="toggleActive" class="btn btn-success hidden"><i class="fa fa-power-off"></i> [[admin/extend/plugins:plugin-item.activate]]</button>
<button data-action="toggleInstall" data-installed="0" class="btn btn-success"><i class="fa fa-download"></i> [[admin/extend/plugins:plugin-item.install]]</button>
</div>
<h2><strong>{../name}</strong></h2>
<h2><strong>{./name}</strong></h2>
<!-- IF ../description -->
<p>{../description}</p>
<!-- ENDIF ../description -->
{{{ if ./description }}}
<p>{./description}</p>
{{{ end }}}
<small>[[admin/extend/plugins:plugin-item.latest]] <strong class="latestVersion">{../latest}</strong></small>
<small>[[admin/extend/plugins:plugin-item.latest]] <strong class="latestVersion">{./latest}</strong></small>
<p>
<!-- IF ../isCompatible -->
{{{ if ./isCompatible }}}
<i class="fa fa-check text-success"></i> [[admin/extend/plugins:plugin-item.compatible, {version}]]
<!-- ELSE -->
{{{ else }}}
<i class="fa fa-question text-warning"></i> [[admin/extend/plugins:plugin-item.not-compatible]]
<!-- ENDIF -->
{{{ end }}}
</p>
<!-- IF ../url -->
<p>[[admin/extend/plugins:plugin-item.more-info]] <a target="_blank" href="{../url}">{../url}</a></p>
<!-- ENDIF ../url -->
{{{ if ./url }}}
<p>[[admin/extend/plugins:plugin-item.more-info]] <a target="_blank" href="{./url}">{./url}</a></p>
{{{ end }}}
</li>

View File

@@ -1,10 +1,10 @@
<div class="row mb-2">
<!-- IF group.isOwner -->
{{{ if group.isOwner }}}
<div class="col-lg-1">
<button component="groups/members/add" type="button" class="btn btn-primary" title="[[groups:details.add-member]]"><i class="fa fa-user-plus"></i></button>
</div>
<!-- ENDIF group.isOwner -->
<div class="<!-- IF group.isOwner -->col-lg-11<!-- ELSE -->col-lg-12<!-- ENDIF group.isOwner -->">
{{{ end }}}
<div class="{{{ if group.isOwner }}}col-lg-11{{{ else }}}col-lg-12{{{ end }}}">
<div class="input-group">
<input class="form-control" type="text" component="groups/members/search" placeholder="[[global:search]]"/>
<span class="input-group-text search-button px-2"><i class="fa fa-search"></i></span>
@@ -14,15 +14,16 @@
<table component="groups/members" class="table table-striped table-hover" data-nextstart="{group.membersNextStart}">
<tbody>
<!-- BEGIN group.members -->
{{{ each group.members }}}
<tr data-uid="{group.members.uid}">
<td>
<a href="{config.relative_path}/user/{group.members.userslug}">{buildAvatar(group.members, "24px", true)}</a>
</td>
<td class="member-name">
<a href="{config.relative_path}/user/{group.members.userslug}">{group.members.username}</a> <i title="[[groups:owner]]" class="user-owner-icon fa fa-star text-warning <!-- IF !group.members.isOwner -->invisible<!-- ENDIF !group.members.isOwner -->"></i>
<a href="{config.relative_path}/user/{group.members.userslug}">{group.members.username}</a> <i title="[[groups:owner]]" class="user-owner-icon fa fa-star text-warning
{{{ if !group.members.isOwner }}}invisible{{{ end }}}"></i>
<!-- IF group.isOwner -->
{{{ if group.isOwner }}}
<div class="owner-controls btn-group float-end">
<a class="btn btn-sm" href="#" data-ajaxify="false" data-action="toggleOwnership" title="[[groups:details.grant]]">
<i class="fa fa-star"></i>
@@ -32,9 +33,9 @@
<i class="fa fa-ban"></i>
</a>
</div>
<!-- ENDIF group.isOwner -->
{{{ end }}}
</td>
</tr>
<!-- END group.members -->
{{{ end }}}
</tbody>
</table>

View File

@@ -10,7 +10,7 @@
<a class="dropdown-item" role="menuitem">[[search:no-matches]]</a>
</li>
{{{each categories}}}
<li role="presentation" class="category <!-- IF categories.disabledClass -->disabled<!-- ENDIF categories.disabledClass -->" data-cid="{categories.cid}" data-name="{categories.name}" data-parent-cid="{categories.parentCid}">
<li role="presentation" class="category {{{ if categories.disabledClass }}}disabled{{{ end }}}" data-cid="{categories.cid}" data-name="{categories.name}" data-parent-cid="{categories.parentCid}">
<a class="dropdown-item" role="menuitem">{categories.level}
<span component="category-markup">
<div class="category-item d-inline-block">

View File

@@ -1,60 +1,60 @@
<!-- IF !../error -->
<li id="{../id}" data-plugin-index="{@index}" data-plugin-id="{../id}" data-version="{../version}" class="clearfix <!-- IF ../active -->active<!-- ENDIF ../active -->">
{{{ if !./error }}}
<li id="{./id}" data-plugin-index="{@index}" data-plugin-id="{./id}" data-version="{./version}" class="clearfix {{{ if ./active }}}active{{{ end }}}">
<div class="float-end controls">
{{{ if ../installed }}}
<!-- IF ../isTheme -->
{{{ if ./installed }}}
{{{ if ./isTheme }}}
<a href="{config.relative_path}/admin/appearance/themes" class="btn btn-info">[[admin/extend/plugins:plugin-item.themes]]</a>
<!-- ELSE -->
<button data-action="toggleActive" class="btn <!-- IF ../active --> btn-warning<!-- ELSE --> btn-success<!-- ENDIF ../active --> <!-- IF !canChangeState -->disabled<!-- ENDIF -->">
<i class="fa fa-power-off"></i> <!-- IF ../active -->[[admin/extend/plugins:plugin-item.deactivate]]<!-- ELSE -->[[admin/extend/plugins:plugin-item.activate]]<!-- ENDIF ../active --></button>
<!-- ENDIF ../isTheme -->
{{{ else }}}
<button data-action="toggleActive" class="btn {{{ if ./active }}} btn-warning{{{ else }}} btn-success{{{ end }}} {{{ if !canChangeState }}}disabled{{{ end }}}">
<i class="fa fa-power-off"></i> {{{ if ./active }}}[[admin/extend/plugins:plugin-item.deactivate]]{{{ else }}}[[admin/extend/plugins:plugin-item.activate]]{{{ end }}}</button>
{{{ end }}}
<button data-action="toggleInstall" data-installed="1" class="btn btn-danger"><i class="fa fa-trash-o"></i> [[admin/extend/plugins:plugin-item.uninstall]]</button>
<!-- IF ../active -->
<!-- IF ../settingsRoute -->
<a href="{config.relative_path}{../settingsRoute}" class="btn btn-primary"><i class="fa fa-wrench"></i> [[admin/extend/plugins:plugin-item.settings]]</a>
<!-- ENDIF ../settingsRoute -->
<!-- ENDIF ../active -->
{{{ if ./active }}}
{{{ if ./settingsRoute }}}
<a href="{config.relative_path}{./settingsRoute}" class="btn btn-primary"><i class="fa fa-wrench"></i> [[admin/extend/plugins:plugin-item.settings]]</a>
{{{ end }}}
{{{ end }}}
{{{ else }}}
<button data-action="toggleInstall" data-installed="0" class="btn btn-success"><i class="fa fa-download"></i> [[admin/extend/plugins:plugin-item.install]]</button>
{{{ end }}}
</div>
<h2><strong>{../name}</strong></h2>
<h2><strong>{./name}</strong></h2>
<!-- IF ../description -->
<p>{../description}</p>
<!-- ENDIF ../description -->
<!-- IF ../outdated --><i class="fa fa-exclamation-triangle text-danger"></i> <!-- ENDIF ../outdated -->
<small>[[admin/extend/plugins:plugin-item.installed]] <strong class="currentVersion">{../version}</strong> | [[admin/extend/plugins:plugin-item.latest]] <strong class="latestVersion">{../latest}</strong></small>
{{{ if ./description }}}
<p>{./description}</p>
{{{ end }}}
{{{ if ./outdated }}}<i class="fa fa-exclamation-triangle text-danger"></i> {{{ end }}}
<small>[[admin/extend/plugins:plugin-item.installed]] <strong class="currentVersion">{./version}</strong> | [[admin/extend/plugins:plugin-item.latest]] <strong class="latestVersion">{./latest}</strong></small>
<!-- IF ../outdated -->
{{{ if ./outdated }}}
<button data-action="upgrade" class="btn btn-success btn-sm"><i class="fa fa-download"></i> [[admin/extend/plugins:plugin-item.upgrade]]</button>
<p>
<!-- IF ../isCompatible -->
{{{ if ./isCompatible }}}
<i class="fa fa-check text-success"></i> [[admin/extend/plugins:plugin-item.compatible, {version}]]
<!-- ELSE -->
{{{ else }}}
<i class="fa fa-question text-warning"></i> [[admin/extend/plugins:plugin-item.not-compatible]]
<!-- ENDIF -->
{{{ end }}}
</p>
<!-- ENDIF ../outdated -->
{{{ end }}}
<!-- IF ../url -->
<p>[[admin/extend/plugins:plugin-item.more-info]] <a target="_blank" href="{../url}">{../url}</a></p>
<!-- ENDIF ../url -->
{{{ if ./url }}}
<p>[[admin/extend/plugins:plugin-item.more-info]] <a target="_blank" href="{./url}">{./url}</a></p>
{{{ end }}}
</li>
<!-- ENDIF !../error -->
<!-- IF ../error -->
<li data-plugin-id="{../id}" class="clearfix">
{{{ end }}}
{{{ if ./error }}}
<li data-plugin-id="{./id}" class="clearfix">
<div class="float-end">
<button class="btn btn-outline-secondary disabled"><i class="fa fa-exclamation-triangle"></i> [[admin/extend/plugins:plugin-item.unknown]]</button>
<button data-action="toggleInstall" data-installed="1" class="btn btn-danger"><i class="fa fa-trash-o"></i> [[admin/extend/plugins:plugin-item.uninstall]]</button>
</div>
<h2><strong>{../id}</strong></h2>
<h2><strong>{./id}</strong></h2>
<p>
[[admin/extend/plugins:plugin-item.unknown-explanation]]
</p>
</li>
<!-- ENDIF ../error -->
{{{ end }}}

View File

@@ -4,7 +4,7 @@
<div class="group-area">
{{{ each users.groups }}}
<div class="group-card float-start m-1" data-group-name="{users.groups.nameEscaped}">
<a href="{config.relative_path}/admin/manage/groups/{users.groups.nameEncoded}"><span class="badge p-2" style="color:{users.groups.textColor}; background-color: {users.groups.labelColor};"><!-- IF users.groups.icon --><i class="fa {users.groups.icon}"></i> <!-- ENDIF users.groups.icon -->{users.groups.displayName} <i class="ms-2 remove-group-icon fa fa-times" role="button"></i></span></a>
<a href="{config.relative_path}/admin/manage/groups/{users.groups.nameEncoded}"><span class="badge p-2" style="color:{users.groups.textColor}; background-color: {users.groups.labelColor};">{{{ if users.groups.icon }}}<i class="fa {users.groups.icon}"></i> {{{ end }}}{users.groups.displayName} <i class="ms-2 remove-group-icon fa fa-times" role="button"></i></span></a>
</div>
{{{ end }}}
</div>

View File

@@ -77,31 +77,31 @@
</ul>
</section>
<!-- IF plugins.length -->
{{{ if plugins.length }}}
<section class="menu-section">
<h3 class="menu-section-title">[[admin/menu:section-plugins]]</h3>
<ul class="menu-section-list">
<!-- BEGIN plugins -->
{{{ each plugins }}}
<li>
<a href="{relative_path}/admin{plugins.route}">{plugins.name}</a>
<a href="{relative_path}/admin{./route}">{./name}</a>
</li>
<!-- END plugins -->
{{{ end }}}
</ul>
</section>
<!-- ENDIF plugins.length -->
{{{ end }}}
<!-- IF authentication.length -->
{{{ if authentication.length }}}
<section class="menu-section">
<h3 class="menu-section-title">[[admin/menu:section-social-auth]]</h3>
<ul class="menu-section-list">
<!-- BEGIN authentication -->
{{{ each authentication }}}
<li>
<a href="{relative_path}/admin{authentication.route}">{authentication.name}</a>
<a href="{relative_path}/admin{./route}">{./name}</a>
</li>
<!-- END authentication -->
{{{ end }}}
</ul>
</section>
<!-- ENDIF authentication.length -->
{{{ end }}}
{{{ end }}}
{{{ if user.privileges.superadmin }}}
@@ -114,9 +114,9 @@
<li><a href="{relative_path}/admin/advanced/cache">[[admin/menu:advanced/cache]]</a></li>
<li><a href="{relative_path}/admin/advanced/errors">[[admin/menu:advanced/errors]]</a></li>
<li><a href="{relative_path}/admin/advanced/logs">[[admin/menu:advanced/logs]]</a></li>
<!-- IF env -->
{{{ if env }}}
<li><a href="{relative_path}/admin/development/logger">[[admin/menu:development/logger]]</a></li>
<!-- ENDIF env -->
{{{ end }}}
</ul>
</section>
{{{ end }}}
@@ -253,34 +253,32 @@
<li><a class="dropdown-item" href="{relative_path}/admin/extend/rewards">[[admin/menu:extend/rewards]]</a></li>
</ul>
</li>
<!-- IF plugins.length -->
{{{ if plugins.length }}}
<li class="dropdown menu-item">
<a href="#" class="dropdown-toggle" data-bs-toggle="dropdown" role="button" aria-expanded="false">[[admin/menu:section-plugins]]</a>
<ul class="dropdown-menu plugins-menu" role="menu">
<li class="dropdown-header">[[admin/menu:section-plugins]]</li>
<!-- BEGIN plugins -->
{{{ each plugins }}}
<li>
<a class="dropdown-item" href="{relative_path}/admin{plugins.route}">{plugins.name}</a>
<a class="dropdown-item" href="{relative_path}/admin{./route}">{./name}</a>
</li>
<!-- END plugins -->
<!-- IF authentication.length -->
{{{ end }}}
{{{ if authentication.length }}}
<li class="dropdown-divider"></li>
{{{if authentication.length}}}
<li class="dropdown-header">[[admin/menu:section-social-auth]]</li>
{{{each authentication}}}
{{{ each authentication }}}
<li>
<a class="dropdown-item" href="{relative_path}/admin{authentication.route}">{authentication.name}</a>
<a class="dropdown-item" href="{relative_path}/admin{./route}">{./name}</a>
</li>
{{{end}}}
{{{end}}}
<!-- ENDIF authentication.length -->
{{{ end }}}
{{{ end }}}
<li class="dropdown-divider"></li>
<li data-link="1">
<a class="dropdown-item" href="{relative_path}/admin/extend/plugins#download">[[admin/menu:extend/plugins.install]]</a>
</li>
</ul>
</li>
<!-- ENDIF plugins.length -->
{{{ end }}}
{{{ end }}}
{{{ if user.privileges.superadmin }}}
@@ -293,9 +291,9 @@
<li><a class="dropdown-item" href="{relative_path}/admin/advanced/cache">[[admin/menu:advanced/cache]]</a></li>
<li><a class="dropdown-item" href="{relative_path}/admin/advanced/errors">[[admin/menu:advanced/errors]]</a></li>
<li><a class="dropdown-item" href="{relative_path}/admin/advanced/logs">[[admin/menu:advanced/logs]]</a></li>
<!-- IF env -->
{{{ if env }}}
<li><a class="dropdown-item" href="{relative_path}/admin/development/logger">[[admin/menu:development/logger]]</a></li>
<!-- ENDIF env -->
{{{ end }}}
</ul>
</li>
{{{ end }}}

View File

@@ -7,9 +7,9 @@
<button type="button" data-filter="3,5" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-viewing]]</button>
<button type="button" data-filter="6,15" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-posting]]</button>
<button type="button" data-filter="16,18" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-moderation]]</button>
<!-- IF privileges.columnCountGroupOther -->
{{{ if privileges.columnCountGroupOther }}}
<button type="button" data-filter="19,99" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-other]]</button>
<!-- END -->
{{{ end }}}
</div>
</th>
</tr><tr><!-- zebrastripe reset --></tr>
@@ -22,8 +22,8 @@
</tr>
</thead>
<tbody>
<!-- BEGIN privileges.groups -->
<tr data-group-name="{privileges.groups.nameEscaped}" data-private="<!-- IF privileges.groups.isPrivate -->1<!-- ELSE -->0<!-- ENDIF privileges.groups.isPrivate -->">
{{{ each privileges.groups }}}
<tr data-group-name="{privileges.groups.nameEscaped}" data-private="{{{ if privileges.groups.isPrivate }}}1{{{ else }}}0{{{ end }}}">
<td>
{{{ if privileges.groups.isPrivate }}}
{{{ if (privileges.groups.name == "banned-users") }}}
@@ -55,7 +55,7 @@
</td>
{function.spawnPrivilegeStates, privileges.groups.name, ../privileges}
</tr>
<!-- END privileges.groups -->
{{{ end }}}
</tbody>
<tfoot>
<tr>
@@ -96,9 +96,9 @@
<button type="button" data-filter="3,5" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-viewing]]</button>
<button type="button" data-filter="6,15" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-posting]]</button>
<button type="button" data-filter="16,18" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-moderation]]</button>
<!-- IF privileges.columnCountUserOther -->
{{{ if privileges.columnCountUserOther }}}
<button type="button" data-filter="19,99" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-other]]</button>
<!-- END -->
{{{ end }}}
</div>
</th>
</tr><tr><!-- zebrastripe reset --></tr>
@@ -111,14 +111,14 @@
</tr>
</thead>
<tbody>
<!-- BEGIN privileges.users -->
{{{ each privileges.users }}}
<tr data-uid="{privileges.users.uid}"{{{ if privileges.users.banned }}} data-banned{{{ end }}}>
<td>
<!-- IF ../picture -->
{{{ if ./picture }}}
<img class="avatar avatar-sm" src="{privileges.users.picture}" title="{privileges.users.username}" alt="" />
<!-- ELSE -->
{{{ else }}}
<div class="avatar avatar-sm" style="background-color: {../icon:bgColor};">{../icon:text}</div>
<!-- ENDIF ../picture -->
{{{ end }}}
</td>
<td>
{{{ if privileges.users.banned }}}
@@ -129,7 +129,7 @@
<td class="text-center"><input autocomplete="off" type="checkbox" class="checkbox-helper"></td>
{function.spawnPrivilegeStates, privileges.users.username, ../privileges}
</tr>
<!-- END privileges.users -->
{{{ end }}}
</tbody>
<tfoot>
<tr>

View File

@@ -8,9 +8,9 @@
<button type="button" data-filter="9,15" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-viewing]]</button>
<button type="button" data-filter="3,8" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-posting]]</button>
<button type="button" data-filter="16,18" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-moderation]]</button>
<!-- IF privileges.columnCountGroupOther -->
{{{ if privileges.columnCountGroupOther }}}
<button type="button" data-filter="19,99" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-other]]</button>
<!-- END -->
{{{ end }}}
</div>
</th>
</tr><tr><!-- zebrastripe reset --></tr>
@@ -24,8 +24,8 @@
</tr>
</thead>
<tbody>
<!-- BEGIN privileges.groups -->
<tr data-group-name="{privileges.groups.nameEscaped}" data-private="<!-- IF privileges.groups.isPrivate -->1<!-- ELSE -->0<!-- ENDIF privileges.groups.isPrivate -->">
{{{ each privileges.groups }}}
<tr data-group-name="{privileges.groups.nameEscaped}" data-private="{{{ if privileges.groups.isPrivate }}}1{{{ else }}}0{{{ end }}}">
<td>
{{{ if privileges.groups.isPrivate }}}
{{{ if (privileges.groups.name == "banned-users") }}}
@@ -42,7 +42,7 @@
<td class="text-center"><input autocomplete="off" type="checkbox" class="checkbox-helper"></td>
{function.spawnPrivilegeStates, privileges.groups.name, ../privileges}
</tr>
<!-- END privileges.groups -->
{{{ end }}}
</tbody>
<tfoot>
<tr>
@@ -72,9 +72,9 @@
<button type="button" data-filter="9,15" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-viewing]]</button>
<button type="button" data-filter="3,8" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-posting]]</button>
<button type="button" data-filter="16,18" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-moderation]]</button>
<!-- IF privileges.columnCountUserOther -->
{{{ if privileges.columnCountUserOther }}}
<button type="button" data-filter="19,99" class="btn btn-outline-secondary">[[admin/manage/categories:privileges.section-other]]</button>
<!-- END -->
{{{ end }}}
</div>
</th>
</tr><tr><!-- zebrastripe reset --></tr>
@@ -88,14 +88,14 @@
</tr>
</thead>
<tbody>
<!-- BEGIN privileges.users -->
{{{ each privileges.users }}}
<tr data-uid="{privileges.users.uid}"{{{ if privileges.users.banned }}} data-banned{{{ end }}}>
<td>
<!-- IF ../picture -->
{{{ if ./picture }}}
<img class="avatar avatar-sm" src="{privileges.users.picture}" title="{privileges.users.username}" alt="" />
<!-- ELSE -->
{{{ else }}}
<div class="avatar avatar-sm" style="background-color: {../icon:bgColor};">{../icon:text}</div>
<!-- ENDIF ../picture -->
{{{ end }}}
</td>
<td>
{{{ if privileges.users.banned }}}
@@ -106,7 +106,7 @@
<td class="text-center"><input autocomplete="off" type="checkbox" class="checkbox-helper"></td>
{function.spawnPrivilegeStates, privileges.users.username, ../privileges}
</tr>
<!-- END privileges.users -->
{{{ end }}}
</tbody>
<tfoot>
<tr>

View File

@@ -1,10 +1,10 @@
<div class="alert <!-- IF upgradeAvailable -->alert-warning<!-- ELSE -->alert-info<!-- END --> well-sm">
<div class="alert {{{ if upgradeAvailable }}}alert-warning{{{ else }}}alert-info{{{ end }}}">
<span>[[admin/menu:alerts.version, {version}]]</span>
<!-- IF upgradeAvailable -->
{{{ if upgradeAvailable }}}
<span style="margin-left: 10px">
<a href="https://docs.nodebb.org/configuring/upgrade/" target="_blank">
<u>[[admin/menu:alerts.upgrade, {latestVersion}]]</u>
</a>
</span>
<!-- END -->
{{{ end }}}
</div>

View File

@@ -1,24 +1,24 @@
<!-- BEGIN themes -->
<div class="col-lg-4 col-md-6 col-12 mb-4" data-type="{themes.type}" data-theme="{themes.id}"{{{ if themes.css }}} data-css="{themes.css}" {{{ end }}}>
{{{ each themes }}}
<div class="col-lg-4 col-md-6 col-12 mb-4" data-type="{./type}" data-theme="{./id}"{{{ if ./css }}} data-css="{./css}" {{{ end }}}>
<div class="card h-100">
<img src="{themes.screenshot_url}" class="card-img-top">
<img src="{./screenshot_url}" class="card-img-top">
<div class="card-body">
<h5 class="card-title">{themes.name}</h5>
<h5 class="card-title">{./name}</h5>
<p class="card-text">
{themes.description}
{./description}
</p>
{{{ if themes.url }}}
{{{ if ./url }}}
<p>
<a href="{themes.url}" target="_blank">[[admin/appearance/themes:homepage]]</a>
<a href="{./url}" target="_blank">[[admin/appearance/themes:homepage]]</a>
</p>
{{{ end }}}
</div>
<div class="card-footer">
<a class="btn btn-primary" data-action="use">
{{{ if themes.skin }}}[[admin/appearance/skins:select-skin]]{{{ else }}}[[admin/appearance/themes:select-theme]]{{{ end }}}
{{{ if ./skin }}}[[admin/appearance/skins:select-skin]]{{{ else }}}[[admin/appearance/themes:select-theme]]{{{ end }}}
</a>
</div>
</div>
</div>
<!-- END themes -->
{{{ end }}}

View File

@@ -2,17 +2,17 @@
<div class="col-lg-6">
<label>[[admin/extend/widgets:show-to-groups]]</label>
<select name="groups" class="form-select" multiple size="10">
<!-- BEGIN groups -->
<option value="{groups.displayName}">{groups.displayName}</option>
<!-- END groups -->
{{{ each groups }}}
<option value="{./displayName}">{./displayName}</option>
{{{ end }}}
</select>
</div>
<div class="col-lg-6">
<label>[[admin/extend/widgets:hide-from-groups]]</label>
<select name="groupsHideFrom" class="form-select" multiple size="10">
<!-- BEGIN groups -->
<option value="{groups.displayName}">{groups.displayName}</option>
<!-- END groups -->
{{{ each groups }}}
<option value="{./displayName}">{./displayName}</option>
{{{ end }}}
</select>
</div>
</div>

View File

@@ -175,9 +175,9 @@
<div class="mb-3">
<label class="form-label" for="email-editor-selector">[[admin/settings/email:template.select]]</label>
<select id="email-editor-selector" class="form-select">
<!-- BEGIN emails -->
<option value="{emails.path}">{emails.path}</option>
<!-- END emails -->
{{{ each emails }}}
<option value="{./path}">{./path}</option>
{{{ end }}}
</select>
</div>
<div class="mb-3">
@@ -195,9 +195,9 @@
<div class="mb-3">
<label class="form-label" for="test-email">[[admin/settings/email:testing.select]]</label>
<select id="test-email" class="form-select">
<!-- BEGIN sendable -->
{{{ each sendable }}}
<option value="{@value}">{@value}</option>
<!-- END sendable -->
{{{ end }}}
</select>
</div>
<button class="btn btn-primary" type="button" data-action="email.test">[[admin/settings/email:testing.send]]</button>

View File

@@ -10,9 +10,9 @@
<div class="mb-3">
<label class="form-label" for="homePageRoute">[[admin/settings/homepage:home-page-route]]</label>
<select id="homePageRoute" class="form-select" data-field="homePageRoute">
<!-- BEGIN routes -->
<option value="{routes.route}">{routes.name}</option>
<!-- END routes -->
{{{ each routes }}}
<option value="{./route}">{./name}</option>
{{{ end }}}
</select>
</div>
<div id="homePageCustom" class="mb-3" style="display: none;">

View File

@@ -11,9 +11,9 @@
<div class="form-group col-sm-6">
<label class="form-label" for="language">[[admin/settings/languages:default-language]]</label>
<select id="language" data-field="defaultLang" class="form-select">
<!-- BEGIN languages -->
<option value="{languages.code}" <!-- IF languages.selected -->selected<!-- ENDIF languages.selected -->>{languages.name} ({languages.code})</option>
<!-- END languages -->
{{{ each languages }}}
<option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
{{{ end }}}
</select>
</div>
</form>
@@ -21,7 +21,7 @@
<form class="row">
<div class="form-group col-sm-6">
<div class="formcheck">
<input class="form-check-input" type="checkbox" data-field="autoDetectLang" <!-- IF autoDetectLang -->checked<!-- ENDIF autoDetectLang -->/>
<input class="form-check-input" type="checkbox" data-field="autoDetectLang" {{{ if autoDetectLang }}}checked{{{ end }}}/>
<label class="form-check-label">[[admin/settings/languages:auto-detect]]</label>
</div>
</div>

View File

@@ -2,13 +2,13 @@
<div class="col-lg-9">
<div class="clearfix">
<ul id="active-navigation" class="nav">
<!-- BEGIN navigation -->
{{{ each navigation }}}
<li data-index="{navigation.index}" class="float-start nav-item {navigation.class} {{{ if navigation.selected }}} active {{{ end }}}">
<a href="#" title="{navigation.route}" id="{navigation.id}" class="nav-link p-3 {{{ if !navigation.enabled }}}text-muted{{{ end }}}">
<i class="nav-icon fa fa-fw {{{ if navigation.iconClass }}}{navigation.iconClass}{{{ end }}}"></i><i class="dropdown-icon fa fa-caret-down{{{ if !navigation.dropdown }}} hidden{{{ end }}}"></i>
</a>
</li>
<!-- END navigation -->
{{{ end }}}
</ul>
</div>
@@ -16,7 +16,7 @@
<ul id="enabled">
{{{ each enabled }}}
<li data-index="{enabled.index}" class="card card-body text-bg-light border-0 <!-- IF !enabled.selected -->hidden<!-- ENDIF !enabled.selected -->">
<li data-index="{enabled.index}" class="card card-body text-bg-light border-0 {{{ if !enabled.selected }}}hidden{{{ end }}}">
<form>
<div class="row">
<div class="col-sm-12 text-end mb-3">
@@ -33,7 +33,7 @@
<div class="col-sm-1">
<label class="form-label">[[admin/settings/navigation:icon]]</label>
<span class="iconPicker"><i class="fa fa-2x {enabled.iconClass}"></i>
<a class="change-icon-link <!-- IF enabled.iconClass -->hidden<!-- ENDIF enabled.iconClass -->" href="#">[[admin/settings/navigation:change-icon]]</a>
<a class="change-icon-link {{{ if enabled.iconClass }}}hidden{{{ end }}}" href="#">[[admin/settings/navigation:change-icon]]</a>
<input class="form-control" type="hidden" name="iconClass" value="{enabled.iconClass}" />
</span>
</div>
@@ -77,14 +77,14 @@
<select name="groups" class="form-select" size="10" multiple>
{{{ each enabled.groups }}}
<option value="{enabled.groups.displayName}"<!-- IF enabled.groups.selected --> selected<!-- ENDIF enabled.groups.selected -->>{enabled.groups.displayName}</option>
<option value="{enabled.groups.displayName}"{{{ if enabled.groups.selected }}} selected{{{ end }}}>{enabled.groups.displayName}</option>
{{{ end }}}
</select>
</div>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" name="targetBlank" <!-- IF enabled.targetBlank -->checked<!-- ENDIF enabled.targetBlank -->/>
<input class="form-check-input" type="checkbox" name="targetBlank" {{{ if enabled.targetBlank }}}checked{{{ end }}}/>
<label class="form-check-label">[[admin/settings/navigation:open-new-window]]</label>
</div>
@@ -119,12 +119,12 @@
</li>
{{{ each available }}}
<li data-id="{@index}" class="clearfix">
<div data-id="{@index}" class="drag-item alert <!-- IF available.core -->alert-warning<!-- ELSE -->alert-info<!-- ENDIF available.core --> float-start">
<i class="fa fa-fw <!-- IF available.iconClass -->{available.iconClass}<!-- ELSE -->fa-navicon<!-- ENDIF available.iconClass -->"></i>
<div data-id="{@index}" class="drag-item alert {{{ if available.core }}}alert-warning{{{ else }}}alert-info{{{ end }}} float-start">
<i class="fa fa-fw {{{ if available.iconClass }}}{available.iconClass}{{{ else }}}fa-navicon{{{ end }}}"></i>
</div>
<p>
<strong>{available.text}</strong> {available.route} <br/>
<!-- IF available.core --> [[admin/settings/navigation:core]] <!-- ELSE --> [[admin/settings/navigation:plugin]] <!-- ENDIF available.core -->
{{{ if available.core }}} [[admin/settings/navigation:core]] {{{ else }}} [[admin/settings/navigation:plugin]] {{{ end }}}
</p>
</li>
{{{ end }}}

View File

@@ -140,9 +140,9 @@
<div class="mb-3">
<label class="form-label" for="groupsExemptFromPostQueue">[[admin/settings/post:restrictions.groups-exempt-from-post-queue]]</label>
<select id="groupsExemptFromPostQueue" class="form-select" multiple data-field="groupsExemptFromPostQueue">
<!-- BEGIN groupsExemptFromPostQueue -->
{{{ each groupsExemptFromPostQueue }}}
<option value="{groupsExemptFromPostQueue.displayName}">{groupsExemptFromPostQueue.displayName}</option>
<!-- END -->
{{{ end }}}
</select>
</div>
</div>

View File

@@ -4,14 +4,14 @@
<div class="col-sm-2 col-12 settings-header">[[admin/settings/social:post-sharing]]</div>
<div class="col-sm-10 col-12">
<div class="form-group" id="postSharingNetworks">
<!-- BEGIN posts -->
{{{ each posts }}}
<div class="form-check form-switch mb-3">
<input type="checkbox" class="form-check-input" id="{posts.id}" data-field="{posts.id}" name="{posts.id}" <!-- IF posts.activated -->checked<!-- ENDIF posts.activated --> />
<input type="checkbox" class="form-check-input" id="{posts.id}" data-field="{posts.id}" name="{posts.id}" {{{ if posts.activated }}}checked{{{ end }}} />
<label for="{posts.id}" class="form-check-label">
<i class="fa {posts.class}"></i> {posts.name}
</label>
</div>
<!-- END posts -->
{{{ end }}}
<p class="form-text">[[admin/settings/social:info-plugins-additional]]</p>
</div>
</div>

View File

@@ -313,13 +313,13 @@
<label class="form-label">[[admin/settings/user:default-notification-settings]]</label>
<!-- BEGIN notificationSettings -->
{{{ each notificationSettings }}}
<div class="row">
<div class="mb-3 col-7">
<label class="form-label">{notificationSettings.label}</label>
<label class="form-label">{./label}</label>
</div>
<div class="mb-3 col-5">
<select class="form-select" data-field="{notificationSettings.name}">
<select class="form-select" data-field="{./name}">
<option value="none">[[notifications:none]]</option>
<option value="notification">[[notifications:notification_only]]</option>
<option value="email">[[notifications:email_only]]</option>
@@ -327,8 +327,7 @@
</select>
</div>
</div>
<!-- END notificationSettings -->
{{{ end }}}
</form>
</div>
</div>

View File

@@ -16,7 +16,7 @@
<h1 style="margin: 0 0 10px 0; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 18px; line-height: 21px; color: #aaaaaa; font-weight: normal;">[[email:banned.text1, {username}, {site_title}]]</h1>
</td>
</tr>
<!-- IF reason -->
{{{ if reason }}}
<tr>
<td style="padding: 20px 40px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 15px; line-height: 20px; color: #555555;">
<p style="margin: 0;">
@@ -27,8 +27,8 @@
</p>
</td>
</tr>
<!-- ENDIF reason -->
<!-- IF until -->
{{{ end }}}
{{{ if until }}}
<tr>
<td style="padding: 20px 40px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 15px; line-height: 20px; color: #555555;">
<p style="margin: 0;">
@@ -36,7 +36,7 @@
</p>
</td>
</tr>
<!-- ENDIF until -->
{{{ end }}}
</table>
</td>
</tr>

View File

@@ -17,20 +17,20 @@
<h1 style="margin: 0 0 10px 0; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 18px; line-height: 21px; color: #aaaaaa; font-weight: normal;">[[email:digest.title.{interval}]]</h1>
</td>
</tr>
<!-- IF notifications.length -->
{{{ if notifications.length }}}
<tr>
<td style="padding: 0px 40px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 15px; line-height: 20px; color: #555555;">
<ul style="margin: 0; padding: 0;">
<!-- BEGIN notifications -->
{{{ each notifications }}}
<li style="text-decoration: none; list-style-type: none; padding-bottom: 0.5em;">
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td style="padding: 16px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; width: 32px;">
<!-- IF notifications.image -->
{{{ if notifications.image }}}
<img style="vertical-align: middle; width: 32px; height: 32px; border-radius: 50%" src="{notifications.image}" alt="" />
<!-- ELSE -->
{{{ else }}}
<div style="vertical-align: middle; width: 32px; height: 32px; line-height: 32px; font-size: 16px; background-color: {notifications.user.icon:bgColor}; color: white; text-align: center; display: inline-block; border-radius: 50%">{notifications.user.icon:text}</div>
<!-- ENDIF notifications.image -->
{{{ end }}}
</td>
<td style="padding: 16px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; line-height: 16px; color: #333333;">
<p style="margin: 0;"><a style="text-decoration:none !important; text-decoration:none; color: #333333;" href="{notifications.notification_url}">{notifications.bodyShort}</a></p>
@@ -38,17 +38,17 @@
</tr>
</table>
</li>
<!-- END notifications -->
{{{ end }}}
</ul>
</td>
</tr>
<!-- ENDIF notifications.length -->
<!-- IF topTopics.length -->
{{{ end }}}
{{{ if topTopics.length }}}
<tr>
<td style="padding: 0px 40px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 15px; line-height: 20px; color: #555555;">
<h1 style="margin: 16px 0 24px 0; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 18px; line-height: 21px; color: #aaaaaa; font-weight: normal;">[[email:digest.top-topics, {site_title}]]</h1>
<ul style="margin: 0; padding: 0;">
<!-- BEGIN topTopics -->
{{{ each topTopics }}}
<li style="text-decoration: none; list-style-type: none; padding-bottom: 0.5em;">
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
@@ -70,20 +70,20 @@
</tr>
</table>
</li>
<!-- IF !@last -->
{{{ if !@last }}}
<li style="text-decoration: none; list-style-type: none; margin: 0px 64px 16px 64px; border-bottom: 1px solid #dddddd"></li>
<!-- END -->
<!-- END -->
{{{ end }}}
{{{ end }}}
</ul>
</td>
</tr>
<!-- END -->
<!-- IF popularTopics.length -->
{{{ end }}}
{{{ if popularTopics.length }}}
<tr>
<td style="padding: 0px 40px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 15px; line-height: 20px; color: #555555;">
<h1 style="margin: 16px 0 24px 0; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 18px; line-height: 21px; color: #aaaaaa; font-weight: normal;">[[email:digest.popular-topics, {site_title}]]</h1>
<ul style="margin: 0; padding: 0;">
<!-- BEGIN popularTopics -->
{{{ each popularTopics }}}
<li style="text-decoration: none; list-style-type: none; padding-bottom: 0.5em;">
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
@@ -105,20 +105,20 @@
</tr>
</table>
</li>
<!-- IF !@last -->
{{{ if !@last }}}
<li style="text-decoration: none; list-style-type: none; margin: 0px 64px 16px 64px; border-bottom: 1px solid #dddddd"></li>
<!-- END -->
<!-- END -->
{{{ end }}}
{{{ end }}}
</ul>
</td>
</tr>
<!-- END -->
<!-- IF recent.length -->
{{{ end }}}
{{{ if recent.length }}}
<tr>
<td style="padding: 0px 40px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 15px; line-height: 20px; color: #555555;">
<h1 style="margin: 16px 0 24px 0; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 18px; line-height: 21px; color: #aaaaaa; font-weight: normal;">[[email:digest.latest_topics, {site_title}]]</h1>
<ul style="margin: 0; padding: 0;">
<!-- BEGIN recent -->
{{{ each recent }}}
<li style="text-decoration: none; list-style-type: none; padding-bottom: 0.5em;">
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
@@ -140,14 +140,14 @@
</tr>
</table>
</li>
<!-- IF !@last -->
{{{ if !@last }}}
<li style="text-decoration: none; list-style-type: none; margin: 0px 64px 16px 64px; border-bottom: 1px solid #dddddd"></li>
<!-- END -->
<!-- END -->
{{{ end }}}
{{{ end }}}
</ul>
</td>
</tr>
<!-- END -->
{{{ end }}}
<tr>
<td style="padding: 32px 40px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 15px; line-height: 20px; color: #555555;">
<!-- Button : BEGIN -->

View File

@@ -31,7 +31,7 @@
<tr>
<td style="border-radius: 3px; background: #222222; text-align: center;" class="button-td">
<a href="{notification_url}" style="background: #222222; border: 15px solid #222222; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 13px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 3px; font-weight: bold;" class="button-a">
<span style="color:#ffffff;" class="button-link">[[email:notif.cta<!-- IF notification.cta-type -->-{notification.cta-type}<!-- END -->]] &rarr;</span>
<span style="color:#ffffff;" class="button-link">[[email:notif.cta{{{ if notification.cta-type }}}-{notification.cta-type}{{{ end }}}]] &rarr;</span>
</a>
</td>
</tr>

View File

@@ -3,10 +3,10 @@
<tr>
<td style="padding: 40px 10px;width: 100%;font-size: 12px; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; line-height:18px; text-align: center; color: #888888;">
<br><br>
<!-- IF showUnsubscribe -->
{{{ if showUnsubscribe }}}
[[email:notif.post.unsub.info]] <a href="{url}/uid/{uid}/settings">[[email:unsub.cta]]</a>.
<br />[[email:notif.post.unsub.one-click]] <a href="{unsubUrl}">[[email:unsubscribe]]</a>.
<!-- ENDIF showUnsubscribe -->
{{{ end }}}
<br><br>
</td>
</tr>

View File

@@ -165,7 +165,7 @@
1. max-width for all clients except Desktop Windows Outlook, allowing the email to squish on narrow but never go wider than 600px.
2. MSO tags for Desktop Windows Outlook enforce a 600px width.
-->
<div style="max-width: 600px; margin: auto;<!-- IF rtl --> text-align: right; direction: rtl;<!-- END -->" class="email-container">
<div style="max-width: 600px; margin: auto;{{{ if rtl }}} text-align: right; direction: rtl;{{{ end }}}" class="email-container">
<!--[if mso]>
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="600" align="center">
<tr>
@@ -176,11 +176,11 @@
<table role="presentation" cellspacing="0" cellpadding="0" border="0" align="center" width="100%" style="max-width: 600px;">
<tr>
<td style="padding: 20px 0; text-align: center">
<!-- IF logo.src -->
{{{ if logo.src }}}
<img src="{logo.src}" height="{logo.height}" width="{logo.width}" alt="{site_title}" border="0" style="height: {logo.height}px; width: {logo.width}px; background: #f6f6f6; font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol; font-size: 15px; line-height: 20px; color: #333333;">
<!-- ELSE -->
{{{ else }}}
&nbsp;
<!-- ENDIF logo.src -->
{{{ end }}}
</td>
</tr>
</table>

View File

@@ -31,7 +31,7 @@
</div>
<div class="modal-footer">
<button class="btn btn-outline-secondary" data-bs-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary upload-btn <!-- IF !allowSkippingCrop -->hidden<!-- ENDIF !allowSkippingCrop -->">[[user:upload_picture]]</button>
<button class="btn btn-primary upload-btn {{{ if !allowSkippingCrop }}}hidden{{{ end }}}">[[user:upload_picture]]</button>
<button class="btn btn-primary crop-btn">[[user:upload_cropped_picture]]</button>
</div>
</div>

View File

@@ -5,8 +5,8 @@
<div class="">
<label class="form-label" for="invite-modal-groups">[[users:groups-to-join]]</label>
<select id="invite-modal-groups" class="form-control" multiple size="5">
<!-- BEGIN groups -->
{{{ each groups }}}
<option value="{@value}">{@value}</option>
<!-- END groups -->
{{{ end }}}
</select>
</div>

View File

@@ -1,21 +1,21 @@
<p class="number-of-diffs">
<!-- IF numDiffs -->
{{{ if numDiffs }}}
[[topic:diffs.description, {numDiffs}]]
<!-- ELSE -->
{{{ else }}}
[[topic:diffs.no-revisions-description, {numDiffs}]]
<!-- END -->
{{{ end }}}
</p>
<!-- IF numDiffs -->
{{{ if numDiffs }}}
<div class="mb-3">
<select class="form-control">
{{{each diffs}}}
{{{ each diffs }}}
<option value="{../timestamp}">
{../pretty}
{{{ if ../username }}}[{../username}]{{{ end }}}
<!-- IF @first -->([[topic:diffs.current-revision]])<!-- END -->
<!-- IF @last -->([[topic:diffs.original-revision]])<!-- END -->
{./pretty}
{{{ if ./username }}}[{./username}]{{{ end }}}
{{{ if @first }}}([[topic:diffs.current-revision]]){{{ end }}}
{{{ if @last }}}([[topic:diffs.original-revision]]){{{ end }}}
</option>
{{{end}}}
{{{ end }}}
</select>
<hr />
@@ -33,4 +33,4 @@
{{{ end }}}
</div>
<!-- END -->
{{{ end }}}

View File

@@ -8,19 +8,19 @@
<div class="modal-body">
<form id="uploadForm" action="" method="post" enctype="multipart/form-data">
<div class="form-group">
<!-- IF description -->
{{{ if description }}}
<label for="fileInput">{description}</label>
<!-- ENDIF description -->
<input type="file" id="fileInput" name="files[]" <!-- IF accept -->accept="{accept}"<!-- ENDIF accept -->>
<!-- IF showHelp -->
{{{ end }}}
<input type="file" id="fileInput" name="files[]" {{{ if accept }}}accept="{accept}"{{{ end }}}>
{{{ if showHelp }}}
<p class="form-text">
<!-- IF accept -->
{{{ if accept }}}
[[global:allowed-file-types, {accept}]]
<!-- ENDIF accept -->
{{{ end }}}
<!-- IF fileSize --><span id="file-size-block">([[uploads:maximum-file-size, {fileSize}]])</span><!-- ENDIF fileSize -->
{{{ if fileSize }}}<span id="file-size-block">([[uploads:maximum-file-size, {fileSize}]])</span>{{{ end }}}
</p>
<!-- ENDIF showHelp -->
{{{ end }}}
</div>
<input type="hidden" id="params" name="params" />
</form>

View File

@@ -1,10 +1,14 @@
<h3>[[global:upvoters]] <small>({upvoteCount})</small></h3>
{{{each upvoters}}}
<a href="{config.relative_path}/user/{upvoters.userslug}">{buildAvatar(upvoters, "24px", true)}</a>
{{{end}}}
<!-- IF showDownvotes -->
<h3>[[global:downvoters]] <small>({downvoteCount})</small></h3>
{{{each downvoters}}}
<a href="{config.relative_path}/user/{downvoters.userslug}">{buildAvatar(downvoters, "24px", true)}</a>
{{{end}}}
<!-- ENDIF showDownvotes -->
<div class="mb-3">
<h4>[[global:upvoters]] <small>({upvoteCount})</small></h4>
{{{ each upvoters }}}
<a class="text-decoration-none" href="{config.relative_path}/user/{./userslug}">{buildAvatar(@value, "24px", true)}</a>
{{{ end }}}
</div>
{{{ if showDownvotes }}}
<div>
<h4>[[global:downvoters]] <small>({downvoteCount})</small></h4>
{{{ each downvoters }}}
<a class="text-decoration-none" href="{config.relative_path}/user/{./userslug}">{buildAvatar(@value, "24px", true)}</a>
{{{ end }}}
</div>
{{{ end }}}

View File

@@ -12,9 +12,9 @@
}
function prepareFooter() {
<!-- IF useCustomJS -->
{{{ if useCustomJS }}}
{{customJS}}
<!-- ENDIF useCustomJS -->
{{{ end }}}
$(document).ready(function () {
app.coldLoad();

View File

@@ -8,13 +8,13 @@
</div>
<p>
[[user:consent.email_intro]]
<!-- IF digestEnabled -->
{{{ if digestEnabled }}}
[[user:consent.digest_frequency, {digestFrequency}]]
<!-- ELSE -->
{{{ else }}}
[[user:consent.digest_off]]
<!-- END -->
{{{ end }}}
</p>
<div class="checkbox">
<label>
<input type="checkbox" name="gdpr_agree_email" id="gdpr_agree_email"> <strong>[[register:gdpr_agree_email]]</strong>