mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-11-30 01:42:29 +03:00
5bb945e89b
DES-192 We often hear that people are not aware of the new features we ship. Ways in which people can find out are social media/changelog/dashboard – all of these are easy to miss. We'd like to introduce a template for a simple notification in the sidebar that can be used any time a new and noteworthy feature has shipped. The purpose of this is simply to notify and will disappear forever after it's been dismissed.
70 lines
2.4 KiB
JavaScript
70 lines
2.4 KiB
JavaScript
import Component from '@ember/component';
|
|
import ThemeErrorsModal from '../modals/design/theme-errors';
|
|
import WhatsNew from '../modals/whats-new';
|
|
import calculatePosition from 'ember-basic-dropdown/utils/calculate-position';
|
|
import classic from 'ember-classic-decorator';
|
|
import {action} from '@ember/object';
|
|
import {and, match} from '@ember/object/computed';
|
|
import {inject} from 'ghost-admin/decorators/inject';
|
|
import {inject as service} from '@ember/service';
|
|
|
|
@classic
|
|
export default class Footer extends Component {
|
|
@service session;
|
|
@service router;
|
|
@service whatsNew;
|
|
@service feature;
|
|
@service modals;
|
|
@service themeManagement;
|
|
|
|
@inject config;
|
|
|
|
@and('config.clientExtensions.dropdown', 'session.user.isOwnerOnly')
|
|
showDropdownExtension;
|
|
|
|
@match('router.currentRouteName', /^settings/)
|
|
isSettingsRoute;
|
|
|
|
@action
|
|
openThemeErrors() {
|
|
this.advancedModal = this.modals.open(ThemeErrorsModal, {
|
|
title: 'Theme errors',
|
|
canActivate: false,
|
|
// Warnings will only be set for developers, otherwise it will always be empty
|
|
warnings: this.themeManagement.activeTheme.warnings,
|
|
errors: this.themeManagement.activeTheme.gscanErrors
|
|
});
|
|
}
|
|
|
|
get hasThemeErrors() {
|
|
const errors = this.themeManagement.activeTheme && this.themeManagement.activeTheme.gscanErrors;
|
|
if (!errors) {
|
|
return false;
|
|
}
|
|
// filter errors that have other UI to display to users that the functionality is not working
|
|
const filteredErrors = errors?.filter((error) => {
|
|
if (error.code === 'GS110-NO-MISSING-PAGE-BUILDER-USAGE' && error?.failures?.[0].message.includes(`show_title_and_feature_image`)) {
|
|
return false;
|
|
}
|
|
return true;
|
|
});
|
|
return filteredErrors && filteredErrors.length;
|
|
}
|
|
|
|
// equivalent to "left: auto; right: -20px"
|
|
userDropdownPosition(trigger, dropdown) {
|
|
let {horizontalPosition, verticalPosition, style} = calculatePosition(...arguments);
|
|
let {width: dropdownWidth} = dropdown.firstElementChild.getBoundingClientRect();
|
|
|
|
style.right += (dropdownWidth - 20);
|
|
style['z-index'] = '1100';
|
|
|
|
return {horizontalPosition, verticalPosition, style};
|
|
}
|
|
|
|
@action
|
|
openWhatsNew() {
|
|
return this.modals.open(WhatsNew);
|
|
}
|
|
}
|