mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 00:55:06 +08:00
a23d0f9961
Currently the process of adding a custom image to badge is quite clunky; you have to upload your image to a topic, and then copy the image URL and pasting it in a text field. Besides being clucky, if the topic or post that contains the image is deleted, the image will be garbage-collected in a few days and the badge will lose the image because the application is not that the image is referenced by a badge. This commit improves that by adding a proper image uploader widget for badge images.
223 lines
6.5 KiB
Handlebars
223 lines
6.5 KiB
Handlebars
{{#d-section class="current-badge content-body"}}
|
|
<form class="form-horizontal">
|
|
<div>
|
|
<label for="name">{{i18n "admin.badges.name"}}</label>
|
|
{{#if readOnly}}
|
|
{{input type="text" name="name" value=buffered.name disabled=true}}
|
|
<p class="help">
|
|
{{#link-to "adminSiteText" (query-params q=(concat textCustomizationPrefix "name"))}}
|
|
{{i18n "admin.badges.read_only_setting_help"}}
|
|
{{/link-to}}
|
|
</p>
|
|
{{else}}
|
|
{{input type="text" name="name" value=buffered.name}}
|
|
{{/if}}
|
|
</div>
|
|
|
|
<div>
|
|
<label for="graphic">{{i18n "admin.badges.graphic"}}</label>
|
|
<div class="radios">
|
|
<label class="radio-label" for="badge-icon">
|
|
{{radio-button
|
|
name="badge-icon"
|
|
id="badge-icon"
|
|
value="icon"
|
|
selection=selectedGraphicType
|
|
onChange=(action "changeGraphicType")
|
|
}}
|
|
<span>{{i18n "admin.badges.select_an_icon"}}</span>
|
|
</label>
|
|
|
|
<label class="radio-label" for="badge-image">
|
|
{{radio-button
|
|
name="badge-image"
|
|
id="badge-image"
|
|
value="image"
|
|
selection=selectedGraphicType
|
|
onChange=(action "changeGraphicType")
|
|
}}
|
|
<span>{{i18n "admin.badges.upload_an_image"}}</span>
|
|
</label>
|
|
</div>
|
|
{{#if imageUploaderSelected}}
|
|
{{image-uploader
|
|
imageUrl=buffered.image_url
|
|
onUploadDone=(action "setImage")
|
|
onUploadDeleted=(action "removeImage")
|
|
type="badge_image"
|
|
class="no-repeat contain-image"}}
|
|
<div class="control-instructions">
|
|
<p class="help">{{i18n "admin.badges.image_help"}}</p>
|
|
</div>
|
|
{{else if iconSelectorSelected}}
|
|
{{icon-picker
|
|
name="icon"
|
|
value=buffered.icon
|
|
options=(hash maximum=1)
|
|
onChange=(action (mut buffered.icon))
|
|
}}
|
|
{{/if}}
|
|
</div>
|
|
|
|
<div>
|
|
<label for="badge_type_id">{{i18n "admin.badges.badge_type"}}</label>
|
|
{{combo-box
|
|
name="badge_type_id"
|
|
value=buffered.badge_type_id
|
|
content=badgeTypes
|
|
onChange=(action (mut buffered.badge_type_id))
|
|
isDisabled=readOnly
|
|
}}
|
|
</div>
|
|
|
|
<div>
|
|
<label for="badge_grouping_id">{{i18n "admin.badges.badge_grouping"}}</label>
|
|
|
|
<div class="badge-grouping-control">
|
|
{{combo-box
|
|
name="badge_grouping_id"
|
|
value=buffered.badge_grouping_id
|
|
content=badgeGroupings
|
|
class="badge-selector"
|
|
nameProperty="name"
|
|
onChange=(action (mut buffered.badge_grouping_id))
|
|
}}
|
|
{{d-button
|
|
class="btn-default"
|
|
action=(route-action "editGroupings")
|
|
icon="pencil-alt"
|
|
}}
|
|
</div>
|
|
</div>
|
|
|
|
<div>
|
|
<label for="description">{{i18n "admin.badges.description"}}</label>
|
|
{{#if buffered.system}}
|
|
{{textarea name="description" value=buffered.description disabled=true}}
|
|
<p class="help">
|
|
{{#link-to "adminSiteText" (query-params q=(concat textCustomizationPrefix "description"))}}
|
|
{{i18n "admin.badges.read_only_setting_help"}}
|
|
{{/link-to}}
|
|
</p>
|
|
{{else}}
|
|
{{textarea name="description" value=buffered.description}}
|
|
{{/if}}
|
|
</div>
|
|
|
|
<div>
|
|
<label for="long_description">{{i18n "admin.badges.long_description"}}</label>
|
|
{{#if buffered.system}}
|
|
{{textarea name="long_description" value=buffered.long_description disabled=true}}
|
|
<p class="help">
|
|
{{#link-to "adminSiteText" (query-params q=(concat textCustomizationPrefix "long_description"))}}
|
|
{{i18n "admin.badges.read_only_setting_help"}}
|
|
{{/link-to}}
|
|
</p>
|
|
{{else}}
|
|
{{textarea name="long_description" value=buffered.long_description}}
|
|
{{/if}}
|
|
</div>
|
|
|
|
{{#if siteSettings.enable_badge_sql}}
|
|
<div>
|
|
<label for="query">{{i18n "admin.badges.query"}}</label>
|
|
{{ace-editor content=buffered.query mode="sql" disabled=readOnly}}
|
|
</div>
|
|
|
|
{{#if hasQuery}}
|
|
<a href {{action "preview" buffered "false"}}>{{i18n "admin.badges.preview.link_text"}}</a>
|
|
|
|
|
<a href {{action "preview" buffered "true"}}>{{i18n "admin.badges.preview.plan_text"}}</a>
|
|
{{#if preview_loading}}
|
|
{{i18n "loading"}}
|
|
{{/if}}
|
|
|
|
<div>
|
|
<label>
|
|
{{input type="checkbox" checked=buffered.auto_revoke disabled=readOnly}}
|
|
{{i18n "admin.badges.auto_revoke"}}
|
|
</label>
|
|
</div>
|
|
|
|
<div>
|
|
<label>
|
|
{{input type="checkbox" checked=buffered.target_posts disabled=readOnly}}
|
|
{{i18n "admin.badges.target_posts"}}
|
|
</label>
|
|
</div>
|
|
|
|
<div>
|
|
<label for="trigger">{{i18n "admin.badges.trigger"}}</label>
|
|
{{combo-box
|
|
name="trigger"
|
|
value=buffered.trigger
|
|
content=badgeTriggers
|
|
onChange=(action (mut buffered.trigger))
|
|
disabled=readOnly
|
|
}}
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
<div>
|
|
<label>
|
|
{{input type="checkbox" checked=buffered.allow_title}}
|
|
{{i18n "admin.badges.allow_title"}}
|
|
</label>
|
|
</div>
|
|
|
|
<div>
|
|
<label>
|
|
{{input type="checkbox" checked=buffered.multiple_grant disabled=readOnly}}
|
|
{{i18n "admin.badges.multiple_grant"}}
|
|
</label>
|
|
</div>
|
|
|
|
<div>
|
|
<label>
|
|
{{input type="checkbox" checked=buffered.listable disabled=readOnly}}
|
|
{{i18n "admin.badges.listable"}}
|
|
</label>
|
|
</div>
|
|
|
|
<div>
|
|
<label>
|
|
{{input type="checkbox" checked=buffered.show_posts disabled=readOnly}}
|
|
{{i18n "admin.badges.show_posts"}}
|
|
</label>
|
|
</div>
|
|
|
|
<div>
|
|
<label>
|
|
{{input type="checkbox" checked=buffered.enabled}}
|
|
{{i18n "admin.badges.enabled"}}
|
|
</label>
|
|
</div>
|
|
|
|
<div class="buttons">
|
|
{{d-button
|
|
class="btn-primary"
|
|
action=(action "save")
|
|
type="submit"
|
|
disabled=saving
|
|
label="admin.badges.save"}}
|
|
<span class="saving">{{savingStatus}}</span>
|
|
{{#unless readOnly}}
|
|
{{d-button
|
|
action=(action "destroy")
|
|
class="btn-danger"
|
|
label="admin.badges.delete"
|
|
}}
|
|
{{/unless}}
|
|
</div>
|
|
</form>
|
|
{{/d-section}}
|
|
|
|
{{#if grant_count}}
|
|
<div class="content-body current-badge-actions">
|
|
<div>
|
|
{{#link-to "badges.show" this}}{{i18n "badges.granted" count=grant_count}}{{/link-to}}
|
|
</div>
|
|
</div>
|
|
{{/if}}
|