DEV: enforces ember-template-lint: no-unbound (#9147)

From ember-template-lint documentation (https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/no-unbound.md):

```
{{unbound}} is a legacy hold over from the days in which Ember's template engine was less performant. Its use today is vestigial, and it no longer offers performance benefits.

It is also a poor practice to use it for rendering only the initial value of a property that may later change.
```

Co-Authored-By: Jarek Radosz <jradosz@gmail.com>
This commit is contained in:
Joffrey JAFFEUX 2020-03-09 15:28:31 +01:00 committed by GitHub
parent 345ac6cb67
commit f1bb1db354
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
53 changed files with 86 additions and 85 deletions

View File

@ -10,6 +10,7 @@ module.exports = {
"link-rel-noopener": true, "link-rel-noopener": true,
"no-unnecessary-concat": true, "no-unnecessary-concat": true,
"no-unused-block-params": true, "no-unused-block-params": true,
"no-unbound": true,
"simple-unless": true "simple-unless": true
} }
}; };

View File

@ -1,5 +1,5 @@
<div class='setting-label'> <div class='setting-label'>
<h3>{{unbound settingName}}</h3> <h3>{{settingName}}</h3>
{{#if defaultIsAvailable}} {{#if defaultIsAvailable}}
<a href onClick={{action 'setDefaultValues'}}>{{setting.setDefaultValuesLabel}}</a> <a href onClick={{action 'setDefaultValues'}}>{{setting.setDefaultValuesLabel}}</a>
{{/if}} {{/if}}

View File

@ -1,5 +1,5 @@
<label> <label>
{{input type="checkbox" checked=enabled}} {{input type="checkbox" checked=enabled}}
<span>{{{unbound setting.description}}}</span> <span>{{{setting.description}}}</span>
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
</label> </label>

View File

@ -3,5 +3,5 @@
onChange=(action "onChangeSelectedCategories") onChange=(action "onChangeSelectedCategories")
}} }}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}

View File

@ -4,4 +4,4 @@
onChange=(action (mut value)) onChange=(action (mut value))
}} }}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -6,4 +6,4 @@
onChangeColor=(action "onChangeColor") onChangeColor=(action "onChangeColor")
}} }}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class="desc">{{{unbound setting.description}}}</div> <div class="desc">{{{setting.description}}}</div>

View File

@ -8,4 +8,4 @@
}} }}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -15,5 +15,5 @@
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'> <div class='desc'>
{{{unbound setting.description}}} {{{setting.description}}}
</div> </div>

View File

@ -7,4 +7,4 @@
onChange=(action "onChangeGroupListSetting") onChange=(action "onChangeGroupListSetting")
}} }}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -1,3 +1,3 @@
{{value-list values=value addKey="admin.site_settings.add_host"}} {{value-list values=value addKey="admin.site_settings.add_host"}}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -1,3 +1,3 @@
{{value-list values=value inputDelimiter="|" choices=setting.choices}} {{value-list values=value inputDelimiter="|" choices=setting.choices}}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -1,3 +1,3 @@
{{secret-value-list setting=setting values=value isSecret=isSecret}} {{secret-value-list setting=setting values=value isSecret=isSecret}}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -7,4 +7,4 @@
{{/if}} {{/if}}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -1,3 +1,3 @@
{{tag-chooser tags=selectedTags}} {{tag-chooser tags=selectedTags}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}

View File

