DEV: Add outlet wrapper for user badges form (#29333)

* DEV: Add outlet wrapper for user badges form

* Add outlet for badge granter table

* add extra args to outlet
This commit is contained in:
Amanda Alves Branquinho 2024-10-24 11:10:10 -03:00 committed by GitHub
parent 2f1d1cd062
commit 0ecad3a7c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 90 additions and 74 deletions

View File

@ -16,84 +16,100 @@
{{#if this.noAvailableBadges}}
<p>{{i18n "admin.badges.no_badges"}}</p>
{{else}}
<form class="form-horizontal">
<div class="control-group">
<label>{{i18n "admin.badges.badge"}}</label>
<ComboBox
@value={{this.selectedBadgeId}}
@content={{this.availableBadges}}
@onChange={{fn (mut this.selectedBadgeId)}}
@options={{hash filterable=true}}
<PluginOutlet
@name="badge-granter-form"
@outletArgs={{hash
availableBadges=this.availableBadges
userBadges=this.userBadges
}}
>
<form class="form-horizontal">
<div class="control-group">
<label>{{i18n "admin.badges.badge"}}</label>
<ComboBox
@value={{this.selectedBadgeId}}
@content={{this.availableBadges}}
@onChange={{fn (mut this.selectedBadgeId)}}
@options={{hash filterable=true}}
/>
</div>
<div class="control-group">
<label>{{i18n "admin.badges.reason"}}</label>
<Input @type="text" @value={{this.badgeReason}} /><br /><small
>{{i18n "admin.badges.reason_help"}}</small>
</div>
<DButton
@action={{this.performGrantBadge}}
@label="admin.badges.grant"
type="submit"
class="btn-primary"
/>
</div>
<div class="control-group">
<label>{{i18n "admin.badges.reason"}}</label>
<Input @type="text" @value={{this.badgeReason}} /><br /><small>{{i18n
"admin.badges.reason_help"
}}</small>
</div>
<DButton
@action={{this.performGrantBadge}}
@label="admin.badges.grant"
type="submit"
class="btn-primary"
/>
</form>
</form>
</PluginOutlet>
{{/if}}
<table id="user-badges">
<tbody>
<tr>
<th>{{i18n "admin.badges.badge"}}</th>
<th>{{i18n "admin.badges.granted_by"}}</th>
<th class="reason">{{i18n "admin.badges.reason"}}</th>
<th>{{i18n "admin.badges.granted_at"}}</th>
<th></th>
</tr>
{{#each this.groupedBadges as |userBadge|}}
<PluginOutlet
@name="badge-granter-table"
@outletArgs={{hash
groupedBadges=this.groupedBadges
revokeBadge=this.revokeBadge
expandGroup=this.expandGroup
}}
>
<table id="user-badges">
<tbody>
<tr>
<td><UserBadge
@badge={{userBadge.badge}}
@count={{userBadge.count}}
/></td>
<td>
<LinkTo @route="adminUser" @model={{userBadge.granted_by}}>
{{avatar userBadge.granted_by imageSize="tiny"}}
{{userBadge.granted_by.username}}
</LinkTo>
</td>
<td class="reason">
{{#if userBadge.postUrl}}
<a href={{userBadge.postUrl}}>{{userBadge.topic_title}}</a>
{{/if}}
</td>
<td>{{age-with-tooltip userBadge.granted_at}}</td>
<td>
{{#if userBadge.grouped}}
<DButton
@action={{fn this.expandGroup userBadge}}
@label="admin.badges.expand"
/>
{{else}}
<DButton
@action={{fn this.revokeBadge userBadge}}
@label="admin.badges.revoke"
class="btn-danger"
/>
{{/if}}
</td>
<th>{{i18n "admin.badges.badge"}}</th>
<th>{{i18n "admin.badges.granted_by"}}</th>
<th class="reason">{{i18n "admin.badges.reason"}}</th>
<th>{{i18n "admin.badges.granted_at"}}</th>
<th></th>
</tr>
{{else}}
<tr>
<td colspan="5">
<p>{{i18n
"admin.badges.no_user_badges"
name=this.user.username
}}</p>
</td>
</tr>
{{/each}}
</tbody>
</table>
{{#each this.groupedBadges as |userBadge|}}
<tr>
<td><UserBadge
@badge={{userBadge.badge}}
@count={{userBadge.count}}
/></td>
<td>
<LinkTo @route="adminUser" @model={{userBadge.granted_by}}>
{{avatar userBadge.granted_by imageSize="tiny"}}
{{userBadge.granted_by.username}}
</LinkTo>
</td>
<td class="reason">
{{#if userBadge.postUrl}}
<a href={{userBadge.postUrl}}>{{userBadge.topic_title}}</a>
{{/if}}
</td>
<td>{{age-with-tooltip userBadge.granted_at}}</td>
<td>
{{#if userBadge.grouped}}
<DButton
@action={{fn this.expandGroup userBadge}}
@label="admin.badges.expand"
/>
{{else}}
<DButton
@action={{fn this.revokeBadge userBadge}}
@label="admin.badges.revoke"
class="btn-danger"
/>
{{/if}}
</td>
</tr>
{{else}}
<tr>
<td colspan="5">
<p>{{i18n
"admin.badges.no_user_badges"
name=this.user.username
}}</p>
</td>
</tr>
{{/each}}
</tbody>
</table>
</PluginOutlet>
</div>
</ConditionalLoadingSpinner>