Ghost/ghost/admin/app/models/setting.js
Simon Backx 699e67f4e4
Added email_track_clicks setting (#15409)
fixes https://github.com/TryGhost/Team/issues/1900
refs https://github.com/TryGhost/Team/issues/1901

- Defaults to the same value as the current email_track_opens setting for existing installations, otherwise defaults to true
- Had to use a custom migration because the `addSetting` helper doesn't support using an existing setting as current value
- Added a minimal UI to change the setting, but this still needs some design magic 🪄
- Link replacement is disabled if `email_track_clicks` is disabled. In the future we might consider to still do parial additions, such as source attribution and maybe redirects (to discuss).
2022-09-15 15:48:22 +02:00

92 lines
3.1 KiB
JavaScript

/* eslint-disable camelcase */
import Model, {attr} from '@ember-data/model';
import ValidationEngine from 'ghost-admin/mixins/validation-engine';
import {and} from '@ember/object/computed';
export default Model.extend(ValidationEngine, {
validationType: 'setting',
title: attr('string'),
description: attr('string'),
logo: attr('string'),
coverImage: attr('string'),
icon: attr('string'),
accentColor: attr('string'),
locale: attr('string'),
timezone: attr('string', {defaultValue: 'Etc/UTC'}),
codeinjectionHead: attr('string'),
codeinjectionFoot: attr('string'),
facebook: attr('facebook-url-user'),
twitter: attr('twitter-url-user'),
labs: attr('string'),
navigation: attr('navigation-settings'),
secondaryNavigation: attr('navigation-settings', {isSecondary: true}),
isPrivate: attr('boolean'),
publicHash: attr('string'),
password: attr('string'),
slackUrl: attr('string'),
slackUsername: attr('string'),
amp: attr('boolean'),
ampGtagId: attr('string'),
firstpromoter: attr('boolean'),
firstpromoterId: attr('string'),
unsplash: attr('boolean'),
metaTitle: attr('string'),
metaDescription: attr('string'),
twitterTitle: attr('string'),
twitterDescription: attr('string'),
twitterImage: attr('string'),
ogTitle: attr('string'),
ogDescription: attr('string'),
ogImage: attr('string'),
mailgunApiKey: attr('string'),
mailgunDomain: attr('string'),
mailgunBaseUrl: attr('string'),
emailTrackOpens: attr('boolean'),
emailTrackClicks: attr('boolean'),
portalButton: attr('boolean'),
portalName: attr('boolean'),
portalPlans: attr('json-string'),
portalProducts: attr('json-string'),
portalButtonStyle: attr('string'),
portalButtonIcon: attr('string'),
portalButtonSignupText: attr('string'),
sharedViews: attr('string'),
/**
* Members settings
*/
membersSignupAccess: attr('string'),
defaultContentVisibility: attr('string'),
defaultContentVisibilityTiers: attr('json-string'),
membersSupportAddress: attr('string'),
membersMonthlyPriceId: attr('string'),
membersYearlyPriceId: attr('string'),
stripeSecretKey: attr('string'),
stripePublishableKey: attr('string'),
stripePlans: attr('json-string'),
stripeConnectIntegrationToken: attr('string'),
stripeConnectPublishableKey: attr('string'),
stripeConnectSecretKey: attr('string'),
stripeConnectLivemode: attr('boolean'),
stripeConnectDisplayName: attr('string'),
stripeConnectAccountId: attr('string'),
membersEnabled: attr('boolean'),
paidMembersEnabled: attr('boolean'),
commentsEnabled: attr(), // "off", "free", "paid"
/**
* Editor settings
*/
editorDefaultEmailRecipients: attr('string'),
editorDefaultEmailRecipientsFilter: attr('members-segment-string'),
emailVerificationRequired: attr('boolean'),
mailgunIsConfigured: and('mailgunApiKey', 'mailgunDomain', 'mailgunBaseUrl'),
// HACK - not a real model attribute but a workaround for Ember Data not
// exposing meta from save responses
_meta: attr()
});