0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-24 23:48:13 -05:00

Added blank members access settings screen behind dev flag

refs https://github.com/TryGhost/Team/issues/579

- empty screen ready for signup access and default post access level settings to be moved to
- has unsaved settings changes modal ready
This commit is contained in:
Kevin Ansfield 2021-03-29 12:49:09 +01:00
parent ae4d15d237
commit c1904d7d84
5 changed files with 100 additions and 0 deletions

View file

@ -0,0 +1,37 @@
import Controller from '@ember/controller';
import {action} from '@ember/object';
import {inject as service} from '@ember/service';
import {task} from 'ember-concurrency-decorators';
import {tracked} from '@glimmer/tracking';
export default class MembersAccessController extends Controller {
@service settings;
@tracked showLeaveSettingsModal = false;
leaveRoute(transition) {
if (this.settings.get('hasDirtyAttributes')) {
transition.abort();
this.leaveSettingsTransition = transition;
this.showLeaveSettingsModal = true;
}
}
@action
async confirmLeave() {
this.settings.rollbackAttributes();
this.showLeaveSettingsModal = false;
this.leaveSettingsTransition.retry();
}
@action
cancelLeave() {
this.showLeaveSettingsModal = false;
this.leaveSettingsTransition = null;
}
@task({drop: true})
*saveSettingsTask() {
return yield this.settings.save();
}
}

View file

@ -48,6 +48,7 @@ Router.map(function () {
this.route('settings');
this.route('settings.general', {path: '/settings/general'});
this.route('settings.members-access', {path: '/settings/members-access'});
this.route('settings.members-email', {path: '/settings/members-email'});
this.route('settings.members-payments', {path: '/settings/members-payments'});
this.route('settings.code-injection', {path: '/settings/code-injection'});

View file

@ -0,0 +1,22 @@
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
import {inject as service} from '@ember/service';
export default class MembersAccessRoute extends AuthenticatedRoute {
@service settings;
model() {
this.settings.reload();
}
actions = {
willTransition(transition) {
return this.controller.leaveRoute(transition);
}
}
buildRouteInfoMetadata() {
return {
titleToken: 'Settings - Members'
};
}
}

View file

@ -40,6 +40,15 @@
<div class="gh-setting-header">Members</div>
<div class="gh-settings-main-grid">
{{#if (enable-developer-experiments)}}
<LinkTo class="gh-setting-group" @route="settings.members-access" data-test-nav="members-access">
<span class="color-3">{{svg-jar "portal-logo-stroke"}}</span>
<div>
<h4>Access</h4>
<p>Configure members usage and default access levels</p>
</div>
</LinkTo>
{{/if}}
<button type="button" class="gh-setting-group portal" {{action (toggle "showPortalSettings" this)}} data-test-toggle-membersFrom>
<span class="color-3">{{svg-jar "portal-logo-stroke"}}</span>
<div>

View file

@ -0,0 +1,31 @@
<section class="gh-canvas">
<GhCanvasHeader class="gh-canvas-header">
<h2 class="gh-canvas-title" data-test-screen-title>
<LinkTo @route="settings">Settings</LinkTo>
<span>{{svg-jar "arrow-right"}}</span>
Access
</h2>
<section class="view-actions">
<GhTaskButton @buttonText="Save settings"
@task={{this.saveSettingsTask}}
@successText="Saved"
@runningText="Saving"
@class="gh-btn gh-btn-primary gh-btn-icon"
data-test-button="save-settings"
/>
</section>
</GhCanvasHeader>
<section class="view-container settings-debug">
</section>
{{#if this.showLeaveSettingsModal}}
<GhFullscreenModal
@modal="leave-settings"
@confirm={{this.confirmLeave}}
@close={{this.cancelLeave}}
@modifier="action wide"
/>
{{/if}}
</section>