Update inventory controls and permissions filtering

This commit is contained in:
Carlos Fernandez 2026-04-17 20:45:18 -04:00
parent 4b92001f97
commit bff18cee27
21 changed files with 158 additions and 160 deletions

View file

@ -3233,6 +3233,7 @@
"Tooltip": { "Tooltip": {
"disableEffect": "Disable Effect", "disableEffect": "Disable Effect",
"enableEffect": "Enable Effect", "enableEffect": "Enable Effect",
"edit": "Edit",
"openItemWorld": "Open Item World", "openItemWorld": "Open Item World",
"openActorWorld": "Open Actor World", "openActorWorld": "Open Actor World",
"sendToChat": "Send to Chat", "sendToChat": "Send to Chat",

View file

@ -12,8 +12,6 @@ export default class CharacterSheet extends DHBaseActorSheet {
static DEFAULT_OPTIONS = { static DEFAULT_OPTIONS = {
classes: ['character'], classes: ['character'],
position: { width: 850, height: 800 }, position: { width: 850, height: 800 },
/* Foundry adds disabled to all buttons and inputs if editPermission is missing. This is not desired. */
editPermission: CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER,
actions: { actions: {
toggleVault: CharacterSheet.#toggleVault, toggleVault: CharacterSheet.#toggleVault,
rollAttribute: CharacterSheet.#rollAttribute, rollAttribute: CharacterSheet.#rollAttribute,
@ -68,7 +66,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
} }
}, },
{ {
handler: CharacterSheet.#getEquipamentContextOptions, handler: CharacterSheet.#getEquipmentContextOptions,
selector: '[data-item-uuid][data-type="armor"], [data-item-uuid][data-type="weapon"]', selector: '[data-item-uuid][data-type="armor"], [data-item-uuid][data-type="weapon"]',
options: { options: {
parentClassHooks: false, parentClassHooks: false,
@ -170,6 +168,16 @@ export default class CharacterSheet extends DHBaseActorSheet {
return applicationOptions; return applicationOptions;
} }
/** @inheritdoc */
_toggleDisabled(disabled) {
// Overriden to only disable text inputs by default.
// Everything else is done by checking @root.editable in the sheet
const form = this.form;
for (const input of form.querySelectorAll("input:not([type=search])")) {
input.disabled = disabled;
}
}
/** @inheritDoc */ /** @inheritDoc */
async _onRender(context, options) { async _onRender(context, options) {
await super._onRender(context, options); await super._onRender(context, options);
@ -391,14 +399,14 @@ export default class CharacterSheet extends DHBaseActorSheet {
* @this {CharacterSheet} * @this {CharacterSheet}
* @protected * @protected
*/ */
static #getEquipamentContextOptions() { static #getEquipmentContextOptions() {
const options = [ const options = [
{ {
name: 'equip', name: 'equip',
icon: 'fa-solid fa-hands', icon: 'fa-solid fa-hands',
condition: target => { condition: target => {
const doc = getDocFromElementSync(target); const doc = getDocFromElementSync(target);
return doc && !doc.system.equipped; return doc.isOwner && doc && !doc.system.equipped;
}, },
callback: (target, event) => CharacterSheet.#toggleEquipItem.call(this, event, target) callback: (target, event) => CharacterSheet.#toggleEquipItem.call(this, event, target)
}, },
@ -407,7 +415,7 @@ export default class CharacterSheet extends DHBaseActorSheet {
icon: 'fa-solid fa-hands', icon: 'fa-solid fa-hands',
condition: target => { condition: target => {
const doc = getDocFromElementSync(target); const doc = getDocFromElementSync(target);
return doc && doc.system.equipped; return doc.isOwner && doc && doc.system.equipped;
}, },
callback: (target, event) => CharacterSheet.#toggleEquipItem.call(this, event, target) callback: (target, event) => CharacterSheet.#toggleEquipItem.call(this, event, target)
} }

View file

@ -475,7 +475,7 @@ export default function DHApplicationMixin(Base) {
const doc = getDocFromElementSync(target); const doc = getDocFromElementSync(target);
return ( return (
(!dataset.noCompendiumEdit && !doc) || (!dataset.noCompendiumEdit && !doc) ||
(doc && (!doc?.hasOwnProperty('systemPath') || doc?.inCollection)) (doc?.isOwner && (!doc?.hasOwnProperty('systemPath') || doc?.inCollection))
); );
}, },
callback: async target => (await getDocFromElement(target)).sheet.render({ force: true }) callback: async target => (await getDocFromElement(target)).sheet.render({ force: true })
@ -489,6 +489,7 @@ export default function DHApplicationMixin(Base) {
condition: target => { condition: target => {
const doc = getDocFromElementSync(target); const doc = getDocFromElementSync(target);
return ( return (
doc?.isOwner &&
!foundry.utils.isEmpty(doc?.system?.attack?.damage.parts) || !foundry.utils.isEmpty(doc?.system?.attack?.damage.parts) ||
!foundry.utils.isEmpty(doc?.damage?.parts) !foundry.utils.isEmpty(doc?.damage?.parts)
); );
@ -511,7 +512,7 @@ export default function DHApplicationMixin(Base) {
icon: 'fa-solid fa-burst', icon: 'fa-solid fa-burst',
condition: target => { condition: target => {
const doc = getDocFromElementSync(target); const doc = getDocFromElementSync(target);
return doc && !(doc.type === 'domainCard' && doc.system.inVault); return doc?.isOwner && !(doc.type === 'domainCard' && doc.system.inVault);
}, },
callback: async (target, event) => (await getDocFromElement(target)).use(event) callback: async (target, event) => (await getDocFromElement(target)).use(event)
}); });
@ -530,7 +531,8 @@ export default function DHApplicationMixin(Base) {
icon: 'fa-solid fa-trash', icon: 'fa-solid fa-trash',
condition: element => { condition: element => {
const target = element.closest('[data-item-uuid]'); const target = element.closest('[data-item-uuid]');
return target.dataset.itemType !== 'beastform'; const doc = getDocFromElementSync(target);
return doc?.isOwner && target.dataset.itemType !== 'beastform';
}, },
callback: async (target, event) => { callback: async (target, event) => {
const doc = await getDocFromElement(target); const doc = await getDocFromElement(target);

View file

@ -11,21 +11,6 @@
padding-bottom: 0; padding-bottom: 0;
overflow-x: auto; overflow-x: auto;
&.viewMode {
button:not(.btn-toggle-view),
input:not(.search),
.controls,
.character-sidebar-sheet,
.img-portait,
.name-row,
.hope-section,
.downtime-section,
.character-traits,
.card-list {
pointer-events: none;
}
}
.character-sidebar-sheet { .character-sidebar-sheet {
grid-row: 1 / span 2; grid-row: 1 / span 2;
grid-column: 1; grid-column: 1;

View file

@ -316,9 +316,9 @@
border-radius: 3px; border-radius: 3px;
background: light-dark(@dark-blue, @golden); background: light-dark(@dark-blue, @golden);
clip-path: none; clip-path: none;
cursor: pointer;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center;
gap: 4px; gap: 4px;
border: 1px solid transparent; border: 1px solid transparent;
transition: all 0.3s ease; transition: all 0.3s ease;

View file

@ -6,7 +6,7 @@
type='effect' type='effect'
isGlassy=true isGlassy=true
collection=effects.actives collection=effects.actives
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
}} }}
@ -15,7 +15,7 @@
type='effect' type='effect'
isGlassy=true isGlassy=true
collection=effects.inactives collection=effects.inactives
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
}} }}
</div> </div>

View file

@ -6,8 +6,8 @@
type='feature' type='feature'
collection=@root.features collection=@root.features
hideContextMenu=true hideContextMenu=true
canCreate=true canCreate=@root.editable
showActions=true showActions=@root.editable
}} }}
</div> </div>
</section> </section>

View file

@ -7,7 +7,7 @@
type='effect' type='effect'
isGlassy=true isGlassy=true
collection=effects.actives collection=effects.actives
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
}} }}
@ -16,7 +16,7 @@
type='effect' type='effect'
isGlassy=true isGlassy=true
collection=effects.inactives collection=effects.inactives
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
disabled=true disabled=true
}} }}

