Initial
This commit is contained in:
134
resources/app/templates/sidebar/apps/av-config.html
Normal file
134
resources/app/templates/sidebar/apps/av-config.html
Normal 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>
|
||||
17
resources/app/templates/sidebar/apps/compendium-import.html
Normal file
17
resources/app/templates/sidebar/apps/compendium-import.html
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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}}
|
||||
34
resources/app/templates/sidebar/apps/folder-export.html
Normal file
34
resources/app/templates/sidebar/apps/folder-export.html
Normal 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>
|
||||
71
resources/app/templates/sidebar/apps/font-config.html
Normal file
71
resources/app/templates/sidebar/apps/font-config.html
Normal 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>
|
||||
34
resources/app/templates/sidebar/apps/invitation-links.html
Normal file
34
resources/app/templates/sidebar/apps/invitation-links.html
Normal 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>
|
||||
@@ -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}}
|
||||
75
resources/app/templates/sidebar/apps/module-management.html
Normal file
75
resources/app/templates/sidebar/apps/module-management.html
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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 }}
|
||||
@@ -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}}
|
||||
105
resources/app/templates/sidebar/apps/support-details.html
Normal file
105
resources/app/templates/sidebar/apps/support-details.html
Normal 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>
|
||||
@@ -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}}
|
||||
56
resources/app/templates/sidebar/apps/tours-management.html
Normal file
56
resources/app/templates/sidebar/apps/tours-management.html
Normal 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>
|
||||
39
resources/app/templates/sidebar/cards-create.html
Normal file
39
resources/app/templates/sidebar/cards-create.html
Normal file
@@ -0,0 +1,39 @@
|
||||
<form id="document-create" autocomplete="off">
|
||||
<div class="form-group">
|
||||
<label>{{localize "Name"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="text" name="name" placeholder="{{defaultName}}" autofocus>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if hasTypes}}
|
||||
<div class="form-group">
|
||||
<label>{{localize "Type"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="type">
|
||||
{{selectOptions types selected=type}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if hasFolders}}
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DOCUMENT.Folder" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="folder">
|
||||
{{selectOptions folders selected=folder blank="" valueAttr="id" labelAttr="name"}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="cards-presets form-group">
|
||||
<label>{{localize "CARDS.DeckPreset"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="preset">
|
||||
{{selectOptions presets localize=true labelAttr="label" blank=""}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
27
resources/app/templates/sidebar/chat-log.html
Normal file
27
resources/app/templates/sidebar/chat-log.html
Normal file
@@ -0,0 +1,27 @@
|
||||
<section class="{{cssClass}} directory flexcol" id="{{cssId}}" data-tab="{{tabName}}">
|
||||
<ol id="chat-log">
|
||||
</ol>
|
||||
<div class="hidden jump-to-bottom">
|
||||
<a aria-label="{{localize 'CHAT.JumpToBottom'}}" role="button"><i class="fas fa-keyboard-down"></i> {{localize "CHAT.JumpToBottom"}}</a>
|
||||
</div>
|
||||
|
||||
{{#unless isStream}}
|
||||
<div id="chat-controls" class="flexrow">
|
||||
<label class="chat-control-icon"><i class="fas fa-dice-d20"></i></label>
|
||||
<select aria-label="{{localize 'CHAT.RollVisibility'}}" class="roll-type-select" name="rollMode">
|
||||
{{selectOptions rollModes selected=rollMode localize=true}}
|
||||
</select>
|
||||
|
||||
{{#if user.isGM}}
|
||||
<div class="control-buttons">
|
||||
<a aria-label="{{localize 'CHAT.Export'}}" role="button" class="export-log" data-tooltip="CHAT.Export"><i class="fas fa-save"></i></a>
|
||||
<a aria-label="{{localize 'CHAT.Clear'}}" role="button" class="delete chat-flush" data-tooltip="CHAT.Clear"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<form id="chat-form">
|
||||
<textarea id="chat-message" autocomplete="off" title="{{localize 'CHAT.Chat'}}"></textarea>
|
||||
</form>
|
||||
{{/unless}}
|
||||
</section>
|
||||
22
resources/app/templates/sidebar/chat-message.html
Normal file
22
resources/app/templates/sidebar/chat-message.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<li class="chat-message message flexcol {{cssClass}}" data-message-id="{{message._id}}" {{#if borderColor}}style="border-color:{{borderColor}}"{{/if}}>
|
||||
<header class="message-header flexrow">
|
||||
<h4 class="message-sender">{{alias}}</h4>
|
||||
<span class="message-metadata">
|
||||
<time class="message-timestamp">{{timeSince message.timestamp}}</time>
|
||||
{{#if canDelete}}
|
||||
<a aria-label="{{localize 'Delete'}}" class="message-delete"><i class="fas fa-trash"></i></a>
|
||||
{{/if}}
|
||||
</span>
|
||||
|
||||
{{#if isWhisper}}
|
||||
<span class="whisper-to">{{localize 'CHAT.To'}}: {{whisperTo}}</span>
|
||||
{{/if}}
|
||||
|
||||
{{#if message.flavor}}
|
||||
<span class="flavor-text">{{{message.flavor}}}</span>
|
||||
{{/if}}
|
||||
</header>
|
||||
<div class="message-content">
|
||||
{{{message.content}}}
|
||||
</div>
|
||||
</li>
|
||||
130
resources/app/templates/sidebar/combat-tracker.html
Normal file
130
resources/app/templates/sidebar/combat-tracker.html
Normal file
@@ -0,0 +1,130 @@
|
||||
<section class="{{cssClass}} directory flexcol" id="{{cssId}}" data-tab="{{tabName}}">
|
||||
<header class="combat-tracker-header">
|
||||
{{#if user.isGM}}
|
||||
<nav class="encounters flexrow" aria-label="{{localize 'COMBAT.NavLabel'}}">
|
||||
<a class="combat-button combat-create" aria-label="{{localize 'COMBAT.Create'}}" role="button" data-tooltip="COMBAT.Create">
|
||||
<i class="fas fa-plus"></i>
|
||||
</a>
|
||||
{{#if combatCount}}
|
||||
<a class="combat-button combat-cycle" aria-label="{{localize 'COMBAT.EncounterPrevious'}}" role="button" data-tooltip="COMBAT.EncounterPrevious"
|
||||
{{#if previousId}}data-document-id="{{previousId}}"{{else}}disabled{{/if}}>
|
||||
<i class="fas fa-caret-left"></i>
|
||||
</a>
|
||||
<h4 class="encounter">{{localize "COMBAT.Encounter"}} {{currentIndex}} / {{combatCount}}</h4>
|
||||
<a class="combat-button combat-cycle" aria-label="{{localize 'COMBAT.EncounterNext'}}" role="button" data-tooltip="COMBAT.EncounterNext"
|
||||
{{#if nextId}}data-document-id="{{nextId}}"{{else}}disabled{{/if}}>
|
||||
<i class="fas fa-caret-right"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
<a class="combat-button combat-control" aria-label="{{localize 'COMBAT.Delete'}}" role="button" data-tooltip="COMBAT.Delete" data-control="endCombat" {{#unless combatCount}}disabled{{/unless}}>
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
</nav>
|
||||
{{/if}}
|
||||
|
||||
<div class="encounter-controls flexrow {{#if hasCombat}}combat{{/if}}">
|
||||
{{#if user.isGM}}
|
||||
<a class="combat-button combat-control" aria-label="{{localize 'COMBAT.RollAll'}}" role="button" data-tooltip="COMBAT.RollAll" data-control="rollAll" {{#unless turns}}disabled{{/unless}}>
|
||||
<i class="fas fa-users"></i>
|
||||
</a>
|
||||
<a class="combat-button combat-control" aria-label="{{localize 'COMBAT.RollNPC'}}" role="button" data-tooltip="COMBAT.RollNPC" data-control="rollNPC" {{#unless turns}}disabled{{/unless}}>
|
||||
<i class="fas fa-users-cog"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
|
||||
{{#if combatCount}}
|
||||
{{#if combat.round}}
|
||||
<h3 class="encounter-title noborder">{{localize 'COMBAT.Round'}} {{combat.round}}</h3>
|
||||
{{else}}
|
||||
<h3 class="encounter-title noborder">{{localize 'COMBAT.NotStarted'}}</h3>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<h3 class="encounter-title noborder">{{localize "COMBAT.None"}}</h3>
|
||||
{{/if}}
|
||||
|
||||
{{#if user.isGM}}
|
||||
<a class="combat-button combat-control" aria-label="{{localize 'COMBAT.InitiativeReset'}}" role="button" data-tooltip="COMBAT.InitiativeReset" data-control="resetAll"
|
||||
{{#unless hasCombat}}disabled{{/unless}}>
|
||||
<i class="fas fa-undo"></i>
|
||||
</a>
|
||||
<a class="combat-button combat-control" aria-label="{{localize 'labels.scope'}}" role="button" data-tooltip="{{labels.scope}}"
|
||||
data-control="toggleSceneLink" {{#unless hasCombat}}disabled{{/unless}}>
|
||||
<i class="fas fa-{{#unless linked}}un{{/unless}}link"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
<a class="combat-button combat-settings" aria-label="{{localize 'COMBAT.Settings'}}" role="button" data-tooltip="COMBAT.Settings" data-control="trackerSettings">
|
||||
<i class="fas fa-cog"></i>
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<ol id="combat-tracker" class="directory-list">
|
||||
{{#each turns}}
|
||||
<li class="combatant actor directory-item flexrow {{this.css}}" data-combatant-id="{{this.id}}">
|
||||
<img class="token-image" data-src="{{this.img}}" alt="{{this.name}}"/>
|
||||
<div class="token-name flexcol">
|
||||
<h4>{{this.name}}</h4>
|
||||
<div class="combatant-controls flexrow">
|
||||
{{#if ../user.isGM}}
|
||||
<a class="combatant-control {{#if this.hidden}}active{{/if}}" aria-label="{{localize 'COMBAT.ToggleVis'}}" role="button" data-tooltip="COMBAT.ToggleVis" data-control="toggleHidden">
|
||||
<i class="fas fa-eye-slash"></i>
|
||||
</a>
|
||||
<a class="combatant-control {{#if this.defeated}}active{{/if}}" aria-label="{{localize 'COMBAT.ToggleDead'}}" role="button" data-tooltip="COMBAT.ToggleDead" data-control="toggleDefeated">
|
||||
<i class="fas fa-skull"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if this.canPing}}
|
||||
<a class="combatant-control" aria-label="{{localize 'COMBAT.PingCombatant'}}" role="button" data-tooltip="COMBAT.PingCombatant" data-control="pingCombatant">
|
||||
<i class="fa-solid fa-bullseye-arrow"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#unless ../user.isGM}}
|
||||
<a class="combatant-control" aria-label="{{localize 'COMBAT.PanToCombatant'}}" role="button" data-tooltip="COMBAT.PanToCombatant" data-control="panToCombatant">
|
||||
<i class="fa-solid fa-arrows-to-eye"></i>
|
||||
</a>
|
||||
{{/unless}}
|
||||
<div class="token-effects">
|
||||
{{#each this.effects}}
|
||||
<img class="token-effect" src="{{this}}"/>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if this.hasResource}}
|
||||
<div class="token-resource">
|
||||
<span class="resource">{{this.resource}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="token-initiative">
|
||||
{{#if this.hasRolled}}
|
||||
<span class="initiative">{{this.initiative}}</span>
|
||||
{{else if this.owner}}
|
||||
<a class="combatant-control roll" aria-label="{{localize 'COMBAT.InitiativeRoll'}}" role="button" data-tooltip="COMBAT.InitiativeRoll" data-control="rollInitiative"></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ol>
|
||||
|
||||
<nav id="combat-controls" class="directory-footer flexrow" data-tooltip-direction="UP">
|
||||
{{#if hasCombat}}
|
||||
{{#if user.isGM}}
|
||||
{{#if round}}
|
||||
<a class="combat-control" aria-label="{{localize 'COMBAT.RoundPrev'}}" role="button" data-tooltip="COMBAT.RoundPrev" data-control="previousRound"><i class="fas fa-step-backward"></i></a>
|
||||
<a class="combat-control" aria-label="{{localize 'COMBAT.TurnPrev'}}" role="button" data-tooltip="COMBAT.TurnPrev" data-control="previousTurn"><i class="fas fa-arrow-left"></i></a>
|
||||
<a class="combat-control center" aria-label="{{localize 'COMBAT.End'}}" role="button" data-control="endCombat">{{localize 'COMBAT.End'}}</a>
|
||||
<a class="combat-control" aria-label="{{localize 'COMBAT.TurnNext'}}" role="button" data-tooltip="COMBAT.TurnNext" data-control="nextTurn"><i class="fas fa-arrow-right"></i></a>
|
||||
<a class="combat-control" aria-label="{{localize 'COMBAT.RoundNext'}}" role="button" data-tooltip="COMBAT.RoundNext" data-control="nextRound"><i class="fas fa-step-forward"></i></a>
|
||||
{{else}}
|
||||
<a class="combat-control center" aria-label="{{localize 'COMBAT.Begin'}}" role="button" data-control="startCombat">{{localize 'COMBAT.Begin'}}</a>
|
||||
{{/if}}
|
||||
{{else if control}}
|
||||
<a class="combat-control" aria-label="{{localize 'COMBAT.TurnPrev'}}" role="button" data-tooltip="COMBAT.TurnPrev" data-control="previousTurn"><i class="fas fa-arrow-left"></i></a>
|
||||
<a class="combat-control center" aria-label="{{localize 'COMBAT.TurnEnd'}}" role="button" data-control="nextTurn">{{localize 'COMBAT.TurnEnd'}}</a>
|
||||
<a class="combat-control" aria-label="{{localize 'COMBAT.TurnNext'}}" role="button" data-tooltip="COMBAT.TurnNext" data-control="nextTurn"><i class="fas fa-arrow-right"></i></a>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</nav>
|
||||
</section>
|
||||
31
resources/app/templates/sidebar/compendium-create.html
Normal file
31
resources/app/templates/sidebar/compendium-create.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<form id="compendium-create">
|
||||
<p>{{localize "COMPENDIUM.CreateHint"}}</p>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "Name"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="text" name="label" placeholder="{{localize 'COMPENDIUM.Name'}}" autofocus>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "COMPENDIUM.Type"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="type">
|
||||
{{selectOptions types valueAttr="value" labelAttr="label"}}
|
||||
</select>
|
||||
</div>
|
||||
<p class="notes">{{localize "COMPENDIUM.TypeHint"}}</p>
|
||||
</div>
|
||||
|
||||
{{#if hasFolders}}
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DOCUMENT.Folder" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="folder">
|
||||
{{selectOptions folders valueAttr="id" labelAttr="name" selected=folder blank=""}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</form>
|
||||
38
resources/app/templates/sidebar/compendium-directory.html
Normal file
38
resources/app/templates/sidebar/compendium-directory.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<section class="{{cssClass}} directory flexcol" id="{{cssId}}" data-tab="{{tabName}}">
|
||||
|
||||
<!-- Directory Header -->
|
||||
<header class="directory-header">
|
||||
<div class="header-actions action-buttons flexrow">
|
||||
{{#if canCreateEntry}}
|
||||
<button class="create-entry"><i class="{{sidebarIcon}}"></i> {{localize 'SIDEBAR.Create' type=label}}</button>
|
||||
{{/if}}
|
||||
{{#if canCreateFolder}}
|
||||
<button class="create-folder"><i class="{{folderIcon}}"></i> {{localize 'FOLDER.Create'}}</button>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="header-search flexrow">
|
||||
<a class="header-control filter" aria-label="{{localize 'COMPENDIUM.FilterDocuments'}}" role="button" data-tooltip="COMPENDIUM.FilterDocuments"><i class="fa-solid {{#if filtersActive}}fa-filter-list{{else}}fa-filter{{/if}}"></i></a>
|
||||
<input type="search" name="search" value="" placeholder="{{localize 'SIDEBAR.Search' types=labelPlural}}" autocomplete="off"/>
|
||||
<a class="header-control toggle-sort" aria-label="{{localize sortTooltip}}" role="button" data-tooltip="{{localize sortTooltip}}"><i class="fa-solid {{sortIcon}}"></i></a>
|
||||
<a class="header-control collapse-all" aria-label="{{localize 'FOLDER.Collapse'}}" role="button" data-tooltip="FOLDER.Collapse"><i class="fa-duotone fa-folder-tree"></i></a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Directories List -->
|
||||
<ol class="directory-list">
|
||||
{{#each tree.children}}
|
||||
{{> (lookup @root "folderPartial") node=this folder=this.folder}}
|
||||
{{/each}}
|
||||
{{#each tree.entries}}
|
||||
{{> (lookup @root "entryPartial")}}
|
||||
{{/each}}
|
||||
</ol>
|
||||
|
||||
<!-- Directory Footer -->
|
||||
<footer class="directory-footer action-buttons {{#if unavailable}}warning{{/if}}">
|
||||
{{~#if unavailable}}
|
||||
<i class="fa-solid fa-triangle-exclamation"></i>
|
||||
<a class="show-issues">{{localize "SUPPORT.UnavailableDocuments" count=unavailable document=label}}</a>
|
||||
{{/if~}}
|
||||
</footer>
|
||||
</section>
|
||||
32
resources/app/templates/sidebar/document-create.html
Normal file
32
resources/app/templates/sidebar/document-create.html
Normal file
@@ -0,0 +1,32 @@
|
||||
<form id="document-create" autocomplete="off">
|
||||
<div class="form-group">
|
||||
<label>{{localize "Name"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="text" name="name" placeholder="{{defaultName}}" autofocus>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if hasTypes}}
|
||||
<div class="form-group">
|
||||
<label>{{localize "Type"}}</label>
|
||||
<div class="form-fields">
|
||||
<select name="type">
|
||||
{{selectOptions types selected=type}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if hasFolders}}
|
||||
<div class="form-group">
|
||||
<label>{{ localize "DOCUMENT.Folder" }}</label>
|
||||
<div class="form-fields">
|
||||
<select name="folder">
|
||||
{{selectOptions folders selected=folder blank="" valueAttr="id" labelAttr="name"}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{{content}}}
|
||||
</form>
|
||||
38
resources/app/templates/sidebar/document-directory.html
Normal file
38
resources/app/templates/sidebar/document-directory.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<section class="{{cssClass}} directory flexcol" id="{{cssId}}" data-tab="{{tabName}}">
|
||||
|
||||
<!-- Directory Header -->
|
||||
<header class="directory-header">
|
||||
<div class="header-actions action-buttons flexrow">
|
||||
{{#if canCreateEntry}}
|
||||
<button class="create-document create-entry"><i class="{{sidebarIcon}}"></i> {{localize 'SIDEBAR.Create' type=label}}</button>
|
||||
{{/if}}
|
||||
{{#if canCreateFolder }}
|
||||
<button class="create-folder"><i class="{{folderIcon}}"></i> {{localize 'FOLDER.Create'}}</button>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="header-search flexrow">
|
||||
<a class="header-control toggle-search-mode" aria-label="{{localize searchTooltip}}" role="button" data-tooltip="{{localize searchTooltip}}"><i class="fas {{searchIcon}}"></i></a>
|
||||
<input type="search" name="search" value="" aria-label="{{localize 'SIDEBAR.Search' types=labelPlural}}" placeholder="{{localize 'SIDEBAR.Search' types=labelPlural}}" autocomplete="off"/>
|
||||
<a class="header-control toggle-sort" aria-label="{{localize sortTooltip}}" role="button" data-tooltip="{{localize sortTooltip}}"><i class="fa-solid {{sortIcon}}"></i></a>
|
||||
<a class="header-control collapse-all" aria-label="{{localize 'FOLDER.Collapse'}}" role="button" data-tooltip="FOLDER.Collapse"><i class="fa-duotone fa-folder-tree"></i></a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Directories List -->
|
||||
<ol class="directory-list">
|
||||
{{~#each tree.children}}
|
||||
{{> (lookup @root "folderPartial") node=this folder=this.folder}}
|
||||
{{/each}}
|
||||
{{#each tree.entries}}
|
||||
{{> (lookup @root "entryPartial")}}
|
||||
{{/each~}}
|
||||
</ol>
|
||||
|
||||
<!-- Directory Footer -->
|
||||
<footer class="directory-footer action-buttons {{#if unavailable}}warning{{/if}}">
|
||||
{{~#if unavailable}}
|
||||
<i class="fa-solid fa-triangle-exclamation"></i>
|
||||
<a class="show-issues">{{localize "SUPPORT.UnavailableDocuments" count=unavailable document=label}}</a>
|
||||
{{/if~}}
|
||||
</footer>
|
||||
</section>
|
||||
26
resources/app/templates/sidebar/folder-edit.html
Normal file
26
resources/app/templates/sidebar/folder-edit.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<form autocomplete="off">
|
||||
<input type="hidden" name="type" value="{{folder.type}}"/>
|
||||
<input type="hidden" name="folder" value="{{folder.folder}}"/>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "FOLDER.Name"}}</label>
|
||||
<div class="form-fields">
|
||||
<input type="text" name="name" placeholder="{{newName}}" value="{{name}}" autofocus>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "FOLDER.Color"}}</label>
|
||||
<div class="form-fields">
|
||||
<color-picker name="color" value="{{folder.color}}"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{localize "FOLDER.SortMode"}}</label>
|
||||
<div class="form-fields">
|
||||
{{radioBoxes "sorting" sortingModes checked=folder.sorting localize=true}}
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit"><i class="fas fa-check"></i> {{submitText}}</button>
|
||||
</form>
|
||||
28
resources/app/templates/sidebar/folder-partial.html
Normal file
28
resources/app/templates/sidebar/folder-partial.html
Normal file
@@ -0,0 +1,28 @@
|
||||
<li class="directory-item folder flexcol {{#unless folder.expanded}}collapsed{{/unless}}"
|
||||
data-folder-id="{{folder.id}}" data-uuid={{folder.uuid}} data-folder-depth="{{node.depth}}">
|
||||
<header class="folder-header flexrow" {{#if folder.color}}style="background-color: {{folder.color.css}}"{{/if}}>
|
||||
<h3 class="noborder"><i class="fas fa-folder-open fa-fw"></i>{{folder.name}}</h3>
|
||||
|
||||
{{#if @root.canCreateFolder}}
|
||||
<a class="create-button create-folder">
|
||||
<i class="{{@root.folderIcon}}"></i>
|
||||
<i class="fas fa-plus"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if @root.canCreateEntry}}
|
||||
<a class="create-button create-entry">
|
||||
<i class="{{@root.sidebarIcon}}"></i>
|
||||
<i class="fas fa-plus"></i>
|
||||
</a>
|
||||
{{/if}}
|
||||
</header>
|
||||
|
||||
<ol class="subdirectory" {{#if folder.color}}style="border-left-color: {{folder.color.css}}"{{/if}}>
|
||||
{{~#each node.children}}
|
||||
{{> (lookup @root "folderPartial") node=this folder=this.folder}}
|
||||
{{/each}}
|
||||
{{#each node.entries}}
|
||||
{{> (lookup @root "entryPartial")}}
|
||||
{{/each~}}
|
||||
</ol>
|
||||
</li>
|
||||
@@ -0,0 +1,8 @@
|
||||
<li class="directory-item document {{@root.documentCls}} flexrow" data-entry-id="{{this._id}}" data-document-id="{{this._id}}">
|
||||
{{#if this.thumb}}
|
||||
<img class="thumbnail" title="{{this.name}}" alt="{{this.name}}" data-src="{{this.thumb}}"/>
|
||||
{{else if this.img}}
|
||||
<img class="thumbnail" title="{{this.name}}" alt="{{this.name}}" data-src="{{this.img}}"/>
|
||||
{{/if}}
|
||||
<h4 class="entry-name document-name"><a>{{this.name}}</a></h4>
|
||||
</li>
|
||||
@@ -0,0 +1,6 @@
|
||||
<li class="directory-item document {{@root.documentCls}} flexrow" data-entry-id="{{this.id}}" data-document-id="{{this.id}}">
|
||||
{{#if this.thumbnail}}
|
||||
<img class="thumbnail" title="{{this.name}}" data-src="{{this.thumbnail}}"/>
|
||||
{{/if}}
|
||||
<h4 class="entry-name document-name"><a>{{this.name}}</a></h4>
|
||||
</li>
|
||||
@@ -0,0 +1,3 @@
|
||||
<li class="directory-item entry flexrow" data-entry-id="{{this.id}}">
|
||||
<h4 class="entry-name"><a>{{this.name}}</a></h4>
|
||||
</li>
|
||||
14
resources/app/templates/sidebar/partials/pack-partial.html
Normal file
14
resources/app/templates/sidebar/partials/pack-partial.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{{#with (lookup @root.packContext collection)}}
|
||||
<li class="directory-item compendium {{@root.documentCls}} {{#if locked}}locked{{/if}} {{#if hidden}}hidden{{/if}}
|
||||
flexcol" data-pack="{{collection}}" data-entry-id="{{collection}}">
|
||||
{{#if banner}}<img class="compendium-banner" data-src="{{banner}}">{{/if}}
|
||||
<h3 class="entry-name compendium-name"><i class="{{icon}}"></i> {{localize label}}</h3>
|
||||
<div class="status-icons flexrow">
|
||||
{{#if this.customOwnership}}<i class="fa-solid fa-eye"></i>{{/if}}
|
||||
{{#if this.locked}}<i class="fa-solid fa-lock"></i>{{/if}}
|
||||
</div>
|
||||
<footer class="compendium-footer">
|
||||
<span class="source"><i class="fa-solid {{sourceIcon}}"></i> {{name}}</span>
|
||||
</footer>
|
||||
</li>
|
||||
{{/with}}
|
||||
@@ -0,0 +1,32 @@
|
||||
<li class="directory-item document {{@root.documentCls}} flexrow {{this.css}}" data-entry-id="{{this._id}}" data-document-id="{{this._id}}">
|
||||
<header class="playlist-header flexrow">
|
||||
<h4 class="entry-name playlist-name">{{this.name}} <i class="collapse fa fa-angle-{{#if this.expanded}}down{{else}}up{{/if}}"></i></h4>
|
||||
<div class="sound-controls playlist-controls flexrow">
|
||||
{{#unless this.playing}}
|
||||
{{#if this.isOwner}}
|
||||
<a class="sound-control fa-solid fa-plus" data-action="sound-create"
|
||||
data-tooltip="PLAYLIST.SoundCreate"></a>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
<a class="sound-control {{#unless this.isOwner}}disabled{{/unless}} {{this.modeIcon}}"
|
||||
data-action="playlist-mode" data-tooltip="{{this.modeTooltip}}"></a>
|
||||
|
||||
{{#if this.playing}}
|
||||
<a class="sound-control fa-solid fa-backward {{this.controlCSS}}" data-action="playlist-backward"
|
||||
data-tooltip="PLAYLIST.Backward"></a>
|
||||
<a class="sound-control fa-solid fa-forward {{this.controlCSS}}" data-action="playlist-forward"
|
||||
data-tooltip="PLAYLIST.Forward"></a>
|
||||
<a class="sound-control fa-solid fa-square {{this.controlCSS}}" data-action="playlist-stop"
|
||||
data-tooltip="PLAYLIST.Stop"></a>
|
||||
{{else}}
|
||||
<a class="sound-control fa-solid fa-play {{this.controlCSS}}" data-action="playlist-play"
|
||||
data-tooltip="PLAYLIST.Play"></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</header>
|
||||
<ol class="playlist-sounds">
|
||||
{{#each this.sounds as |sound|}}
|
||||
{{> soundPartial sound=sound playback=false}}
|
||||
{{/each}}
|
||||
</ol>
|
||||
</li>
|
||||
122
resources/app/templates/sidebar/playlists-directory.html
Normal file
122
resources/app/templates/sidebar/playlists-directory.html
Normal file
@@ -0,0 +1,122 @@
|
||||
{{#*inline "soundPartial"}}
|
||||
<li class="sound flexrow {{sound.css}}" data-playlist-id="{{sound.playlistId}}" data-sound-id="{{sound._id}}">
|
||||
<h4 class="sound-name">{{sound.name}}</h4>
|
||||
<div class="sound-controls flexrow">
|
||||
{{#if sound.isOwner}}
|
||||
<a class="sound-control fa-solid fa-sync {{#unless sound.repeat}}inactive{{/unless}} {{sound.controlCSS}}"
|
||||
data-action="sound-repeat" data-tooltip="PLAYLIST.SoundLoop"></a>
|
||||
{{/if}}
|
||||
{{#if sound.playing}}
|
||||
<a class="sound-control {{sound.playIcon}} {{sound.controlCSS}}" data-action="sound-stop"
|
||||
data-tooltip="PLAYLIST.SoundStop"></a>
|
||||
{{else}}
|
||||
<a class="sound-control {{sound.playIcon}} {{sound.controlCSS}}" data-action="sound-play"
|
||||
data-tooltip="{{sound.playTitle}}"></a>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{#if playback}}
|
||||
<div class="sound-playback flexrow">
|
||||
<div class="sound-timer">
|
||||
<span class="current">{{sound.currentTime}}</span>
|
||||
<span class="sep">/</span>
|
||||
<span class="duration">{{sound.durationTime}}</span>
|
||||
</div>
|
||||
<i class="volume-icon fas fa-volume-down"></i>
|
||||
<input class="sound-volume" type="range"
|
||||
value="{{sound.lvolume}}" min="0" max="1" step="0.05" data-tooltip="{{sound.volumeTooltip}}">
|
||||
<a class="sound-control pause {{sound.pauseIcon}} {{sound.controlCSS}} {{#if sound.isPaused}}disabled{{/if}}"
|
||||
data-action="sound-pause" data-tooltip="PLAYLIST.SoundPause"></a>
|
||||
</div>
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/inline}}
|
||||
|
||||
{{#*inline "playingPartial"}}
|
||||
{{#if showPlaying}}
|
||||
<div id="currently-playing" class="global-control flexrow {{currentlyPlaying.class}}">
|
||||
<header class="playlist-header flexrow">
|
||||
<h4>{{localize "PLAYLIST.CurrentlyPlaying"}}</h4>
|
||||
<a class="pin fa-solid fa-caret-{{currentlyPlaying.pin.caret}}"
|
||||
data-tooltip="{{localize currentlyPlaying.pin.label}}"></a>
|
||||
</header>
|
||||
<ol class="playlist-sounds">
|
||||
{{#each playingSounds as |sound|}}
|
||||
{{> soundPartial sound=sound playback=true}}
|
||||
{{/each}}
|
||||
</ol>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/inline}}
|
||||
|
||||
<section class="{{cssClass}} directory flexcol" id="{{cssId}}" data-tab="{{tabName}}">
|
||||
|
||||
<!-- Directory Header -->
|
||||
<header class="directory-header">
|
||||
<div class="header-actions action-buttons flexrow">
|
||||
{{#if canCreateEntry}}
|
||||
<button class="create-document create-entry"><i class="{{sidebarIcon}}"></i> {{localize 'SIDEBAR.Create' type=label}}</button>
|
||||
{{/if}}
|
||||
{{#if canCreateFolder }}
|
||||
<button class="create-folder"><i class="{{folderIcon}}"></i> {{localize 'FOLDER.Create'}}</button>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="header-search flexrow">
|
||||
<a class="header-control toggle-search-mode" aria-label="{{localize searchTooltip}}" role="button" data-tooltip="{{localize searchTooltip}}"><i class="fas {{searchIcon}}"></i></a>
|
||||
<input type="search" name="search" value="" placeholder="{{localize 'SIDEBAR.Search' types=labelPlural }}" autocomplete="off">
|
||||
<a class="header-control toggle-sort" aria-label="{{localize sortTooltip}}" role="button" data-tooltip="{{localize sortTooltip}}"><i class="fa-solid {{sortIcon}}"></i></a>
|
||||
<a class="header-control collapse-all" aria-label="{{localize 'FOLDER.Collapse'}}" role="button" data-tooltip="FOLDER.Collapse"><i class="fa-duotone fa-folder-tree"></i></a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div id="global-volume" class="global-control flexrow {{#unless volumeExpanded}}collapsed{{/unless}}">
|
||||
<header class="playlist-header flexrow">
|
||||
<h4>{{localize "PLAYLIST.VOLUME.CONTROLS"}} <i class="collapse fa fa-angle-{{#if volumeExpanded}}down{{else}}up{{/if}}"></i></h4>
|
||||
</header>
|
||||
<ol class="playlist-sounds">
|
||||
<li class="sound flexrow" data-tooltip="AUDIO.CHANNELS.MUSIC.tooltip">
|
||||
<h4>{{localize "AUDIO.CHANNELS.MUSIC.label"}}</h4>
|
||||
<i class="volume-icon fas fa-volume-down"></i>
|
||||
<input class="global-volume-slider" name="globalPlaylistVolume" type="range"
|
||||
value="{{playlistModifier}}" min="0" max="1" step="0.05" data-tooltip="{{playlistTooltip}}"
|
||||
aria-label="{{localize 'AUDIO.CHANNELS.MUSIC.label'}}">
|
||||
</li>
|
||||
<li class="sound flexrow" data-tooltip="AUDIO.CHANNELS.ENVIRONMENT.tooltip">
|
||||
<h4>{{localize "AUDIO.CHANNELS.ENVIRONMENT.label"}}</h4>
|
||||
<i class="volume-icon fas fa-volume-down"></i>
|
||||
<input class="global-volume-slider" name="globalAmbientVolume" type="range" value="{{ambientModifier}}"
|
||||
min="0" max="1" step="0.05" data-tooltip="{{ambientTooltip}}"
|
||||
aria-label="{{localize 'AUDIO.CHANNELS.ENVIRONMENT.label'}}">
|
||||
</li>
|
||||
<li class="sound flexrow" data-tooltip="AUDIO.CHANNELS.INTERFACE.tooltip">
|
||||
<h4>{{localize "AUDIO.CHANNELS.INTERFACE.label"}}</h4>
|
||||
<i class="volume-icon fas fa-volume-down"></i>
|
||||
<input class="global-volume-slider" name="globalInterfaceVolume" type="range"
|
||||
value="{{interfaceModifier}}" min="0" max="1" step="0.05" data-tooltip="{{interfaceTooltip}}"
|
||||
aria-label="{{localize 'AUDIO.CHANNELS.INTERFACE.label'}}">
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
{{#if currentlyPlaying.location.top}}
|
||||
{{> playingPartial}}
|
||||
{{/if}}
|
||||
|
||||
<!-- Directories List -->
|
||||
<ol class="directory-list">
|
||||
{{~#each tree.children}}
|
||||
{{> (lookup @root "folderPartial") node=this folder=this.folder}}
|
||||
{{/each}}
|
||||
{{#each tree.entries}}
|
||||
{{> (lookup @root "entryPartial")}}
|
||||
{{/each~}}
|
||||
</ol>
|
||||
|
||||
{{#if currentlyPlaying.location.bottom}}
|
||||
{{> playingPartial}}
|
||||
{{/if}}
|
||||
|
||||
<!-- Directory Footer -->
|
||||
<footer class="directory-footer"></footer>
|
||||
</section>
|
||||
|
||||
4
resources/app/templates/sidebar/scene-partial.html
Normal file
4
resources/app/templates/sidebar/scene-partial.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<li class="directory-item document {{@root.documentCls}} flexrow" data-entry-id="{{this.id}}"
|
||||
data-document-id="{{this.id}}" data-background-image="{{this.thumbnail}}">
|
||||
<h3 class="document-name entry-name noborder"><a>{{this.name}}</a></h3>
|
||||
</li>
|
||||
88
resources/app/templates/sidebar/settings.html
Normal file
88
resources/app/templates/sidebar/settings.html
Normal file
@@ -0,0 +1,88 @@
|
||||
<section class="{{cssClass}}" id="{{cssId}}" data-tab="{{tabName}}">
|
||||
<h2>{{localize 'SETTINGS.InfoHeader'}}</h2>
|
||||
<ul id="game-details">
|
||||
<li class="version">Foundry Virtual Tabletop
|
||||
<span>
|
||||
{{#if coreUpdate}}
|
||||
<i class="notification-pip update fas fa-exclamation-circle" data-action="core-update" data-tooltip="{{ coreUpdate }}"></i>
|
||||
{{/if}}
|
||||
{{ versionDisplay }}
|
||||
</span>
|
||||
</li>
|
||||
<li class="build">{{localize "MODMANAGE.Build"}} <span>{{ release.build }}</span></li>
|
||||
<hr />
|
||||
<li class="system flexrow">
|
||||
<span class="system-title">{{system.title}}</span>
|
||||
<span class="system-info">
|
||||
{{#if systemUpdate}}
|
||||
<i class="notification-pip update fas fa-exclamation-circle" data-action="system-update" data-tooltip="{{ systemUpdate }}"></i>
|
||||
{{/if}}
|
||||
{{system.version}}
|
||||
</span>
|
||||
</li>
|
||||
<li class="modules">{{localize "MODMANAGE.FilterActive"}} <span>{{ modules }}</span></li>
|
||||
{{#if isDemo}}
|
||||
<li class="demo">{{ localize "SETTINGS.DemoMode" }}</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
|
||||
<h2>{{localize 'SETTINGS.SettingsHeader'}}</h2>
|
||||
<div id="settings-game">
|
||||
<button data-action="configure">
|
||||
<i class="fas fa-cogs"></i> {{localize 'SETTINGS.Configure'}}
|
||||
</button>
|
||||
<button data-action="controls">
|
||||
<i class="fas fa-gamepad"></i> {{localize 'SETTINGS.Keybindings'}}
|
||||
</button>
|
||||
<button data-action="modules">
|
||||
<i class="fas fa-cube"></i>
|
||||
{{#if canConfigure}}{{localize 'SETTINGS.ManageModules'}}
|
||||
{{else}}{{localize "SETTINGS.ViewModules"}}
|
||||
{{/if}}
|
||||
</button>
|
||||
{{#if canEditWorld }}
|
||||
<button data-action="world">
|
||||
<i class="fas fa-globe"></i> {{localize 'SETUP.WorldEdit'}}
|
||||
</button>
|
||||
{{/if}}
|
||||
{{#if canManagePlayers}}
|
||||
<button data-action="players">
|
||||
<i class="fas fa-users"></i> {{localize 'SETTINGS.Players'}}
|
||||
</button>
|
||||
{{/if}}
|
||||
<button data-action="tours">
|
||||
<i class="fas fa-person-hiking"></i> {{localize 'SETTINGS.Tours'}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h2>{{localize 'SETTINGS.DocsHeader'}}</h2>
|
||||
<div id="settings-documentation">
|
||||
<button data-action="support">
|
||||
<i class="fas fa-hands-helping"></i> {{localize 'SETTINGS.Support'}}
|
||||
{{#if issues}}({{issues}}){{/if}}
|
||||
</button>
|
||||
<button data-action="docs">
|
||||
<i class="fas fa-book"></i> {{localize 'SETTINGS.Docs'}}
|
||||
</button>
|
||||
<button data-action="wiki">
|
||||
<i class="fas fa-landmark"></i> {{localize 'SETTINGS.Wiki'}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<h2>{{localize 'SETTINGS.AccessHeader'}}</h2>
|
||||
<div id="settings-access">
|
||||
{{#if user.isGM }}
|
||||
<button data-action="invitations">
|
||||
<i class="fas fa-wifi"></i> {{localize 'SETTINGS.Invite'}}
|
||||
</button>
|
||||
{{/if}}
|
||||
<button data-action="logout">
|
||||
<i class="fas fa-door-closed"></i> {{localize 'SETTINGS.Logout'}}
|
||||
</button>
|
||||
{{#if canReturnSetup}}
|
||||
<button data-action="setup">
|
||||
<i class="fas fa-home"></i> {{localize 'GAME.ReturnSetup'}}
|
||||
</button>
|
||||
{{/if}}
|
||||
</div>
|
||||
</section>
|
||||
16
resources/app/templates/sidebar/sidebar.html
Normal file
16
resources/app/templates/sidebar/sidebar.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<div id="sidebar" class="app">
|
||||
<nav id="sidebar-tabs" class="tabs" role="tablist" data-tooltip-direction="DOWN" aria-label="{{localize 'SIDEBAR.NavLabel'}}">
|
||||
{{#each tabs as |tab id|}}
|
||||
<a class="item" data-tab="{{id}}" aria-label="{{localize tab.tooltip}}" aria-controls="{{id}}" role="tab" data-tooltip="{{tab.tooltip}}">
|
||||
<i class="{{tab.icon}}"></i>
|
||||
{{{tab.notification}}}
|
||||
</a>
|
||||
{{/each}}
|
||||
<a class="collapse" aria-label="{{localize 'SIDEBAR.CollapseToggle'}}" role="button" data-tooltip="{{localize 'SIDEBAR.CollapseToggle'}}">
|
||||
<i class="fas fa-caret-right"></i>
|
||||
</a>
|
||||
</nav>
|
||||
{{#each tabs as |tab id|}}
|
||||
<template class="tab" role="tabpanel" id="{{id}}" data-tab="{{id}}"></template>
|
||||
{{/each}}
|
||||
</div>
|
||||
Reference in New Issue
Block a user