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:
parent
ae4d15d237
commit
c1904d7d84
5 changed files with 100 additions and 0 deletions
37
ghost/admin/app/controllers/settings/members-access.js
Normal file
37
ghost/admin/app/controllers/settings/members-access.js
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -48,6 +48,7 @@ Router.map(function () {
|
||||||
|
|
||||||
this.route('settings');
|
this.route('settings');
|
||||||
this.route('settings.general', {path: '/settings/general'});
|
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-email', {path: '/settings/members-email'});
|
||||||
this.route('settings.members-payments', {path: '/settings/members-payments'});
|
this.route('settings.members-payments', {path: '/settings/members-payments'});
|
||||||
this.route('settings.code-injection', {path: '/settings/code-injection'});
|
this.route('settings.code-injection', {path: '/settings/code-injection'});
|
||||||
|
|
22
ghost/admin/app/routes/settings/members-access.js
Normal file
22
ghost/admin/app/routes/settings/members-access.js
Normal 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'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
|
@ -40,6 +40,15 @@
|
||||||
|
|
||||||
<div class="gh-setting-header">Members</div>
|
<div class="gh-setting-header">Members</div>
|
||||||
<div class="gh-settings-main-grid">
|
<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>
|
<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>
|
<span class="color-3">{{svg-jar "portal-logo-stroke"}}</span>
|
||||||
<div>
|
<div>
|
||||||
|
|
31
ghost/admin/app/templates/settings/members-access.hbs
Normal file
31
ghost/admin/app/templates/settings/members-access.hbs
Normal 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>
|
Loading…
Add table
Reference in a new issue