View file

@ -8,8 +8,8 @@
type='feature' type='feature'
actorType='character' actorType='character'
collection=category.values collection=category.values
canCreate=true canCreate=@root.editable
showActions=true showActions=@root.editable
}} }}
{{else if category.values}} {{else if category.values}}
{{> 'daggerheart.inventory-items' {{> 'daggerheart.inventory-items'
@ -18,7 +18,7 @@
actorType='character' actorType='character'
collection=category.values collection=category.values
canCreate=false canCreate=false
showActions=true showActions=@root.editable
}} }}
{{/if}} {{/if}}

View file

@ -4,6 +4,7 @@
<h1 class="actor-name input" contenteditable="plaintext-only" data-property="name" placeholder="{{localize "DAGGERHEART.GENERAL.actorName"}}">{{source.name}}</h1> <h1 class="actor-name input" contenteditable="plaintext-only" data-property="name" placeholder="{{localize "DAGGERHEART.GENERAL.actorName"}}">{{source.name}}</h1>
<div class='level-div'> <div class='level-div'>
<h3 class='label'> <h3 class='label'>
{{#if @root.editable}}
{{#if document.system.needsCharacterSetup}} {{#if document.system.needsCharacterSetup}}
<button <button
type="button" type="button"
@ -21,6 +22,7 @@
<i class="fa-solid fa-angles-up"></i> <i class="fa-solid fa-angles-up"></i>
</button> </button>
{{/if}} {{/if}}
{{/if}}
{{#unless document.system.needsCharacterSetup}} {{#unless document.system.needsCharacterSetup}}
{{localize 'DAGGERHEART.GENERAL.level'}} {{localize 'DAGGERHEART.GENERAL.level'}}
<input type="text" data-dtype="Number" class="level-value" value={{#if document.system.needsCharacterSetup}}0{{else}}{{document.system.levelData.level.changed}}{{/if}} {{#if document.system.needsCharacterSetup}}disabled{{/if}} /> <input type="text" data-dtype="Number" class="level-value" value={{#if document.system.needsCharacterSetup}}0{{else}}{{document.system.levelData.level.changed}}{{/if}} {{#if document.system.needsCharacterSetup}}disabled{{/if}} />
@ -110,12 +112,14 @@
<i class="fa-solid fa-fw fa-users"></i> <i class="fa-solid fa-fw fa-users"></i>
</button> </button>
{{/if}} {{/if}}
{{#if @root.editable}}
<button type="button" data-action="useDowntime" data-type="shortRest" data-tooltip="DAGGERHEART.APPLICATIONS.Downtime.shortRest.title"> <button type="button" data-action="useDowntime" data-type="shortRest" data-tooltip="DAGGERHEART.APPLICATIONS.Downtime.shortRest.title">
<i class="fa-solid fa-fw fa-utensils"></i> <i class="fa-solid fa-fw fa-utensils"></i>
</button> </button>
<button type="button" data-action="useDowntime" data-type="longRest" data-tooltip="DAGGERHEART.APPLICATIONS.Downtime.longRest.title"> <button type="button" data-action="useDowntime" data-type="longRest" data-tooltip="DAGGERHEART.APPLICATIONS.Downtime.longRest.title">
<i class="fa-solid fa-fw fa-bed"></i> <i class="fa-solid fa-fw fa-bed"></i>
</button> </button>
{{/if}}
</div> </div>
</div> </div>

View file

@ -22,7 +22,7 @@
type='weapon' type='weapon'
collection=@root.inventory.weapons collection=@root.inventory.weapons
isGlassy=true isGlassy=true
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
}} }}
{{> 'daggerheart.inventory-items' {{> 'daggerheart.inventory-items'
@ -30,7 +30,7 @@
type='armor' type='armor'
collection=@root.inventory.armor collection=@root.inventory.armor
isGlassy=true isGlassy=true
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
}} }}
{{> 'daggerheart.inventory-items' {{> 'daggerheart.inventory-items'
@ -38,7 +38,7 @@
type='consumable' type='consumable'
collection=@root.inventory.consumables collection=@root.inventory.consumables
isGlassy=true isGlassy=true
canCreate=true canCreate=@root.editable
isQuantifiable=true isQuantifiable=true
}} }}
{{> 'daggerheart.inventory-items' {{> 'daggerheart.inventory-items'
@ -46,8 +46,8 @@
type='loot' type='loot'
collection=@root.inventory.loot collection=@root.inventory.loot
isGlassy=true isGlassy=true
canCreate=true canCreate=@root.editable
showActions=true showActions=@root.editable
isQuantifiable=true isQuantifiable=true
}} }}
</div> </div>

View file

@ -27,7 +27,7 @@
isGlassy=true isGlassy=true
cardView=cardView cardView=cardView
collection=document.system.domainCards.loadout collection=document.system.domainCards.loadout
canCreate=true canCreate=@root.editable
}} }}
{{> 'daggerheart.inventory-items' {{> 'daggerheart.inventory-items'
title='DAGGERHEART.GENERAL.Tabs.vault' title='DAGGERHEART.GENERAL.Tabs.vault'
@ -35,7 +35,7 @@
isGlassy=true isGlassy=true
cardView=cardView cardView=cardView
collection=document.system.domainCards.vault collection=document.system.domainCards.vault
canCreate=true canCreate=@root.editable
inVault=true inVault=true
}} }}
</div> </div>

View file

@ -45,11 +45,11 @@
</a> </a>
{{/times}} {{/times}}
</div> </div>
<a class="slot-label" data-action="toggleArmorMangement"> <a class="slot-label" data-action="toggleArmorMangement" {{disabled (not @root.editable)}}>
<span class="label">{{localize "DAGGERHEART.GENERAL.armorSlots"}}</span> <span class="label">{{localize "DAGGERHEART.GENERAL.armorSlots"}}</span>
<div class="slot-value-container"> <div class="slot-value-container">
<span class="value">{{document.system.armorScore.value}} / {{document.system.armorScore.max}}</span> <span class="value">{{document.system.armorScore.value}} / {{document.system.armorScore.max}}</span>
<i class="fa-solid fa-gear"></i> {{#if @root.editable}}<i class="fa-solid fa-gear" inert></i>{{/if}}
</div> </div>
</a> </a>
</div> </div>
@ -64,9 +64,9 @@
value='{{document.system.armorScore.value}}' value='{{document.system.armorScore.value}}'
max='{{document.system.armorScore.max}}' max='{{document.system.armorScore.max}}'
></progress> ></progress>
<a class="status-label" data-action="toggleArmorMangement"> <a class="status-label" data-action="toggleArmorMangement" {{disabled (not @root.editable)}}>
<h4>{{localize "DAGGERHEART.GENERAL.armorSlots"}}</h4> <h4>{{localize "DAGGERHEART.GENERAL.armorSlots"}}</h4>
<i class="fa-solid fa-gear"></i> {{#if @root.editable}}<i class="fa-solid fa-gear" inert></i>{{/if}}
</a> </a>
{{/if}} {{/if}}
</div> </div>

View file

@ -6,7 +6,7 @@
type='effect' type='effect'
isGlassy=true isGlassy=true
collection=effects.actives collection=effects.actives
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
}} }}
@ -15,7 +15,7 @@
type='effect' type='effect'
isGlassy=true isGlassy=true
collection=effects.inactives collection=effects.inactives
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
}} }}
</div> </div>