@ -1,2 +1,2 @@
{{site-settings-image-uploader imageUrl=value placeholderUrl=setting.placeholder type="site_setting"}} {{site-settings-image-uploader imageUrl=value placeholderUrl=setting.placeholder type="site_setting"}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -1,2 +1,2 @@
{{d-button label="admin.site_settings.uploaded_image_list.label" action=(action "showUploadModal") actionParam=(hash value=value setting=setting)}} {{d-button label="admin.site_settings.uploaded_image_list.label" action=(action "showUploadModal") actionParam=(hash value=value setting=setting)}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -1,3 +1,3 @@
{{value-list values=value addKey="admin.site_settings.add_url"}} {{value-list values=value addKey="admin.site_settings.add_url"}}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -1,3 +1,3 @@
{{value-list values=value}} {{value-list values=value}}
{{setting-validation-message message=validationMessage}} {{setting-validation-message message=validationMessage}}
<div class='desc'>{{{unbound setting.description}}}</div> <div class='desc'>{{{setting.description}}}</div>

View File

@ -27,7 +27,7 @@
&mdash; &mdash;
{{/if}} {{/if}}
</td> </td>
<td><a href='mailto:{{unbound l.to_address}}'>{{l.to_address}}</a></td> <td><a href='mailto:{{l.to_address}}'>{{l.to_address}}</a></td>
{{#if l.has_bounce_key}} {{#if l.has_bounce_key}}
<td><a href {{action "showIncomingEmail" l.id}}>{{l.email_type}}</a></td> <td><a href {{action "showIncomingEmail" l.id}}>{{l.email_type}}</a></td>
{{else}} {{else}}

View File

@ -34,10 +34,10 @@
</td> </td>
<td class="addresses"> <td class="addresses">
{{#each email.to_addresses as |to|}} {{#each email.to_addresses as |to|}}
<p><a href="mailto:{{unbound to}}" title="TO">{{unbound to}}</a></p> <p><a href="mailto:{{to}}" title="TO">{{to}}</a></p>
{{/each}} {{/each}}
{{#each email.cc_addresses as |cc|}} {{#each email.cc_addresses as |cc|}}
<p><a href="mailto:{{unbound cc}}" title="CC">{{unbound cc}}</a></p> <p><a href="mailto:{{cc}}" title="CC">{{cc}}</a></p>
{{/each}} {{/each}}
</td> </td>
<td> <td>

View File

@ -31,7 +31,7 @@
{{/link-to}} {{/link-to}}
{{else}} {{else}}
{{#if email.from_address}} {{#if email.from_address}}
<a href='mailto:{{unbound email.from_address}}'>{{email.from_address}}</a> <a href='mailto:{{email.from_address}}'>{{email.from_address}}</a>
{{else}} {{else}}
&mdash; &mdash;
{{/if}} {{/if}}
@ -40,10 +40,10 @@
</td> </td>
<td class="addresses"> <td class="addresses">
{{#each email.to_addresses as |to|}} {{#each email.to_addresses as |to|}}
<p><a href="mailto:{{unbound to}}" title="TO">{{unbound to}}</a></p> <p><a href="mailto:{{to}}" title="TO">{{to}}</a></p>
{{/each}} {{/each}}
{{#each email.cc_addresses as |cc|}} {{#each email.cc_addresses as |cc|}}
<p><a href="mailto:{{unbound cc}}" title="CC">{{unbound cc}}</a></p> <p><a href="mailto:{{cc}}" title="CC">{{cc}}</a></p>
{{/each}} {{/each}}
</td> </td>
<td>{{email.subject}}</td> <td>{{email.subject}}</td>

View File

@ -31,7 +31,7 @@
</td> </td>
<td> <td>
{{#if l.bounced}}{{d-icon "redo" title="admin.email.bounced"}}{{/if}} {{#if l.bounced}}{{d-icon "redo" title="admin.email.bounced"}}{{/if}}
<a href='mailto:{{unbound l.to_address}}'>{{l.to_address}}</a> <a href='mailto:{{l.to_address}}'>{{l.to_address}}</a>
</td> </td>
<td>{{l.email_type}}</td> <td>{{l.email_type}}</td>
<td class='post-link'> <td class='post-link'>

View File

@ -29,7 +29,7 @@
&mdash; &mdash;
{{/if}} {{/if}}
</td> </td>
<td><a href='mailto:{{unbound l.to_address}}'>{{l.to_address}}</a></td> <td><a href='mailto:{{l.to_address}}'>{{l.to_address}}</a></td>
<td>{{l.email_type}}</td> <td>{{l.email_type}}</td>
<td> <td>
{{#if l.post_url}} {{#if l.post_url}}

View File

@ -18,7 +18,7 @@
<tbody> <tbody>
{{#each sortedEmojis as |e|}} {{#each sortedEmojis as |e|}}
<tr> <tr>
<th><img class="emoji emoji-custom" src={{unbound e.url}} title={{unbound e.name}}></th> <th><img class="emoji emoji-custom" src={{e.url}} title={{e.name}}></th>
<th>:{{e.name}}:</th> <th>:{{e.name}}:</th>
<th> <th>
{{d-button {{d-button

View File

@ -27,22 +27,22 @@
<td class="col first url">{{pl.url}}</td> <td class="col first url">{{pl.url}}</td>
<td class="col topic"> <td class="col topic">
{{#if pl.topic_id}} {{#if pl.topic_id}}
<a href={{unbound pl.topic_url}}>{{pl.topic_title}}</a> <a href={{pl.topic_url}}>{{pl.topic_title}}</a>
{{/if}} {{/if}}
</td> </td>
<td class="col post"> <td class="col post">
{{#if pl.post_id}} {{#if pl.post_id}}
<a href={{unbound pl.post_url}}>#{{pl.post_number}} {{pl.post_topic_title}}</a> <a href={{pl.post_url}}>#{{pl.post_number}} {{pl.post_topic_title}}</a>
{{/if}} {{/if}}
</td> </td>
<td class="col category"> <td class="col category">
{{#if pl.category_id}} {{#if pl.category_id}}
<a href={{unbound pl.category_url}}>{{pl.category_name}}</a> <a href={{pl.category_url}}>{{pl.category_name}}</a>
{{/if}} {{/if}}
</td> </td>
<td class="col external_url"> <td class="col external_url">
{{#if pl.external_url}} {{#if pl.external_url}}
<a href={{unbound pl.external_url}}>{{pl.external_url}}</a> <a href={{pl.external_url}}>{{pl.external_url}}</a>
{{/if}} {{/if}}
</td> </td>
<td class="col action"> <td class="col action">

View File

@ -23,15 +23,15 @@
{{#each model.search_result.posts as |result|}} {{#each model.search_result.posts as |result|}}
<div class='fps-result'> <div class='fps-result'>
<div class='author'> <div class='author'>
<a href={{result.userPath}} data-user-card={{unbound result.username}}> <a href={{result.userPath}} data-user-card={{result.username}}>
{{avatar result imageSize="large"}} {{avatar result imageSize="large"}}
</a> </a>
</div> </div>
<div class='fps-topic'> <div class='fps-topic'>
<div class='topic'> <div class='topic'>
<a class='search-link' href={{unbound result.url}}> <a class='search-link' href={{result.url}}>
{{topic-status topic=result.topic disableActions=true}}<span class='topic-title'>{{#highlight-text highlight=term}}{{{unbound result.topic.fancyTitle}}}{{/highlight-text}}</span> {{topic-status topic=result.topic disableActions=true}}<span class='topic-title'>{{#highlight-text highlight=term}}{{{result.topic.fancyTitle}}}{{/highlight-text}}</span>
</a> </a>
<div class='search-category'> <div class='search-category'>
@ -55,7 +55,7 @@
{{#if result.blurb}} {{#if result.blurb}}
{{#highlight-text highlight=term}} {{#highlight-text highlight=term}}
{{{unbound result.blurb}}} {{{result.blurb}}}
{{/highlight-text}} {{/highlight-text}}
{{/if}} {{/if}}
</div> </div>

View File

@ -55,7 +55,7 @@
</td> </td>
<td class='reason'> <td class='reason'>
{{#if userBadge.postUrl}} {{#if userBadge.postUrl}}
<a href={{unbound userBadge.postUrl}}>{{userBadge.topic_title}}</a> <a href={{userBadge.postUrl}}>{{userBadge.topic_title}}</a>
{{/if}} {{/if}}
</td> </td>
<td>{{age-with-tooltip userBadge.granted_at}}</td> <td>{{age-with-tooltip userBadge.granted_at}}</td>

View File

@ -59,7 +59,7 @@
<div class="controls">{{i18n "admin.users.not_verified"}}</div> <div class="controls">{{i18n "admin.users.not_verified"}}</div>
{{/unless}} {{/unless}}
{{#if model.email}} {{#if model.email}}
<a href="mailto:{{unbound model.email}}">{{model.email}}</a> <a href="mailto:{{model.email}}">{{model.email}}</a>
{{else}} {{else}}
{{d-button {{d-button
class="btn-default" class="btn-default"
@ -79,7 +79,7 @@
{{#if model.secondary_emails}} {{#if model.secondary_emails}}
<ul> <ul>
{{#each model.secondary_emails as |email| }} {{#each model.secondary_emails as |email| }}
<li><a href="mailto:{{unbound email}}">{{email}}</a></li> <li><a href="mailto:{{email}}">{{email}}</a></li>
{{/each}} {{/each}}
</ul> </ul>
{{else}} {{else}}

View File

@ -40,16 +40,16 @@
{{#each model as |user|}} {{#each model as |user|}}
<tr class="user {{user.selected}} {{unless user.active 'not-activated'}}"> <tr class="user {{user.selected}} {{unless user.active 'not-activated'}}">
<td class="username"> <td class="username">
<a href={{unbound user.path}} data-user-card={{unbound user.username}}> <a href={{user.path}} data-user-card={{user.username}}>
{{avatar user imageSize="small"}} {{avatar user imageSize="small"}}
</a> </a>
{{#link-to 'adminUser' user}}{{unbound user.username}}{{/link-to}} {{#link-to 'adminUser' user}}{{user.username}}{{/link-to}}
{{#if user.staged}} {{#if user.staged}}
{{d-icon "far-envelope" title="user.staged" }} {{d-icon "far-envelope" title="user.staged" }}
{{/if}} {{/if}}
</td> </td>
<td class='email'> <td class='email'>
{{~unbound user.email~}} {{~user.email~}}
</td> </td>
<td class="last-emailed"> <td class="last-emailed">
<div class="label">{{i18n 'admin.users.last_emailed'}}</div> <div class="label">{{i18n 'admin.users.last_emailed'}}</div>

View File

@ -42,7 +42,7 @@
{{#user-info user=ub.user size="medium" class="badge-info" date=ub.granted_at}} {{#user-info user=ub.user size="medium" class="badge-info" date=ub.granted_at}}
<div class="granted-on">{{i18n 'badges.granted_on' date=(inline-date ub.granted_at)}}</div> <div class="granted-on">{{i18n 'badges.granted_on' date=(inline-date ub.granted_at)}}</div>
{{#if ub.post_number}} {{#if ub.post_number}}
<a class="post-link" href="{{unbound ub.topic.url}}/{{unbound ub.post_number}}">{{{ub.topic.fancyTitle}}}</a> <a class="post-link" href="{{ub.topic.url}}/{{ub.post_number}}">{{{ub.topic.fancyTitle}}}</a>
{{/if}} {{/if}}
{{/user-info}} {{/user-info}}
{{/each}} {{/each}}

View File

@ -1,5 +1,5 @@
{{d-icon topicStatusIcon}} {{d-icon topicStatusIcon}}
<a class='title' href={{unbound topic.lastUnreadUrl}}> <a class='title' href={{topic.lastUnreadUrl}}>
{{text-overflow class="overflow" text=topic.fancyTitle}} {{text-overflow class="overflow" text=topic.fancyTitle}}
</a> </a>

View File

@ -1,5 +1,5 @@
{{#each categories as |c|}} {{#each categories as |c|}}
<div class='category category-box category-box-{{unbound c.slug}}' style={{border-color c.color}}> <div class='category category-box category-box-{{c.slug}}' style={{border-color c.color}}>
<div class='category-box-inner'> <div class='category-box-inner'>
<div class='category-box-heading'> <div class='category-box-heading'>
<a href={{c.url}}> <a href={{c.url}}>

View File

@ -1,5 +1,5 @@
{{#each categories as |c|}} {{#each categories as |c|}}
<div class='category category-box category-box-{{unbound c.slug}}' style={{border-color c.color}} data-category-id={{c.id}} data-notification-level={{c.notificationLevelString}} <div class='category category-box category-box-{{c.slug}}' style={{border-color c.color}} data-category-id={{c.id}} data-notification-level={{c.notificationLevelString}}
data-url={{c.url}}> data-url={{c.url}}>
<div class='category-box-inner'> <div class='category-box-inner'>
<div class="category-logo"> <div class="category-logo">

View File

@ -1,6 +1,6 @@
{{#if category.unreadTopics}} {{#if category.unreadTopics}}
<a href={{unbound category.unreadUrl}} class='badge new-posts badge-notification' title={{i18n 'topic.unread_topics' count=category.unreadTopics}}>{{i18n 'filters.unread.lower_title_with_count' count=category.unreadTopics}}</a> <a href={{category.unreadUrl}} class='badge new-posts badge-notification' title={{i18n 'topic.unread_topics' count=category.unreadTopics}}>{{i18n 'filters.unread.lower_title_with_count' count=category.unreadTopics}}</a>
{{/if}} {{/if}}
{{#if category.newTopics}} {{#if category.newTopics}}
<a href={{unbound category.newUrl}} class='badge new-posts badge-notification' title={{i18n 'topic.new_topics' count=category.newTopics}}>{{i18n 'filters.new.lower_title_with_count' count=category.newTopics}}</a> <a href={{category.newUrl}} class='badge new-posts badge-notification' title={{i18n 'topic.new_topics' count=category.newTopics}}>{{i18n 'filters.new.lower_title_with_count' count=category.newTopics}}</a>
{{/if}} {{/if}}

View File

@ -11,7 +11,7 @@
{{#each messages as |m|}} {{#each messages as |m|}}
<div class='controls existing-message'> <div class='controls existing-message'>
<label class='radio'> <label class='radio'>
<input type='radio' id="choose-message-{{unbound m.id}}" name='choose_message_id' {{action "chooseMessage" m}}> <input type='radio' id="choose-message-{{m.id}}" name='choose_message_id' {{action "chooseMessage" m}}>
<span class="message-title"> <span class="message-title">
{{m.title}} {{m.title}}
</span> </span>

View File

@ -11,7 +11,7 @@
{{#each topics as |t|}} {{#each topics as |t|}}
<div class='controls existing-topic'> <div class='controls existing-topic'>
<label class='radio'> <label class='radio'>
<input type='radio' id="choose-topic-{{unbound t.id}}" name='choose_topic_id' {{action "chooseTopic" t}}> <input type='radio' id="choose-topic-{{t.id}}" name='choose_topic_id' {{action "chooseTopic" t}}>
{{raw "topic-status" topic=t}} {{raw "topic-status" topic=t}}
<span class="topic-title"> <span class="topic-title">
{{t.title}} {{t.title}}

View File

@ -1,12 +1,12 @@
{{raw "topic-status" topic=topic}} {{raw "topic-status" topic=topic}}
<a class='title' href={{unbound topic.lastUnreadUrl}}>{{{unbound topic.fancyTitle}}}</a> <a class='title' href={{topic.lastUnreadUrl}}>{{{topic.fancyTitle}}}</a>
{{topic-post-badges newPosts=topic.totalUnread unseen=topic.unseen url=topic.lastUnreadUrl}} {{topic-post-badges newPosts=topic.totalUnread unseen=topic.unseen url=topic.lastUnreadUrl}}
{{#if latestTopicOnly}} {{#if latestTopicOnly}}
<div class='last-user-info'> <div class='last-user-info'>
{{i18n 'categories.latest_by'}} <a href={{{unbound topic.lastPosterUrl}}}>{{unbound topic.last_poster.username}}</a> {{i18n 'categories.latest_by'}} <a href={{{topic.lastPosterUrl}}}>{{topic.last_poster.username}}</a>
<a href={{unbound topic.lastPostUrl}}>{{format-age topic.last_posted_at}}</a> <a href={{topic.lastPostUrl}}>{{format-age topic.last_posted_at}}</a>
</div> </div>
{{else}} {{else}}
<a href={{unbound topic.lastPostUrl}} class="last-posted-at">{{format-age topic.last_posted_at}}</a> <a href={{topic.lastPostUrl}} class="last-posted-at">{{format-age topic.last_posted_at}}</a>
{{/if}} {{/if}}

View File

@ -2,7 +2,7 @@
<h3>{{formattedName}}</h3> <h3>{{formattedName}}</h3>
<div class='controls'> <div class='controls'>
<label class='radio'> <label class='radio'>
<input type='radio' id="radio_{{unbound flag.name_key}}" {{action "changePostActionType" flag}} name='post_action_type_index'> <input type='radio' id="radio_{{flag.name_key}}" {{action "changePostActionType" flag}} name='post_action_type_index'>
<div class='flag-action-type-details'> <div class='flag-action-type-details'>
<span class='description'>{{{flag.description}}}</span> <span class='description'>{{{flag.description}}}</span>
@ -20,7 +20,7 @@
{{else}} {{else}}
<div class="controls {{flag.name_key}}"> <div class="controls {{flag.name_key}}">
<label class='radio'> <label class='radio'>
<input type='radio' id="radio_{{unbound flag.name_key}}" {{action "changePostActionType" flag}} name='post_action_type_index'> <input type='radio' id="radio_{{flag.name_key}}" {{action "changePostActionType" flag}} name='post_action_type_index'>
<div class='flag-action-type-details'> <div class='flag-action-type-details'>
<strong>{{formattedName}}</strong> <strong>{{formattedName}}</strong>
{{#if showDescription}} {{#if showDescription}}

View File

@ -1,5 +1,5 @@
<div class='clearfix info'> <div class='clearfix info'>
<a href={{unbound post.user.userUrl}} data-user-card={{unbound post.user.username}} class='avatar-link'> <a href={{post.user.userUrl}} data-user-card={{post.user.username}} class='avatar-link'>
{{avatar post.user imageSize="large" extraClasses="actor" ignoreTitle="true"}} {{avatar post.user imageSize="large" extraClasses="actor" ignoreTitle="true"}}
</a> </a>
<span class='time'>{{format-date post.created_at leaveAgo="true"}}</span> <span class='time'>{{format-date post.created_at leaveAgo="true"}}</span>

View File

@ -25,7 +25,7 @@
<dt>{{i18n "ip_lookup.location"}}</dt> <dt>{{i18n "ip_lookup.location"}}</dt>
<dd> <dd>
{{#if location.location}} {{#if location.location}}
<a href="https://maps.google.com/maps?q={{unbound location.latitude}},{{unbound location.longitude}}" rel="noopener" target="_blank"> <a href="https://maps.google.com/maps?q={{location.latitude}},{{location.longitude}}" rel="noopener" target="_blank">
{{location.location}} {{location.location}}
</a> </a>
{{else}} {{else}}

View File

@ -1,4 +1,4 @@
<a href {{action "share" source}} title={{unbound source.title}} aria-label={{unbound source.title}}> <a href {{action "share" source}} title={{source.title}} aria-label={{source.title}}>
{{#if source.icon}} {{#if source.icon}}
{{d-icon source.icon}} {{d-icon source.icon}}
{{else}} {{else}}

View File

@ -1,6 +1,6 @@
<div class="user-image"> <div class="user-image">
<div class="user-image-inner"> <div class="user-image-inner">
<a href={{unbound userPath}} data-user-card={{unbound user.username}}>{{avatar user imageSize="large"}}</a> <a href={{userPath}} data-user-card={{user.username}}>{{avatar user imageSize="large"}}</a>
{{#if user.primary_group_name}} {{#if user.primary_group_name}}
{{avatar-flair {{avatar-flair
flairURL=user.primary_group_flair_url flairURL=user.primary_group_flair_url
@ -13,10 +13,10 @@
<div class="user-detail"> <div class="user-detail">
<div class='name-line'> <div class='name-line'>
<span class="username"><a href={{unbound userPath}} data-user-card={{unbound user.username}}>{{format-username user.username}}</a></span> <span class="username"><a href={{userPath}} data-user-card={{user.username}}>{{format-username user.username}}</a></span>
<span class="name">{{unbound name}}</span> <span class="name">{{name}}</span>
</div> </div>
<div class="title">{{unbound user.title}}</div> <div class="title">{{user.title}}</div>
{{#if hasBlock}} {{#if hasBlock}}
<div class='details'> <div class='details'>

View File

@ -6,4 +6,4 @@
{{/if}} {{/if}}
</span> </span>
<br> <br>
<a href={{unbound url}}>{{{topic.fancyTitle}}}</a> <a href={{url}}>{{{topic.fancyTitle}}}</a>

View File

@ -213,7 +213,7 @@
{{else}} {{else}}
<div class='saving-text'> <div class='saving-text'>
{{#if model.createdPost}} {{#if model.createdPost}}
{{i18n 'composer.saved'}} <a class='permalink' href={{unbound createdPost.url}} {{action "viewNewReply"}}>{{i18n 'composer.view_new_post'}}</a> {{i18n 'composer.saved'}} <a class='permalink' href={{createdPost.url}} {{action "viewNewReply"}}>{{i18n 'composer.view_new_post'}}</a>
{{else}} {{else}}
{{i18n 'composer.saving'}} {{loading-spinner size="small"}} {{i18n 'composer.saving'}} {{loading-spinner size="small"}}
{{/if}} {{/if}}

View File

@ -75,7 +75,7 @@
{{#each model.posts as |result|}} {{#each model.posts as |result|}}
<div class='fps-result'> <div class='fps-result'>
<div class='author'> <div class='author'>
<a href={{result.userPath}} data-user-card={{unbound result.username}}> <a href={{result.userPath}} data-user-card={{result.username}}>
{{avatar result imageSize="large"}} {{avatar result imageSize="large"}}
</a> </a>
</div> </div>
@ -86,9 +86,9 @@
{{track-selected selectedList=selected selectedId=result.topic}} {{track-selected selectedList=selected selectedId=result.topic}}
{{/if}} {{/if}}
<a class='search-link' href={{unbound result.url}} {{action "logClick" result.topic_id}}> <a class='search-link' href={{result.url}} {{action "logClick" result.topic_id}}>
{{topic-status topic=result.topic disableActions=true showPrivateMessageIcon=true}} {{topic-status topic=result.topic disableActions=true showPrivateMessageIcon=true}}
<span class='topic-title'>{{#highlight-text highlight=q}}{{{unbound result.topic.fancyTitle}}}{{/highlight-text}}</span> <span class='topic-title'>{{#highlight-text highlight=q}}{{{result.topic.fancyTitle}}}{{/highlight-text}}</span>
</a> </a>
<div class='search-category'> <div class='search-category'>
@ -113,7 +113,7 @@
{{#if result.blurb}} {{#if result.blurb}}
{{#highlight-text highlight=highlightQuery}} {{#highlight-text highlight=highlightQuery}}
{{{unbound result.blurb}}} {{{result.blurb}}}
{{/highlight-text}} {{/highlight-text}}
{{/if}} {{/if}}
</div> </div>

View File

@ -26,7 +26,7 @@
<div class="topic-excerpt"> <div class="topic-excerpt">
{{{t.excerpt}}} {{{t.excerpt}}}
{{#if t.excerptTruncated}} {{#if t.excerptTruncated}}
{{#unless t.canClearPin}}<a href={{unbound t.url}}>{{i18n 'read_more'}}</a>{{/unless}} {{#unless t.canClearPin}}<a href={{t.url}}>{{i18n 'read_more'}}</a>{{/unless}}
{{/if}} {{/if}}
{{#if t.canClearPin}} {{#if t.canClearPin}}
<a href {{action "clearPin" t}} title={{i18n 'topic.clear_pin.help'}}>{{i18n 'topic.clear_pin.title'}}</a> <a href {{action "clearPin" t}} title={{i18n 'topic.clear_pin.help'}}>{{i18n 'topic.clear_pin.title'}}</a>

View File

@ -1,8 +1,8 @@
{{#each notificationLevels as |level|}} {{#each notificationLevels as |level|}}
<div class='controls'> <div class='controls'>
<label class='radio'> <label class='radio'>
{{radio-button value=level.id name="notification_level" selection=notificationLevelId}} <strong>{{unbound level.name}}</strong> {{radio-button value=level.id name="notification_level" selection=notificationLevelId}} <strong>{{level.name}}</strong>
<div class='description'>{{{unbound level.description}}}</div> <div class='description'>{{{level.description}}}</div>
</label> </label>
</div> </div>
{{/each}} {{/each}}

View File

@ -1 +1 @@
{{connector templateId=(unbound templateId) class=(unbound outletClasses) tagName=(unbound tagName)}} {{connector templateId=templateId class=outletClasses tagName=tagName}}

View File

@ -4,7 +4,7 @@
<div class="controls tracking-controls"> <div class="controls tracking-controls">
<label>{{d-icon "d-watching"}} {{i18n 'user.watched_categories'}}</label> <label>{{d-icon "d-watching"}} {{i18n 'user.watched_categories'}}</label>
{{#if canSee}} {{#if canSee}}
<a class="show-tracking" href={{unbound model.watchingTopicsPath}}>{{i18n 'user.tracked_topics_link'}}</a> <a class="show-tracking" href={{model.watchingTopicsPath}}>{{i18n 'user.tracked_topics_link'}}</a>
{{/if}} {{/if}}
{{category-selector {{category-selector
categories=model.watchedCategories categories=model.watchedCategories
@ -18,7 +18,7 @@
<div class="controls tracking-controls"> <div class="controls tracking-controls">
<label>{{d-icon "d-tracking"}} {{i18n 'user.tracked_categories'}}</label> <label>{{d-icon "d-tracking"}} {{i18n 'user.tracked_categories'}}</label>
{{#if canSee}} {{#if canSee}}
<a class="show-tracking" href={{unbound model.trackingTopicsPath}}>{{i18n 'user.tracked_topics_link'}}</a> <a class="show-tracking" href={{model.trackingTopicsPath}}>{{i18n 'user.tracked_topics_link'}}</a>
{{/if}} {{/if}}
{{category-selector {{category-selector
categories=model.trackedCategories categories=model.trackedCategories
@ -43,7 +43,7 @@
<div class="controls tracking-controls"> <div class="controls tracking-controls">
<label>{{d-icon "d-muted"}} {{i18n 'user.muted_categories'}}</label> <label>{{d-icon "d-muted"}} {{i18n 'user.muted_categories'}}</label>
{{#if canSee}} {{#if canSee}}
<a class="show-tracking" href={{unbound model.mutedTopicsPath}}>{{i18n 'user.tracked_topics_link'}}</a> <a class="show-tracking" href={{model.mutedTopicsPath}}>{{i18n 'user.tracked_topics_link'}}</a>
{{/if}} {{/if}}
{{category-selector {{category-selector
categories=model.mutedCategories categories=model.mutedCategories

View File

@ -57,7 +57,7 @@
</div> </div>
{{else}} {{else}}
<h1 data-topic-id={{unbound model.id}}> <h1 data-topic-id={{model.id}}>
{{#unless model.is_warning}} {{#unless model.is_warning}}
{{#if siteSettings.enable_personal_messages}} {{#if siteSettings.enable_personal_messages}}
{{private-message-glyph {{private-message-glyph
@ -73,7 +73,7 @@
{{#if model.details.loaded}} {{#if model.details.loaded}}
{{topic-status topic=model}} {{topic-status topic=model}}
<a href={{unbound model.url}} {{action "jumpTop"}} class="fancy-title"> <a href={{model.url}} {{action "jumpTop"}} class="fancy-title">
{{{model.fancyTitle}}} {{{model.fancyTitle}}}
</a> </a>
{{/if}} {{/if}}
@ -170,7 +170,7 @@
{{/topic-navigation}} {{/topic-navigation}}
<div class="row"> <div class="row">
<section class="topic-area" id="topic" data-topic-id={{unbound model.id}}> <section class="topic-area" id="topic" data-topic-id={{model.id}}>
<div class="posts-wrapper"> <div class="posts-wrapper">
{{conditional-loading-spinner condition=model.postStream.loadingAbove}} {{conditional-loading-spinner condition=model.postStream.loadingAbove}}

View File

@ -74,13 +74,13 @@
<td>{{number invite.user.posts_read_count}}</td> <td>{{number invite.user.posts_read_count}}</td>
<td>{{{format-duration invite.user.time_read}}}</td> <td>{{{format-duration invite.user.time_read}}}</td>
<td> <td>
<span title={{i18n 'user.invited.days_visited'}}>{{{unbound invite.user.days_visited}}}</span> <span title={{i18n 'user.invited.days_visited'}}>{{{invite.user.days_visited}}}</span>
/ /
<span title={{i18n 'user.invited.account_age_days'}}>{{{unbound invite.user.days_since_created}}}</span> <span title={{i18n 'user.invited.account_age_days'}}>{{{invite.user.days_since_created}}}</span>
</td> </td>
{{/if}} {{/if}}
{{else}} {{else}}
<td>{{unbound invite.email}}</td> <td>{{invite.email}}</td>
<td>{{format-date invite.updated_at}}</td> <td>{{format-date invite.updated_at}}</td>
<td> <td>
{{#if invite.expired}} {{#if invite.expired}}

View File

@ -79,15 +79,15 @@
{{#each model.links as |link|}} {{#each model.links as |link|}}
<li> <li>
<a class='domain' <a class='domain'
href={{unbound link.url}} href={{link.url}}
title={{unbound link.title}} title={{link.title}}
rel='noopener {{unless user.removeNoFollow 'nofollow ugc'}}' rel='noopener {{unless user.removeNoFollow 'nofollow ugc'}}'
target='_blank'> target='_blank'>
{{shorten-url link.url}} {{shorten-url link.url}}
</a> </a>
<span class='badge badge-notification clicks' title='{{i18n 'topic_map.clicks' count=link.clicks}}'>{{number link.clicks}}</span> <span class='badge badge-notification clicks' title='{{i18n 'topic_map.clicks' count=link.clicks}}'>{{number link.clicks}}</span>
<br> <br>
<a href="{{unbound link.post_url}}">{{{link.topic.fancyTitle}}}</a> <a href="{{link.post_url}}">{{{link.topic.fancyTitle}}}</a>
</li> </li>
{{/each}} {{/each}}
</ul> </ul>

View File

@ -55,7 +55,7 @@
{{#if fromSelected}} {{#if fromSelected}}
<div class="time-pickers"> <div class="time-pickers">
{{d-icon "far-clock"}} {{d-icon "far-clock"}}
{{input maxlength=5 placeholder="hh:mm" input=(action "setTime") type="time" value=(unbound time) class="time-picker"}} {{input maxlength=5 placeholder="hh:mm" input=(action "setTime") type="time" value=time class="time-picker"}}
</div> </div>
{{/if}} {{/if}}
@ -63,7 +63,7 @@
{{#if toDate}} {{#if toDate}}
<div class="time-pickers"> <div class="time-pickers">
{{d-icon "far-clock"}} {{d-icon "far-clock"}}
{{input maxlength=5 placeholder="hh:mm" input=(action "setToTime") type="time" value=(unbound toTime) class="time-picker"}} {{input maxlength=5 placeholder="hh:mm" input=(action "setToTime") type="time" value=toTime class="time-picker"}}
</div> </div>
{{/if}} {{/if}}
{{/if}} {{/if}}