Ghost/ghost/admin/app/templates/member.hbs
Simon Backx 17a6217cc7 🐛 Fixed members breadcrumbs when not coming from analytics
fixes https://github.com/TryGhost/Team/issues/2404

This change introduces a new 'post' query parameter to the members and member routes.

Previously, the members route would check if the previous route was the analytics page, and then show the breadcrumbs to go back to the analytics page. But when navigating to the members page from the menu, we don't want to show the breadcrumbs. To accomplish this, the routes that point to the members page from the analytics page now specifically pass on the post id in the query parameters. The query parameter is then passed on from the members page to the member page.

`directlyFromAnalytics` is still used in the member route, to know wheter we came from the members page or from the analytics page (changes the breadcrumbs). This doesn't need to go via a query parameter (figured that would make the url too long/complex).

The resetController method is now implemented and resets the filter and/or fromAnalytics post id if required (when going from members to member, we don't want to reset it because the we would lose the filter going back).
2023-05-04 11:20:33 +02:00

119 lines
4.8 KiB
Handlebars

<section class="gh-canvas">
<GhCanvasHeader class="gh-canvas-header sticky gh-member-header">
<div class="flex flex-column">
{{#if this.fromAnalytics}}
<div class="gh-canvas-breadcrumb">
<LinkTo @route="posts">
Posts
</LinkTo>
{{svg-jar "arrow-right-small"}}
<LinkTo @route="posts.analytics" @models={{this.fromAnalytics}}>
Analytics
</LinkTo>
{{#unless this.directlyFromAnalytics}}
{{svg-jar "arrow-right-small"}}
<LinkTo @route="members" data-test-link="members-back" @query={{hash postAnalytics=this.postAnalytics}}>
Members
</LinkTo>
{{/unless}}
{{svg-jar "arrow-right-small"}} {{if this.member.isNew "New member" "Edit member"}}
</div>
{{else}}
<div class="gh-canvas-breadcrumb">
<LinkTo @route="members" data-test-link="members-back">
Members
</LinkTo>
{{svg-jar "arrow-right-small"}} {{if this.member.isNew "New member" "Edit member"}}
</div>
{{/if}}
<h2 class="gh-canvas-title" data-test-screen-title>
{{#if this.member.isNew}}
New<span class="gh-canvas-title-hide-for-mobile">&nbsp;member</span>
{{else}}
{{or this.member.name this.member.email}}
{{/if}}
</h2>
</div>
<section class="view-actions">
{{#if this.session.user.isAdmin}}
{{#unless this.member.isNew}}
<span class="dropdown">
<GhDropdownButton
@dropdownName="members-actions-menu"
@classNames="gh-btn gh-btn-icon icon-only gh-btn-action-icon"
@title="Members Actions"
data-test-button="member-actions"
>
<span>
{{svg-jar "settings"}}
<span class="hidden">Actions</span>
</span>
</GhDropdownButton>
<GhDropdown
@name="members-actions-menu"
@tagName="ul"
@classNames="gh-member-actions-menu dropdown-menu dropdown-triangle-top-right"
>
<li>
<button
class="mr2"
type="button"
{{on "click" this.toggleImpersonateMemberModal}}
data-test-button="impersonate"
>
<span>Impersonate</span>
</button>
</li>
<li>
<button
type="button"
class="mr2"
{{on "click" this.confirmDeleteMember}}
data-test-button="delete-member"
>
<span class="red">Delete member</span>
</button>
</li>
</GhDropdown>
</span>
{{/unless}}
{{/if}}
<GhTaskButton @class="gh-btn gh-btn-primary gh-btn-icon" @type="button" @task={{this.saveTask}} @data-test-button="save" />
</section>
</GhCanvasHeader>
<div>
<form class="member-basic-info-form">
<GhMemberSettingsForm
@member={{this.member}}
@scratchMember={{this.scratchMember}}
@setProperty={{this.setProperty}}
@onLabelEdit={{this.editLabel}}
@saveMember={{this.save}}
@isSaveRunning={{this.saveTask.isRunning}}
@isLoading={{this.isLoading}} />
</form>
</div>
</section>
{{#if this.showImpersonateMemberModal}}
<GhFullscreenModal
@modal="impersonate-member"
@model={{this.member}}
@close={{this.toggleImpersonateMemberModal}}
@modifier="action wide" />
{{/if}}
{{#if this.showLabelModal}}
<GhFullscreenModal
@modal="members-label-form"
@model={{this.labelModalData}}
@close={{this.toggleLabelModal}}
@modifier="action wide"
/>
{{/if}}