View file

@ -9,8 +9,8 @@
type='feature' type='feature'
collection=@root.features collection=@root.features
hideContextMenu=true hideContextMenu=true
canCreate=true canCreate=@root.editable
showActions=true showActions=@root.editable
}} }}
</div> </div>
</section> </section>

View file

@ -26,7 +26,7 @@
actorType='party' actorType='party'
collection=@root.inventory.weapons collection=@root.inventory.weapons
isGlassy=true isGlassy=true
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
hideContextMenu=true hideContextMenu=true
isQuantifiable=true isQuantifiable=true
@ -37,7 +37,7 @@
actorType='party' actorType='party'
collection=@root.inventory.armor collection=@root.inventory.armor
isGlassy=true isGlassy=true
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
hideContextMenu=true hideContextMenu=true
isQuantifiable=true isQuantifiable=true
@ -48,7 +48,7 @@
actorType='party' actorType='party'
collection=@root.inventory.consumables collection=@root.inventory.consumables
isGlassy=true isGlassy=true
canCreate=true canCreate=@root.editable
hideContextMenu=true hideContextMenu=true
isQuantifiable=true isQuantifiable=true
}} }}
@ -58,7 +58,7 @@
actorType='party' actorType='party'
collection=@root.inventory.loot collection=@root.inventory.loot
isGlassy=true isGlassy=true
canCreate=true canCreate=@root.editable
hideContextMenu=true hideContextMenu=true
isQuantifiable=true isQuantifiable=true
}} }}

