This commit is contained in:
2025-01-04 00:34:03 +01:00
parent 41829408dc
commit 0ca14bbc19
18111 changed files with 1871397 additions and 0 deletions

View File

@@ -0,0 +1,134 @@
{{#*inline "deviceList"}}
<div class="form-group stacked">
<label>{{localize label}}:</label>
<select name="{{name}}">
{{#if disabledLabel}}
<option value="disabled" {{#if disabled}}selected{{/if}}>{{localize disabledLabel}}</option>
{{/if}}
{{#select device}}
<option value="default">{{localize "WEBRTC.DefaultSource"}}</option>
{{#each deviceList as |label d|}}
<option value="{{d}}">{{label}}</option>
{{/each}}
{{/select}}
{{#if unavailable}}
<option value="{{device}}" selected>{{localize "WEBRTC.UnavailableDevice"}}</option>
{{/if}}
</select>
<p class="notes">{{localize notes}}</p>
</div>
{{/inline}}
<form>
<!-- Sheet Navigation Tabs -->
<nav class="sheet-tabs tabs" aria-role="{{localize 'SHEETS.FormNavLabel'}}">
<a class="item" data-tab="general">
<i class="fas fa-headset"></i> {{localize "WEBRTC.GeneralTab"}}
</a>
<a class="item" data-tab="devices">
<i class="fas fa-headset"></i> {{localize "WEBRTC.DevicesTab"}}
</a>
{{#if user.isGM}}
<a class="item" data-tab="server">
<i class="fas fa-server"></i> {{localize "WEBRTC.ServerTab"}}
</a>
{{/if}}
</nav>
<!-- General Tab -->
<div class="tab" data-tab="general">
<div class="form-group stacked">
<label>{{localize "WEBRTC.AVMode"}}:</label>
<select name="world.mode" data-dtype="Number" {{#unless canSelectMode}}disabled{{/unless}}>
{{selectOptions modes selected=settings.world.mode localize=true}}
</select>
<p class="notes">{{ localize "WEBRTC.AVModeNotes" }}</p>
{{#if noSSL}}
<p class="notification error">{{ localize "WEBRTC.NoSSLError" }}</p>
{{/if}}
</div>
<div class="form-group">
<label>{{localize "WEBRTC.VoiceMode"}}</label>
<select name="client.voice.mode">
{{selectOptions voiceModes selected=settings.client.voice.mode localize=true}}
</select>
<p class="notes">{{ localize "WEBRTC.VoiceModeNotes" }}</p>
</div>
<div class="form-group">
<label>{{localize "WEBRTC.DockPosition"}}</label>
<select name="client.dockPosition">
{{selectOptions dockPositions selected=settings.client.dockPosition}}
</select>
</div>
<div class="form-group">
<label>{{localize "WEBRTC.Nameplates"}}</label>
<select name="client.nameplates" data-dtype="Number">
{{selectOptions nameplates selected=nameplateSetting localize=true}}
</select>
</div>
<div class="form-group">
<label>{{localize "WEBRTC.BorderColors"}}</label>
<input type="checkbox" name="client.borderColors" {{checked settings.client.borderColors}}>
</div>
</div>
<!-- Devices Tab -->
<div class="tab" data-tab="devices">
<div class="form-group stacked">
<label>{{localize WEBRTC.VideoDevice}}</label>
<select name="client.videoSrc">
{{selectOptions videoSourceOptions selected=settings.client.videoSrc}}
</select>
<p class="notes">{{localize "WEBRTC.VideoDeviceNotes"}}</p>
</div>
<div class="form-group stacked">
<label>{{localize WEBRTC.AudioDevice}}</label>
<select name="client.audioSrc">
{{selectOptions audioSourceOptions selected=settings.client.audioSrc}}
</select>
<p class="notes">{{localize "WEBRTC.VideoDeviceNotes"}}</p>
</div>
<div class="form-group stacked">
<label>{{localize WEBRTC.AudioOutput}}</label>
<select name="client.audioSink">
{{selectOptions audioSinkOptions selected=settings.client.audioSink}}
</select>
<p class="notes">{{localize "WEBRTC.AudioOutputNotes"}}</p>
</div>
</div>
<!-- Server Tab -->
{{#if user.isGM}}
<div class="tab" data-tab="server">
<div class="form-group">
<label>{{localize "WEBRTC.WebRTCTurnServer"}}:</label>
<select name="world.turn.type">
{{selectOptions turnTypes selected=settings.world.turn.type localize=true}}
</select>
</div>
<div class="webrtc-custom-turn-config">
<div class="form-group">
<label>{{localize "WEBRTC.WebRTCTURNURL"}}:</label>
<input type="text" name="world.turn.url" value="{{settings.world.turn.url}}"/>
</div>
<div class="form-group">
<label>{{localize "WEBRTC.WebRTCTurnUsername"}}:</label>
<input type="text" name="world.turn.username" value="{{settings.world.turn.username}}"/>
</div>
<div class="form-group">
<label>{{localize "WEBRTC.WebRTCTurnPassword"}}:</label>
<input type="password" name="world.turn.password" value="{{settings.world.turn.password}}"/>
</div>
</div>
</div>
{{/if}}
<button type="submit" {{#if noSSL}}disabled{{/if}}>
<i class="far fa-save"></i> {{localize "Save Changes"}}
</button>
</form>

View File

@@ -0,0 +1,17 @@
<form autocomplete="off">
<p class="notes">{{localize "COMPENDIUM.ImportAllHint"}}</p>
<div class="form-group">
<label>{{ localize "FOLDER.ExportExistingFolder" }}</label>
<select name="folder">
{{ selectOptions folders valueAttr="id" labelAttr="name" blank="" }}
</select>
</div>
<div class="form-group">
<label>{{localize "FOLDER.ExportNewFolder"}}</label>
<input type="text" name="folderName" value="{{folderName}}">
</div>
<div class="form-group">
<label>{{localize "FOLDER.ExportKeepId"}}</label>
<input type="checkbox" name="keepId" {{ checked keepId }}>
</div>
</form>

View File

@@ -0,0 +1,10 @@
<form class="compendium-ownership-dialog">
{{#each roles as |config role|}}
<div class="form-group">
<label>{{localize config.label}}</label>
<select name="{{role}}">
{{selectOptions config.levels selected=config.value}}
</select>
</div>
{{/each}}
</form>

View File

@@ -0,0 +1,11 @@
<h2 class="border">{{title}}</h2>
{{#each subTypes}}
<div class="form-group">
<label>{{name}}</label>
<div class="form-fields">
<select name="{{../id}}.{{type}}">
{{selectOptions defaultClasses selected=defaultClass}}
</select>
</div>
</div>
{{/each}}

View File

@@ -0,0 +1,34 @@
<form autocomplete="off">
<p class="notes">{{ localize "FOLDER.ExportHint" }}</p>
<div class="form-group">
<label>{{ localize "FOLDER.ExportDestination" }}</label>
<div class="form-fields">
<select name="pack">
{{selectOptions packs selected=pack blank=""}}
</select>
</div>
</div>
<div class="form-group">
<label>{{ localize "DOCUMENT.Folder" }}</label>
<div class="form-fields">
<select name="folder" {{#unless hasFolders}}disabled{{/unless}}>
{{selectOptions folders valueAttr="id" labelAttr="name" selected=folder blank=""}}
</select>
</div>
</div>
<fieldset>
<legend>{{ localize "FOLDER.ExportOptions" }}</legend>
<div class="form-group">
<label>{{ localize "FOLDER.ExportMerge" }}</label>
<input type="checkbox" name="merge" {{ checked merge }}/>
</div>
<div class="form-group">
<label>{{ localize "FOLDER.ExportKeepId" }}</label>
<input type="checkbox" name="keepId" {{ checked keepId }}/>
</div>
<div class="form-group">
<label>{{ localize "FOLDER.ExportKeepFolders" }}</label>
<input type="checkbox" name="keepFolders" {{ checked keepFolders }}/>
</div>
</fieldset>
</form>

View File

@@ -0,0 +1,71 @@
<form>
<!-- Font Preview -->
<div style="font-family: '{{family}}'; font-weight: {{selected.weight}}; font-style: {{selected.style}};"
class="font-preview">
<p contenteditable="true" data-edit="preview">{{{font.preview}}}</p>
</div>
{{#if fonts}}
<hr>
{{/if}}
<!-- Custom Fonts -->
{{#each fonts}}
<div class="control custom-font {{#if selected}}selected{{/if}}" data-family="{{family}}" data-index="{{index}}"
data-action="select">
<span>{{{font}}}</span>
<a class="control" data-action="delete" title="{{localize "FONTS.RemoveFont"}}">
<i class="fa-solid fa-xmark"></i>
</a>
</div>
{{/each}}
<hr>
<!-- Add a Font -->
<div class="form-group">
<label>{{localize "FONTS.Type"}}</label>
<div class="form-fields">
<label class="checkbox">
<input type="radio" name="type" value="file" checked>
{{localize "FONTS.TypeFile"}}
</label>
<label class="checkbox">
<input type="radio" name="type" value="system">
{{localize "FONTS.TypeSystem"}}
</label>
</div>
<p class="hint">{{localize "FONTS.TypeHint"}}</p>
</div>
<div class="form-group">
<label>{{localize "FONTS.Family"}}</label>
<div class="form-fields">
<input type="text" name="family" value="{{font.family}}">
</div>
</div>
<div class="form-group">
<label>{{localize "FONTS.Weight"}}</label>
<div class="form-fields">
<select name="weight" data-dtype="Number">
{{selectOptions weights selected=font.weight valueAttr="value" labelAttr="label"}}
</select>
</div>
</div>
<div class="form-group">
<label>{{localize "FONTS.Style"}}</label>
<div class="form-fields">
<select name="style">
{{selectOptions styles selected=font.style}}
</select>
</div>
</div>
<div class="form-group picker">
<label>{{localize "FONTS.File"}}</label>
<div class="form-fields">
<file-picker name="src" type="font" value="{{font.src}}"></file-picker>
</div>
</div>
<button type="button" name="add-font" class="control" data-action="add">
<i class="fa-solid fa-plus"></i> {{localize "FONTS.AddFont"}}
</button>
</form>

View File

@@ -0,0 +1,34 @@
<form>
<p class="notes">{{localize 'INVITATIONS.Instructions'}}</p>
<div class="form-group">
<label for="local"><i class="fas fa-ethernet"></i> {{localize 'INVITATIONS.Local'}}</label>
{{#if local}}
<input type="text" class="invite-link" name="local" value="{{local}}" readonly/>
{{else}}
<input type="text" class="invite-link" name="local" value="Unknown" disabled/>
{{/if}}
</div>
<div class="form-group">
<label for="remote" data-tooltip="{{remoteTitle}}">
<i class="fas fa-wifi"></i> {{localize 'INVITATIONS.Internet'}}
{{#if remoteClass}}
{{#if canConnect}}
<i class="fas fa-check-circle connection open"></i>
{{else if failedCheck}}
<i class="fas fa-exclamation-circle connection unknown"></i>
{{else}}
<i class="fas fa-times-circle connection closed"></i>
{{/if}}
{{/if}}
<i class="fas fa-sync refresh"></i>
</label>
{{#if remote}}
<input type="password" id="remote-link" class="invite-link" name="remote" value="{{remote}}" readonly/>
<i class="far fa-eye show-hide show-link"></i>
{{else}}
<input type="text" class="invite-link" name="remote" value="{{localize "Unknown"}}" disabled
data-tooltip="{{localize "INVITATIONS.DiscoveryFailed"}}">
{{/if}}
</div>
</form>

View File

@@ -0,0 +1,48 @@
<h2 class="category-title">{{this.title}}</h2>
{{#each this.actions as |action| }}
<div class="form-group action {{action.cssClass}}" data-action-id="{{action.id}}">
<label class="action-title">{{action.name}}</label>
<ol class="action-bindings flexcol">
{{#if action.noBindings}}
<li class="binding flexrow" data-binding-id="empty">
<span></span>
<div class="binding-controls flexrow">
<a class="control" title="{{localize 'KEYBINDINGS.AddBinding'}}" data-action="add"><i class="fas fa-plus"></i></a>
</div>
</li>
{{/if}}
{{#each action.bindings as |binding|}}
<li class="binding flexrow" data-binding-id="{{binding.id}}">
{{#if binding.isEditable}}
<span class="key editable-binding {{binding.cssClasses}}">{{binding.display}}</span>
<div class="editable-binding hidden">
<div class="form-fields binding-fields">
<input type="text" class="binding-input" name="{{binding.id}}" id="{{binding.id}}" value="{{binding.display}}" readonly>
<i class="far fa-keyboard binding-input-icon"></i>
</div>
</div>
{{else}}
<span class="key {{binding.cssClasses}}">{{binding.display}}</span>
{{/if}}
<div class="binding-controls flexrow">
{{#if binding.hasConflicts}}
<div class="control conflicts" title="{{binding.conflicts}}"><i class="fas fa-exclamation-triangle"></i></div>
{{/if}}
{{#if binding.isFirst}}
<a class="control" title="{{localize 'KEYBINDINGS.AddBinding'}}" data-action="add"><i class="fas fa-plus"></i></a>
{{/if}}
{{#if binding.isEditable}}
<a class="control save-edit hidden" title="{{localize 'KEYBINDINGS.SaveBinding'}}" data-action="save"><i class="fas fa-save"></i></a>
<a class="control save-edit" title="{{localize 'KEYBINDINGS.EditBinding'}}" data-action="edit"><i class="fas fa-edit"></i></a>
<a class="control" title="{{localize 'KEYBINDINGS.DeleteBinding'}}" data-action="delete"><i class="fas fa-trash-alt"></i></a>
{{else}}
<div class="control uneditable" title="{{localize 'KEYBINDINGS.Uneditable'}}"><i class="fas fa-lock"></i></div>
{{/if}}
</div>
</li>
{{/each}}
</ol>
{{#if action.notes}}<p class="notes">{{{action.notes}}}</p>{{/if}}
</div>
{{/each}}

View File

@@ -0,0 +1,75 @@
<form autocomplete="off">
<p class="notes">
{{#if editable }}
{{localize 'MODMANAGE.Instructions'}}
{{else}}
{{localize 'MODMANAGE.View'}}
{{/if}}
</p>
<nav class="list-filters" aria-label="{{localize 'MODMANAGE.NavLabel'}}">
<input type="search" name="search" placeholder="{{localize 'MODMANAGE.Search'}}" value=""/>
{{#each filters}}
<a class="filter" data-filter="{{ this.id }}">{{ this.label }} ({{ this.count }})</a>
{{/each}}
<button type="button" class="expand">
<i class="fa"></i>
</button>
</nav>
<ul id="module-list" class="directory-list package-list">
{{#each modules}}
<li class="package flexcol{{css}}" data-module-id="{{this.id}}">
<div class="package-overview flexrow" {{#if this.tooltip}}data-tooltip="{{this.tooltip}}"{{/if}}>
<label class="package-title checkbox">
<input type="checkbox" class="active" name="{{this.id}}" data-dtype="Boolean" {{checked this.active}}
{{#if this.disabled}} disabled {{/if}}/>
<div class="title-group">
<div class="title">{{~this.title~}}</div>
{{#if this.documents}}
<div class="subtitle">{{{this.documents}}}</div>
{{/if}}
</div>
</label>
{{> templates/setup/parts/package-tags.hbs versionLabel="PACKAGE.TagVersion" package=this }}
</div>
<div class="package-description" >
{{{this.description}}}
<ul class="package-metadata">
<li><strong>{{labels.authors}}:</strong> <span class="author">{{{authors}}}</span></li>
{{#if this.url}}
<li><strong>{{localize "URL"}}:</strong> <a href="{{this.url}}" target="_blank">{{this.url}}</a></li>
{{/if}}
{{#if this.readme}}
<li><strong>{{localize "MODMANAGE.Readme"}}:</strong> <a href="{{this.readme}}" target="_blank">{{this.readme}}</a></li>
{{/if}}
{{#if this.bugs}}
<li><strong>{{localize "MODMANAGE.Bugs"}}:</strong> <a href="{{this.bugs}}" target="_blank">{{this.bugs}}</a></li>
{{/if}}
{{#if this.relationships.requires}}
<li>
<strong>{{ localize "MODMANAGE.Dependencies" }}:</strong>
{{#each this.relationships.requires}}
<span class="tag {{this.class}}" data-tooltip="{{this.message}}">{{ this.id }}</span>
{{/each}}
</li>
{{/if}}
</ul>
</div>
</li>
{{ else }}
{{#unless editable}}<p class="notes">{{ localize "MODMANAGE.None" }}</p>{{/unless}}
{{/each}}
</ul>
{{#if editable}}
<footer class="flexrow">
<button type="submit">
<i class="far fa-save"></i> {{localize 'MODMANAGE.Submit'}}
</button>
<button type="button" name="deactivate">
<i class="fas fa-ban"></i> {{localize 'MODMANAGE.DeactivateAll'}}
</button>
</footer>
{{/if}}
</form>

View File

@@ -0,0 +1,37 @@
<div class="flexrow">
<aside class="sidebar flexcol">
<div class="entry-filter form-group">
<input name="filter" type="search" placeholder="{{localize "PACKAGECONFIG.Filter"}}" value=""/>
</div>
<nav class="tabs" aria-label="{{localize 'PACKAGECONFIG.NavLabel'}}">
<a class="item category-tab category-all" data-tab="all">
{{localize "PACKAGECONFIG.All"}}
<span class="count">[{{ total }}]</span>
</a>
{{#each categories as |category|}}
<a class="item category-tab" data-tab="{{category.id}}">
{{category.title}}
<span class="count">[{{ category.count }}]</span>
</a>
{{/each}}
</nav>
<button class="reset-all" type="button">
<i class="fas fa-undo"></i> {{localize 'PACKAGECONFIG.Reset'}}
</button>
</aside>
<form class="categories flexcol" autocomplete="off">
<div class="scrollable">
{{#each categories as |category|}}
<section class="tab category" data-tab="{{category.id}}" data-category="{{category.id}}">
{{> (lookup @root "categoryTemplate")}}
</section>
{{/each}}
</div>
{{#if submitButton}}
<footer>
<button type="submit"><i class="fas fa-save"></i> {{localize "SETTINGS.Save"}}</button>
</footer>
{{/if}}
</form>
</div>

View File

@@ -0,0 +1,26 @@
{{ localize 'Foundry Virtual Tabletop' }}: {{ report.coreVersion }}
{{ localize 'WORLD.GameSystem' }}: {{ report.systemVersion }}
{{ localize 'MODMANAGE.FilterActive' }}: {{ report.activeModuleCount }}
{{ localize 'SETTINGS.PerformanceModeN' }}: {{ report.performanceMode }}
{{ localize 'SUPPORT.OS' }}: {{ report.os }}
{{ localize 'SUPPORT.Client' }}: {{ report.client }}
{{ localize 'SUPPORT.GPU' }}: {{ report.gpu }}
{{ localize 'SUPPORT.MaxTextureSize' }}: {{ report.maxTextureSize }}
{{#if report.hasViewedScene }}
{{ localize 'DOCUMENT.Scene' }}: {{ report.sceneDimensions }} | {{ localize 'SCENES.GridSize' }}: {{ report.grid }} | {{ localize 'SCENES.Padding' }}: {{ report.padding }}
{{ localize 'DOCUMENT.Walls' }}: {{ report.walls }} | {{ localize 'DOCUMENT.AmbientLights' }}: {{ report.lights }} | {{ localize 'DOCUMENT.AmbientSounds' }}: {{ report.sounds }} | {{ localize 'DOCUMENT.Tiles' }}: {{ report.tiles }} | {{ localize 'DOCUMENT.Tokens' }}: {{ report.tokens }}
{{#with report.largestTexture}}
{{#if (or width height)}}
{{ localize "SUPPORT.LargestTexture" }}: {{ width }} x {{ height }} {{#if src}}"{{ src }}"{{/if}}
{{/if}}
{{/with}}
{{else}}
{{ localize 'SUPPORT.NoViewedScene' }}
{{/if }}
{{ localize 'DOCUMENT.Actors' }}: {{ report.actors }} | {{ localize 'DOCUMENT.Items' }}: {{report.items }} | {{ localize 'DOCUMENT.JournalEntries' }}: {{ report.journal }} | {{ localize 'DOCUMENT.RollTables' }}: {{ report.tables }} |
{{ localize 'PLAYLIST.VolPlaylist' }}: {{ report.playlists }} | {{ localize 'SIDEBAR.TabCompendium' }}: {{ report.packs }} | {{ localize 'DOCUMENT.ChatMessages' }}: {{ report.messages }}
{{ localize "SUPPORT.WorldScripts" }}: {{ report.worldScripts }}

View File

@@ -0,0 +1,47 @@
<h2 class="border">{{this.title}}</h2>
{{#each this.menus}}
<div class="form-group submenu">
<label>{{ localize this.name }}</label>
<button type="button" data-key="{{ this.key }}">
{{#if this.icon}}<i class="{{ this.icon }}"></i>{{/if}}
<label>{{ localize this.label }}</label>
</button>
{{#if this.hint}}<p class="notes">{{ localize this.hint }}</p>{{/if}}
</div>
{{/each}}
{{#each this.settings}}
<div class="form-group" data-setting-id="{{this.id}}">
<label>{{this.name}}</label>
<div class="form-fields">
{{#if this.dataField}}
{{formInput this.dataField value=this.value input=this.input localize=true}}
{{else if this.isCheckbox}}
<input type="checkbox" name="{{this.id}}" data-dtype="Boolean" {{checked this.value}}/>
{{else if this.isSelect}}
<select name="{{this.id}}" data-dtype="{{this.type}}">
{{selectOptions this.choices selected=this.value localize=true}}
</select>
{{else if this.isRange}}
<input type="range" name="{{this.id}}" data-dtype="Number" value="{{ this.value }}"
min="{{ this.range.min }}" max="{{ this.range.max }}" step="{{ this.range.step }}"/>
<span class="range-value">{{this.value}}</span>
{{else if this.filePicker}}
<file-picker name="{{this.id}}" type="{{this.filePickerType}}" value="{{this.value}}"></file-picker>
{{else if this.isNumber}}
{{numberInput this.value name=this.id}}
{{else}}
<input type="text" name="{{this.id}}" value="{{this.value}}" data-dtype="{{this.type}}"/>
{{/if}}
</div>
<p class="notes">{{this.hint}}</p>
</div>
{{/each}}

View File

@@ -0,0 +1,105 @@
<article class="flexcol">
<!-- Support & Issues Tabs -->
<nav class="sheet-tabs tabs" data-group="main">
<a class="item" data-tab="support">
<i class="fas fa-hands-helping"></i> {{localize "SUPPORT.Title"}}
</a>
<a class="item" data-tab="documents">
<i class="fa-solid fa-file-circle-exclamation"></i> {{localize "SUPPORT.DocumentIssues"}}
</a>
<a class="item" data-tab="client">
<i class="fa-regular fa-window"></i> {{localize "SUPPORT.ClientIssues"}}
</a>
<a class="item" data-tab="modules">
<i class="fa-solid fa-box-open"></i> {{localize "SUPPORT.ModuleIssues"}}
</a>
</nav>
<!-- Support Details Report -->
<div class="tab" data-group="main" data-tab="support">
<h2>{{ localize 'SUPPORT.Places' }}</h2>
<p class="notes">
{{ localize 'SUPPORT.Discord' }} <a href="https://discord.gg/foundryvtt" target="_blank" rel="nofollow" title="FoundryVTT Discord">https://discord.gg/foundryvtt</a>
</p>
<p class="notes">
{{ localize 'SUPPORT.BugReporting' }} <a href="https://foundryvtt.com/contact-us?category=bug" target="_blank" rel="nofollow" title="FoundryVTT Contact Us">https://foundryvtt.com/contact-us/</a>
</p>
<h2>{{ localize 'SUPPORT.Details' }}</h2>
<p class="notes">{{ localize 'SUPPORT.ReportPrelude' }}</p>
<pre tabindex="0" id="support-report">{{> supportDetailsReport }}</pre>
<div class="flexrow">
<button type="button" data-action="copy">
<i class="fas fa-copy"></i> {{ localize 'SUPPORT.CopyReport' }}
</button>
<button type="button" data-action="fullReport" data-tooltip="SUPPORT.GenerateFullReportHint">
<i class="fas fa-file-lines"></i>
<span>{{ localize "SUPPORT.GenerateFullReport" }}</span>
</button>
</div>
</div>
<!-- Document Issues -->
<div class="tab" data-group="main" data-tab="documents">
<ul class="summary-tree summary-tree-root">
{{#each documentIssues}}
<li>
<details>
<summary>{{label}}</summary>
<ul>
{{#each documents}}
<li>
<details>
<summary>{{name}}</summary>
{{{validationError}}}
</details>
</li>
{{/each}}
</ul>
</details>
</li>
{{/each}}
</ul>
</div>
<!-- Client Issues -->
<div class="tab" data-group="main" data-tab="client">
<ul class="issues">
{{#each clientIssues}}
<li class="issue notification {{severity}}">{{{message}}}</li>
{{/each}}
</ul>
</div>
<!-- Module Issues -->
{{#*inline "moduleIssue"}}
<li>
<details>
<summary>{{label}}</summary>
<ul>
{{#each issues}}
<li>
<details>
<summary>{{label}}</summary>
<ul class="issues">
{{#each issues}}
<li class="issue notification {{severity}}">{{message}}</li>
{{/each}}
</ul>
</details>
</li>
{{/each}}
</ul>
</details>
</li>
{{/inline}}
<div class="tab" data-group="main" data-tab="modules">
<ul>
{{#each moduleIssues}}
{{> moduleIssue}}
{{/each}}
</ul>
</div>
</article>

View File

@@ -0,0 +1,18 @@
<h2 class="category-title">{{this.title}}</h2>
{{#each this.tours as |tour| }}
<div class="form-group tour {{tour.cssClass}}" data-tour="{{tour.id}}">
<label class="tour-title">{{tour.title}} <span class="status">({{tour.status}})</span></label>
<div class="form-fields controls">
{{#if tour.canBePlayed}}
<a class="control" data-action="play" data-tooltip="{{startOrResume}}">
<i class="fas fa-play"></i></a>
{{/if}}
{{#if tour.canBeReset}}
<a class="control" data-action="reset" data-tooltip="{{localize 'TOURS.Reset'}}">
<i class="fas fa-arrow-rotate-left"></i>
</a>
{{/if}}
</div>
{{#if tour.notes}}<p class="notes">{{{tour.notes}}}</p>{{/if}}
</div>
{{/each}}

View File

@@ -0,0 +1,56 @@
<form class="flexrow" autocomplete="off">
<nav class="filters" aria-label="{{localize 'TOURS.NavLabel'}}">
<h3 class="noborder">{{ localize "TOURS.TourCategories" }}</h3>
<div class="category-filter all {{#if allActive}}active{{/if}}">
<a class="filter" data-category="all">{{ localize "TOURS.AllTours" }}</a>
<span class="count">[{{ total }}]</span>
</div>
{{#each categories as |category|}}
<div class="category-filter {{ category.id }} {{#if category.active}}active{{/if}}">
<a class="filter" data-category="{{ category.id }}">{{ category.title }}</a>
<span class="count">[{{ category.count }}]</span>
</div>
{{/each}}
</nav>
<div class="categories flexcol">
<div class="tour-filter form-group">
<button class="reset-all" type="button">
<i class="fas fa-undo" title="{{localize 'SETTINGS.Reset'}}"></i> {{localize 'TOURS.ResetAll'}}
</button>
<label>{{localize "TOURS.TourFilter"}}</label>
<input name="filter" type="search" placeholder="{{localize 'TOURS.TourName'}}" value=""/>
</div>
<div class="category-list">
{{#each categories as |category|}}
{{#unless category.hidden}}
<section class="category" data-category-id="{{category.id}}">
<header class="category-header flexrow">
<h3 class="category-title noborder">{{this.title}}</h3>
<span class="category-collapse" title="Collapse"><i class="fas fa-chevron-down"></i></span>
<span class="category-collapse hidden" title="Expand"><i class="fas fa-chevron-up"></i></span>
</header>
<ol class="tour-list">
{{#each this.tours as |tour| }}
<li class="tour {{tour.cssClass}} flexrow" data-tour-id="{{tour.id}}">
<h4 class="tour-title">{{tour.title}}</h4>
<div class="flexrow">
<span>{{tour.status}}</span>
<div class="controls flexrow">
{{#if tour.canBePlayed}}
<a class="control" title="{{startOrResume}}" data-action="play"><i class="fas fa-play"></i></a>
{{/if}}
<a class="control" title="{{localize 'TOURS.Reset'}}" data-action="reset"><i class="fas fa-arrow-rotate-left"></i></a>
</div>
</div>
{{#if tour.description}}<p class="notes">{{{tour.description}}}</p>{{/if}}
</li>
{{/each}}
</ol>
</section>
{{/unless}}
{{/each}}
</div>
</div>
</form>