View file

@ -52,12 +52,11 @@ Parameters:
{{else}} {{else}}
<ul class="items-list"> <ul class="items-list">
{{#each collection as |item|}} {{#each collection as |item|}}
{{> 'daggerheart.inventory-item' {{> 'daggerheart.inventory-item'
item=item item=item
type=../type type=../type
disabledEffect=../disabledEffect disabledEffect=../disabledEffect
actorType=../actorType actorType=(ifThen ../actorType ../actorType @root.document.type)
hideControls=../hideControls hideControls=../hideControls
hideContextMenu=../hideContextMenu hideContextMenu=../hideContextMenu
isActor=../isActor isActor=../isActor

View file

@ -72,62 +72,59 @@ Parameters:
{{!-- Controls --}} {{!-- Controls --}}
{{#unless hideControls}} {{#unless hideControls}}
<div class="controls"> <div class="controls">
{{#if isActor}} {{!-- Toggle/Equip buttons --}}
<a data-action="editDoc" data-tooltip="DAGGERHEART.UI.Tooltip.openActorWorld"> {{#if @root.editable}}
<i class="fa-solid fa-globe"></i> {{#if (and (eq actorType 'character') (eq type 'weapon'))}}
</a>
{{#if (eq type 'adversary')}}
<a data-action='deleteAdversary' data-category="{{categoryAdversary}}" data-tooltip="CONTROLS.CommonDelete">
<i class='fas fa-trash'></i>
</a>
{{/if}}
{{#if (eq type 'character')}}
<a data-action='deletePartyMember' data-tooltip="CONTROLS.CommonDelete">
<i class='fas fa-trash'></i>
</a>
{{/if}}
{{else}}
{{#unless (eq actorType 'party')}}
{{#if (eq type 'weapon')}}
<a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem" <a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem"
data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.system.equipped 'unequip' 'equip' }}"> data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.system.equipped 'unequip' 'equip' }}">
<i class="fa-solid fa-hands"></i> <i class="fa-solid fa-hands" inert></i>
</a>
{{else if (eq type 'armor')}}
<a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem"
data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.system.equipped 'unequip' 'equip' }}">
<i class="fa-solid fa-fw fa-shield"></i>
</a> </a>
{{/if}} {{/if}}
{{#if (eq type 'domainCard')}} {{#if (and (eq actorType 'character') (eq type 'armor'))}}
<a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem"
data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.system.equipped 'unequip' 'equip' }}">
<i class="fa-solid fa-fw fa-shield" inert></i>
</a>
{{/if}}
{{#if (and (eq type 'domainCard'))}}
<a data-action="toggleVault" <a data-action="toggleVault"
data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.system.inVault 'sendToLoadout' 'sendToVault' }}"> data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.system.inVault 'sendToLoadout' 'sendToVault' }}">
<i class="fa-solid {{ifThen item.system.inVault 'fa-arrow-up' 'fa-arrow-down'}}"></i> <i class="fa-solid {{ifThen item.system.inVault 'fa-arrow-up' 'fa-arrow-down'}}" inert></i>
</a> </a>
{{else if (and (eq type 'effect') (not (eq item.type 'beastform')))}} {{/if}}
{{#if (and (and (eq type 'effect') (not (eq item.type 'beastform'))))}}
<a data-action="toggleEffect" <a data-action="toggleEffect"
data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.disabled 'enableEffect' 'disableEffect' }}"> data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.disabled 'enableEffect' 'disableEffect' }}">
<i class="{{ifThen item.disabled 'fa-solid fa-toggle-off' 'fa-solid fa-toggle-on'}}"></i> <i class="{{ifThen item.disabled 'fa-solid fa-toggle-off' 'fa-solid fa-toggle-on'}}" inert></i>
</a> </a>
{{/if}} {{/if}}
{{/if}}
{{!-- Send to Chat --}}
{{#if (hasProperty item "toChat")}} {{#if (hasProperty item "toChat")}}
<a data-action="toChat" data-tooltip="DAGGERHEART.UI.Tooltip.sendToChat"> <a data-action="toChat" data-tooltip="DAGGERHEART.UI.Tooltip.sendToChat">
<i class="fa-regular fa-fw fa-message"></i> <i class="fa-regular fa-fw fa-message" inert></i>
</a> </a>
{{/if}} {{/if}}
{{else}}
<a data-action="editDoc" data-tooltip="DAGGERHEART.UI.Tooltip.openActorWorld"> {{!-- Document management buttons or context menu --}}
<i class="fa-solid fa-globe"></i> {{#if (and (not isActor) (not hideContextMenu))}}
</a>
<a data-action="deleteItem" data-tooltip="DAGGERHEART.UI.Tooltip.deleteItem">
<i class="fa-solid fa-trash"></i>
</a>
{{/unless}}
{{#unless hideContextMenu}}
<a data-action="triggerContextMenu" data-tooltip="DAGGERHEART.UI.Tooltip.moreOptions"> <a data-action="triggerContextMenu" data-tooltip="DAGGERHEART.UI.Tooltip.moreOptions">
<i class="fa-solid fa-fw fa-ellipsis-vertical"></i> <i class="fa-solid fa-fw fa-ellipsis-vertical" inert></i>
</a> </a>
{{/unless}} {{else if @root.editable}}
<a data-action="editDoc" data-tooltip="DAGGERHEART.UI.Tooltip.edit">
<i class="fa-solid fa-edit" inert></i>
</a>
{{#if (not isActor)}}
<a data-action="deleteItem" data-tooltip="DAGGERHEART.UI.Tooltip.deleteItem">
<i class="fa-solid fa-trash" inert></i>
</a>
{{else if (eq type 'adversary')}}
<a data-action='deleteAdversary' data-category="{{categoryAdversary}}" data-tooltip="CONTROLS.CommonDelete">
<i class="fas fa-trash" inert></i>
</a>
{{/if}}
{{/if}} {{/if}}
</div> </div>
{{/unless}} {{/unless}}

View file

@ -48,6 +48,7 @@
</a> </a>
{{/if}} {{/if}}
{{else}} {{else}}
{{#if @root.editable}}
{{#if (eq type 'weapon')}} {{#if (eq type 'weapon')}}
<a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem" <a class="{{#unless item.system.equipped}}unequipped{{/unless}}" data-action="toggleEquipItem"
data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.system.equipped 'unequip' 'equip' }}"> data-tooltip="DAGGERHEART.UI.Tooltip.{{ifThen item.system.equipped 'unequip' 'equip' }}">
@ -69,6 +70,7 @@
<i class="fa-solid fa-fw {{ifThen item.disabled 'fa-toggle-off' 'fa-toggle-on'}}"></i> <i class="fa-solid fa-fw {{ifThen item.disabled 'fa-toggle-off' 'fa-toggle-on'}}"></i>
</a> </a>
{{/if}} {{/if}}
{{/if}}
{{#if (hasProperty item "toChat")}} {{#if (hasProperty item "toChat")}}
<a data-action="toChat" data-tooltip="DAGGERHEART.UI.Tooltip.sendToChat"> <a data-action="toChat" data-tooltip="DAGGERHEART.UI.Tooltip.sendToChat">
<i class="fa-regular fa-fw fa-message"></i> <i class="fa-regular fa-fw fa-message"></i>

View file

@ -8,6 +8,6 @@
title='DAGGERHEART.GENERAL.Action.plural' title='DAGGERHEART.GENERAL.Action.plural'
collection=document.system.actions collection=document.system.actions
type='action' type='action'
canCreate=true canCreate=@root.editable
}} }}
</section> </section>

View file

@ -6,7 +6,7 @@
type='effect' type='effect'
isGlassy=true isGlassy=true
collection=effects.actives collection=effects.actives
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
}} }}
@ -16,7 +16,7 @@
disabledEffect=true disabledEffect=true
isGlassy=true isGlassy=true
collection=effects.inactives collection=effects.inactives
canCreate=true canCreate=@root.editable
hideResources=true hideResources=true
}} }}
</section> </section>