ghost 4.48.7 → 4.48.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2187,16 +2187,18 @@ this.args.onChange?.(t)}*fetchOptionsTask(){const e=yield[]
2187
2187
  if(this.feature.get("multipleProducts")){const t=yield this.store.query("product",{filter:"type:paid",limit:"all",include:"monthly_price,yearly_price,benefits"})
2188
2188
  if(this.products=t,t.length>0){const n={groupName:"Tiers",options:[]}
2189
2189
  t.forEach((e=>{n.options.push({name:e.name,id:e.id,count:e.count?.members,class:"segment-product"})})),e.push(n),this.args.selectDefaultProduct&&!this.args.tiers&&this.setSegment([n.options[0]])}}this._options=e}},u=h(l.prototype,"store",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),d=h(l.prototype,"feature",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),c=h(l.prototype,"_options",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return[]}}),p=h(l.prototype,"products",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:function(){return[]}}),h(l.prototype,"setSegment",[o],Object.getOwnPropertyDescriptor(l.prototype,"setSegment"),l.prototype),h(l.prototype,"fetchOptionsTask",[n.task],Object.getOwnPropertyDescriptor(l.prototype,"fetchOptionsTask"),l.prototype),l)
2190
- e.default=g,Ember._setComponentTemplate(b,g)})),define("ghost-admin/components/vertical-collection",["exports","@html-next/vertical-collection/components/vertical-collection/component"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/x-file-input",["exports","emberx-file-input/components/x-file-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/controllers/application",["exports"],(function(e){var t,n,i,r,a,s,o,l,u,d,c,p,m,h,b,g,f,v,y,w,E,k,P,O,j,_,z
2191
- function S(e,t,n,i){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(i):void 0})}function T(e,t,n,i,r){var a={}
2190
+ e.default=g,Ember._setComponentTemplate(b,g)})),define("ghost-admin/components/vertical-collection",["exports","@html-next/vertical-collection/components/vertical-collection/component"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/x-file-input",["exports","emberx-file-input/components/x-file-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/controllers/application",["exports"],(function(e){var t,n,i,r,a,s,o,l,u,d,c,p,m,h,b,g,f,v,y,w,E,k,P,O,j,_,z,S,T
2191
+ function x(e,t,n,i){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(i):void 0})}function M(e,t,n,i,r){var a={}
2192
2192
  return Object.keys(i).forEach((function(e){a[e]=i[e]})),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=n.slice().reverse().reduce((function(n,i){return i(e,t,n)||n}),a),r&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(r):void 0,a.initializer=void 0),void 0===a.initializer&&(Object.defineProperty(e,t,a),a=null),a}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
2193
- let x=(t=Ember.inject.service,n=Ember.inject.service,i=Ember.inject.service,r=Ember.inject.service,a=Ember.inject.service,s=Ember.inject.service,o=Ember.inject.service,l=Ember.inject.service,u=Ember.inject.service,d=Ember.inject.service,c=Ember.computed.reads("config.hostSettings.update.enabled"),p=Ember.computed.reads("config.hostSettings.billing.enabled"),m=Ember.computed("router.currentRouteName","session.{isAuthenticated,user}","ui.isFullScreen"),h=Ember._action,b=class extends Ember.Controller{constructor(){super(...arguments),S(this,"ajax",g,this),S(this,"billing",f,this),S(this,"config",v,this),S(this,"dropdown",y,this),S(this,"feature",w,this),S(this,"ghostPaths",E,this),S(this,"router",k,this),S(this,"session",P,this),S(this,"settings",O,this),S(this,"ui",j,this),S(this,"showUpdateLink",_,this),S(this,"showBilling",z,this)}get showNavMenu(){let{router:e,session:t,ui:n}=this
2194
- return!n.isFullScreen&&(!(!t.isAuthenticated||!t.user)&&(("error404"!==e.currentRouteName||t.isAuthenticated)&&!e.currentRouteName.match(/(signin|signup|setup|reset)/)))}openUpdateTab(){const e=window.open("","_blank")
2193
+ let C=(t=Ember.inject.service,n=Ember.inject.service,i=Ember.inject.service,r=Ember.inject.service,a=Ember.inject.service,s=Ember.inject.service,o=Ember.inject.service,l=Ember.inject.service,u=Ember.inject.service,d=Ember.inject.service,c=Ember.inject.service,p=Ember.computed.reads("config.hostSettings.update.enabled"),m=Ember.computed.reads("config.hostSettings.billing.enabled"),h=Ember.computed("router.currentRouteName","session.{isAuthenticated,user}","ui.isFullScreen"),b=Ember._action,g=class extends Ember.Controller{constructor(){super(...arguments),x(this,"ajax",f,this),x(this,"billing",v,this),x(this,"config",y,this),x(this,"dropdown",w,this),x(this,"feature",E,this),x(this,"ghostPaths",k,this),x(this,"router",P,this),x(this,"session",O,this),x(this,"settings",j,this),x(this,"store",_,this),x(this,"ui",z,this),x(this,"showUpdateLink",S,this),x(this,"showBilling",T,this)}get showNavMenu(){let{router:e,session:t,ui:n}=this
2194
+ return!n.isFullScreen&&(!(!t.isAuthenticated||!t.user)&&(("error404"!==e.currentRouteName||t.isAuthenticated)&&!e.currentRouteName.match(/(signin|signup|setup|reset)/)))}get ownerUserNameOrEmail(){let e=this.store.peekAll("user").findBy("isOwnerOnly",!0)
2195
+ if(e){if(e.name)return e.name
2196
+ if(e.email)return e.email}return null}openUpdateTab(){const e=window.open("","_blank")
2195
2197
  e.document.write("Loading...")
2196
2198
  const t=new URL(this.config.get("hostSettings.update.url")),n=this.ghostPaths.url.api("identities")
2197
2199
  this.ajax.request(n).then((n=>{const i=n?.identities?.[0]?.token
2198
- t.searchParams.append("jwt",i),e.location.href=t.toString()}))}},g=T(b.prototype,"ajax",[t],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),f=T(b.prototype,"billing",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),v=T(b.prototype,"config",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),y=T(b.prototype,"dropdown",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),w=T(b.prototype,"feature",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),E=T(b.prototype,"ghostPaths",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),k=T(b.prototype,"router",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),P=T(b.prototype,"session",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),O=T(b.prototype,"settings",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),j=T(b.prototype,"ui",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),_=T(b.prototype,"showUpdateLink",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),z=T(b.prototype,"showBilling",[p],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),T(b.prototype,"showNavMenu",[m],Object.getOwnPropertyDescriptor(b.prototype,"showNavMenu"),b.prototype),T(b.prototype,"openUpdateTab",[h],Object.getOwnPropertyDescriptor(b.prototype,"openUpdateTab"),b.prototype),b)
2199
- e.default=x})),define("ghost-admin/controllers/billing",["exports"],(function(e){var t,n,i
2200
+ t.searchParams.append("jwt",i),e.location.href=t.toString()}))}},f=M(g.prototype,"ajax",[t],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),v=M(g.prototype,"billing",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),y=M(g.prototype,"config",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),w=M(g.prototype,"dropdown",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),E=M(g.prototype,"feature",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),k=M(g.prototype,"ghostPaths",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),P=M(g.prototype,"router",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),O=M(g.prototype,"session",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),j=M(g.prototype,"settings",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),_=M(g.prototype,"store",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),z=M(g.prototype,"ui",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),S=M(g.prototype,"showUpdateLink",[p],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),T=M(g.prototype,"showBilling",[m],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),M(g.prototype,"showNavMenu",[h],Object.getOwnPropertyDescriptor(g.prototype,"showNavMenu"),g.prototype),M(g.prototype,"openUpdateTab",[b],Object.getOwnPropertyDescriptor(g.prototype,"openUpdateTab"),g.prototype),g)
2201
+ e.default=C})),define("ghost-admin/controllers/billing",["exports"],(function(e){var t,n,i
2200
2202
  function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
2201
2203
  let a=(t=Ember.computed.alias("model"),n=class extends Ember.Controller{constructor(){var e,t,n,a
2202
2204
  super(...arguments),r(this,"queryParams",["action"]),r(this,"action",null),e=this,t="guid",a=this,(n=i)&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(a):void 0})}},s=n.prototype,o="guid",l=[t],u={configurable:!0,enumerable:!0,writable:!0,initializer:null},c={},Object.keys(u).forEach((function(e){c[e]=u[e]})),c.enumerable=!!c.enumerable,c.configurable=!!c.configurable,("value"in c||c.initializer)&&(c.writable=!0),c=l.slice().reverse().reduce((function(e,t){return t(s,o,e)||e}),c),d&&void 0!==c.initializer&&(c.value=c.initializer?c.initializer.call(d):void 0,c.initializer=void 0),void 0===c.initializer&&(Object.defineProperty(s,o,c),c=null),i=c,n)
@@ -3785,7 +3787,7 @@ try{return JSON.parse(e)||{}}catch(t){return{}}}get accessibility(){let e=this.g
3785
3787
  try{return JSON.parse(e)||{}}catch(t){return{}}}fetch(){return this.settings.fetch().then((()=>(this.set("_user",this.session.user),this._setAdminTheme().then((()=>!0)))))}update(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=n.user?"accessibility":"labs",r=this.get(n.user?"_user":"settings"),a=this.get(i)
3786
3788
  return Ember.set(a,e,t),n.requires&&!0===t&&n.requires.forEach((e=>{Ember.set(a,e,!0)})),r.set(i,JSON.stringify(a)),r.save().then((()=>(this.notifyPropertyChange(i),this.get(`${i}.${e}`)))).catch((t=>{if(r.rollbackAttributes(),this.notifyPropertyChange(i),!t)throw new Ember.Error(`Validation of the feature service ${n.user?"user":"settings"} model failed when updating ${i}.`)
3787
3789
  return this.notifications.showAPIError(t),this.get(`${i}.${e}`)}))}_setAdminTheme(e){let n=e
3788
- return void 0===n&&(n=e||this.nightShift),this.lazyLoader.loadStyle("dark","assets/ghost-dark-c94ae212747200ca4bafc37cfb0714d8.css",!0).then((()=>{(0,t.default)("link[title=dark]").prop("disabled",!n)})).catch((()=>{(0,t.default)("link[title=dark]").prop("disabled",!0)}))}},S=X(z.prototype,"store",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),T=X(z.prototype,"config",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),x=X(z.prototype,"session",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),M=X(z.prototype,"settings",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),C=X(z.prototype,"notifications",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),D=X(z.prototype,"lazyLoader",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),A=X(z.prototype,"emailAnalytics",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),I=X(z.prototype,"nightShift",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),L=X(z.prototype,"multipleProducts",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),R=X(z.prototype,"dashboardV5",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),N=X(z.prototype,"oauthLogin",[p],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),U=X(z.prototype,"membersActivity",[m],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),F=X(z.prototype,"urlCache",[h],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),B=X(z.prototype,"beforeAfterCard",[b],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),V=X(z.prototype,"multipleNewsletters",[g],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),H=X(z.prototype,"multipleNewslettersUI",[f],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),q=X(z.prototype,"tweetGridCard",[v],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),$=X(z.prototype,"improvedOnboarding",[y],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),Y=X(z.prototype,"tierWelcomePages",[w],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),W=X(z.prototype,"tierName",[E],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),K=X(z.prototype,"membersTableStatus",[k],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),G=X(z.prototype,"selectablePortalLinks",[P],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),Z=X(z.prototype,"publishingFlow",[O],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),X(z.prototype,"labs",[j],Object.getOwnPropertyDescriptor(z.prototype,"labs"),z.prototype),X(z.prototype,"accessibility",[_],Object.getOwnPropertyDescriptor(z.prototype,"accessibility"),z.prototype),z)
3790
+ return void 0===n&&(n=e||this.nightShift),this.lazyLoader.loadStyle("dark","assets/ghost-dark-6b4e49c6201d3b1e1cd5bc3fe18966be.css",!0).then((()=>{(0,t.default)("link[title=dark]").prop("disabled",!n)})).catch((()=>{(0,t.default)("link[title=dark]").prop("disabled",!0)}))}},S=X(z.prototype,"store",[n],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),T=X(z.prototype,"config",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),x=X(z.prototype,"session",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),M=X(z.prototype,"settings",[a],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),C=X(z.prototype,"notifications",[s],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),D=X(z.prototype,"lazyLoader",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),A=X(z.prototype,"emailAnalytics",[l],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),I=X(z.prototype,"nightShift",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),L=X(z.prototype,"multipleProducts",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),R=X(z.prototype,"dashboardV5",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),N=X(z.prototype,"oauthLogin",[p],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),U=X(z.prototype,"membersActivity",[m],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),F=X(z.prototype,"urlCache",[h],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),B=X(z.prototype,"beforeAfterCard",[b],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),V=X(z.prototype,"multipleNewsletters",[g],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),H=X(z.prototype,"multipleNewslettersUI",[f],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),q=X(z.prototype,"tweetGridCard",[v],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),$=X(z.prototype,"improvedOnboarding",[y],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),Y=X(z.prototype,"tierWelcomePages",[w],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),W=X(z.prototype,"tierName",[E],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),K=X(z.prototype,"membersTableStatus",[k],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),G=X(z.prototype,"selectablePortalLinks",[P],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),Z=X(z.prototype,"publishingFlow",[O],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),X(z.prototype,"labs",[j],Object.getOwnPropertyDescriptor(z.prototype,"labs"),z.prototype),X(z.prototype,"accessibility",[_],Object.getOwnPropertyDescriptor(z.prototype,"accessibility"),z.prototype),z)
3789
3791
  e.default=ee})),define("ghost-admin/services/frontend",["exports","fetch","validator"],(function(e,t,n){var i,r,a,s,o,l,u
3790
3792
  function d(e,t,n,i){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(i):void 0})}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t,n,i,r){var a={}
3791
3793
  return Object.keys(i).forEach((function(e){a[e]=i[e]})),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=n.slice().reverse().reduce((function(n,i){return i(e,t,n)||n}),a),r&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(r):void 0,a.initializer=void 0),void 0===a.initializer&&(Object.defineProperty(e,t,a),a=null),a}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -4052,7 +4054,7 @@ var t=Ember.HTMLBars.template({id:"4hzreQ8R",block:'{"symbols":[],"statements":[
4052
4054
  e.default=t})),define("ghost-admin/templates/application-error",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
4053
4055
  var t=Ember.HTMLBars.template({id:"BCoM6owz",block:'{"symbols":[],"statements":[[10,"div"],[14,0,"gh-view"],[12],[2,"\\n "],[10,"section"],[14,0,"error-content error-404 js-error-container"],[12],[2,"\\n "],[10,"section"],[14,0,"error-details"],[12],[2,"\\n "],[10,"img"],[14,0,"error-ghost"],[14,"src","assets/img/404-ghost@2x-34c1119ed15cc3ea71e4406f80c8e810.png"],[14,"srcset","assets/img/404-ghost-e112dbfadde79cf30dbca8e8cfe7a21a.png 1x, assets/img/404-ghost@2x-34c1119ed15cc3ea71e4406f80c8e810.png 2x"],[12],[13],[2,"\\n "],[10,"section"],[14,0,"error-message"],[12],[2,"\\n "],[10,"h1"],[14,0,"error-code"],[12],[1,[32,0,["model","code"]]],[13],[2,"\\n "],[10,"h2"],[14,0,"error-description"],[12],[2,"\\n "],[1,[30,[36,0],[[32,0,["model","payload","errors","firstObject","message"]],[32,0,["model","message"]]],null]],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n "],[13],[2,"\\n"],[13],[2,"\\n\\n"],[8,"ember-load-remover",[],[[],[]],null],[2,"\\n"]],"hasEval":false,"upvars":["or"]}',moduleName:"ghost-admin/templates/application-error.hbs"})
4054
4056
  e.default=t})),define("ghost-admin/templates/application",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
4055
- var t=Ember.HTMLBars.template({id:"YtZI66Ec",block:'{"symbols":[],"statements":[[8,"gh-app",[],[[],[]],[["default"],[{"statements":[[2,"\\n "],[8,"gh-skip-link",[],[["@anchor"],[".gh-main"]],[["default"],[{"statements":[[2,"Skip to main content"]],"parameters":[]}]]],[2,"\\n\\n"],[6,[37,3],[[30,[36,2],[[32,0,["session","user","isOwnerOnly"]],[32,0,["showUpdateLink"]]],null]],null,[["default"],[{"statements":[[2," "],[10,"aside"],[14,0,"gh-update-banner"],[12],[2,"\\n "],[10,"div"],[14,0,"gh-alert-content"],[12],[2,"\\n Your site is ready for a major update!\\n "],[13],[2,"\\n "],[11,"a"],[24,6,"#"],[4,[38,1],["click",[32,0,["openUpdateTab"]]],null],[12],[2,"Update to Ghost 5.0 →"],[13],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n "],[8,"gh-alerts",[],[[],[]],null],[2,"\\n\\n "],[10,"div"],[15,0,[31,["gh-viewport ",[30,[36,3],[[32,0,["ui","showMobileMenu"]],"mobile-menu-expanded"],null]]]],[12],[2,"\\n"],[6,[37,3],[[32,0,["showNavMenu"]]],null,[["default"],[{"statements":[[2," "],[8,"gh-nav-menu",[],[[],[]],null],[2,"\\n"]],"parameters":[]}]]],[2,"\\n "],[10,"main"],[15,0,[31,["gh-main ",[32,0,["ui","mainClass"]]]]],[12],[2,"\\n "],[1,[30,[36,5],[[30,[36,4],null,null]],null]],[2,"\\n\\n"],[6,[37,3],[[32,0,["showBilling"]]],null,[["default"],[{"statements":[[2," "],[8,"gh-billing-modal",[],[["@billingWindowOpen"],[[32,0,["billing","billingWindowOpen"]]]],null],[2,"\\n"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n\\n "],[8,"gh-notifications",[],[[],[]],null],[2,"\\n\\n "],[8,"gh-content-cover",[],[[],[]],null],[2,"\\n\\n"],[6,[37,6],[[32,0,["session","user","isContributor"]]],null,[["default"],[{"statements":[[2," "],[8,"gh-mobile-nav-bar",[],[[],[]],null],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n"],[6,[37,3],[[32,0,["settings","accentColor"]]],null,[["default"],[{"statements":[[2," "],[10,"style"],[12],[2,"\\n :root {\\n --accent-color: "],[1,[32,0,["settings","accentColor"]]],[2,";\\n --adjusted-accent-color: "],[1,[32,0,["ui","adjustedAccentColor"]]],[2,";\\n }\\n .koenig-editor__editor a:not([class]) {\\n color: var(--adjusted-accent-color);\\n }\\n .koenig-editor__editor blockquote {\\n border-left: 0.25rem solid var(--adjusted-accent-color);\\n }\\n\\n .gh-btn-accent {\\n background-color: var(--adjusted-accent-color);\\n color: #fff;\\n }\\n\\n .gh-btn-accent:hover {\\n background-color: "],[1,[30,[36,0],[[32,0,["ui","adjustedAccentColor"]]],[["l"],[-15]]]],[2,";\\n color: #fff;\\n }\\n\\n "],[13],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]}]]],[2,"\\n\\n"],[10,"div"],[14,1,"unsplash-selector-wormhole"],[12],[13],[2,"\\n\\n"],[8,"epm-modal-container",[],[[],[]],null],[2,"\\n"],[8,"ember-load-remover",[],[[],[]],null]],"hasEval":false,"upvars":["hex-adjust","on","and","if","-outlet","component","unless"]}',moduleName:"ghost-admin/templates/application.hbs"})
4057
+ var t=Ember.HTMLBars.template({id:"ntoVBwUt",block:'{"symbols":[],"statements":[[8,"gh-app",[],[[],[]],[["default"],[{"statements":[[2,"\\n "],[8,"gh-skip-link",[],[["@anchor"],[".gh-main"]],[["default"],[{"statements":[[2,"Skip to main content"]],"parameters":[]}]]],[2,"\\n\\n"],[6,[37,1],[[30,[36,3],[[32,0,["session","user","isAdmin"]],[32,0,["showUpdateLink"]]],null]],null,[["default"],[{"statements":[[2," "],[10,"aside"],[14,0,"gh-update-banner"],[12],[2,"\\n"],[6,[37,1],[[32,0,["session","user","isOwnerOnly"]]],null,[["default","else"],[{"statements":[[2," "],[10,"div"],[14,0,"gh-alert-content"],[12],[2,"\\n You\'re missing out on new features, update by January 31st.\\n "],[13],[2,"\\n "],[11,"a"],[24,6,"#"],[4,[38,2],["click",[32,0,["openUpdateTab"]]],null],[12],[2,"Update to Ghost 5.0 →"],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[10,"div"],[14,0,"gh-alert-content"],[12],[2,"\\n Your Ghost install is ready for a major update!\\n"],[6,[37,1],[[32,0,["ownerUserNameOrEmail"]]],null,[["default","else"],[{"statements":[[2," "],[1,[32,0,["ownerUserNameOrEmail"]]],[2,"\\n"]],"parameters":[]},{"statements":[[2," Your Site Owner\\n"]],"parameters":[]}]]],[2," will need to log in to do this.\\n "],[13],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n"]],"parameters":[]}]]],[2,"\\n "],[8,"gh-alerts",[],[[],[]],null],[2,"\\n\\n "],[10,"div"],[15,0,[31,["gh-viewport ",[30,[36,1],[[32,0,["ui","showMobileMenu"]],"mobile-menu-expanded"],null]]]],[12],[2,"\\n"],[6,[37,1],[[32,0,["showNavMenu"]]],null,[["default"],[{"statements":[[2," "],[8,"gh-nav-menu",[],[[],[]],null],[2,"\\n"]],"parameters":[]}]]],[2,"\\n "],[10,"main"],[15,0,[31,["gh-main ",[32,0,["ui","mainClass"]]]]],[12],[2,"\\n "],[1,[30,[36,5],[[30,[36,4],null,null]],null]],[2,"\\n\\n"],[6,[37,1],[[32,0,["showBilling"]]],null,[["default"],[{"statements":[[2," "],[8,"gh-billing-modal",[],[["@billingWindowOpen"],[[32,0,["billing","billingWindowOpen"]]]],null],[2,"\\n"]],"parameters":[]}]]],[2,"\\n "],[13],[2,"\\n\\n "],[8,"gh-notifications",[],[[],[]],null],[2,"\\n\\n "],[8,"gh-content-cover",[],[[],[]],null],[2,"\\n\\n"],[6,[37,6],[[32,0,["session","user","isContributor"]]],null,[["default"],[{"statements":[[2," "],[8,"gh-mobile-nav-bar",[],[[],[]],null],[2,"\\n"]],"parameters":[]}]]],[2," "],[13],[2,"\\n\\n"],[6,[37,1],[[32,0,["settings","accentColor"]]],null,[["default"],[{"statements":[[2," "],[10,"style"],[12],[2,"\\n :root {\\n --accent-color: "],[1,[32,0,["settings","accentColor"]]],[2,";\\n --adjusted-accent-color: "],[1,[32,0,["ui","adjustedAccentColor"]]],[2,";\\n }\\n .koenig-editor__editor a:not([class]) {\\n color: var(--adjusted-accent-color);\\n }\\n .koenig-editor__editor blockquote {\\n border-left: 0.25rem solid var(--adjusted-accent-color);\\n }\\n\\n .gh-btn-accent {\\n background-color: var(--adjusted-accent-color);\\n color: #fff;\\n }\\n\\n .gh-btn-accent:hover {\\n background-color: "],[1,[30,[36,0],[[32,0,["ui","adjustedAccentColor"]]],[["l"],[-15]]]],[2,";\\n color: #fff;\\n }\\n\\n "],[13],[2,"\\n"]],"parameters":[]}]]]],"parameters":[]}]]],[2,"\\n\\n"],[10,"div"],[14,1,"unsplash-selector-wormhole"],[12],[13],[2,"\\n\\n"],[8,"epm-modal-container",[],[[],[]],null],[2,"\\n"],[8,"ember-load-remover",[],[[],[]],null],[2,"\\n"]],"hasEval":false,"upvars":["hex-adjust","if","on","and","-outlet","component","unless"]}',moduleName:"ghost-admin/templates/application.hbs"})
4056
4058
  e.default=t}))
4057
4059
  define("ghost-admin/templates/components/basic-dropdown-content",["exports","ember-basic-dropdown/templates/components/basic-dropdown-content"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/templates/components/basic-dropdown-trigger",["exports","ember-basic-dropdown/templates/components/basic-dropdown-trigger"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/templates/components/basic-dropdown",["exports","ember-basic-dropdown/templates/components/basic-dropdown"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/templates/components/draggable-object-target",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
4058
4060
  var t=Ember.HTMLBars.template({id:"ds+gecsL",block:'{"symbols":["&default"],"statements":[[6,[37,2],[[35,1]],null,[["default","else"],[{"statements":[[2," "],[11,"a"],[24,6,"#"],[4,[38,0],[[32,0],"acceptForDrop"],null],[12],[2,"\\n "],[18,1,null],[2,"\\n "],[13],[2,"\\n"]],"parameters":[]},{"statements":[[2," "],[18,1,null],[2,"\\n"]],"parameters":[]}]]]],"hasEval":false,"upvars":["action","enableClicking","if"]}',moduleName:"ghost-admin/templates/components/draggable-object-target.hbs"})
@@ -4356,4 +4358,4 @@ var t=Ember.Component.extend({})
4356
4358
  e.default=t})),define("ghost-admin/config/environment",[],(function(){try{var e="ghost-admin/config/environment",t=document.querySelector('meta[name="'+e+'"]').getAttribute("content"),n={default:JSON.parse(decodeURIComponent(t))}
4357
4359
  return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(i){throw new Error('Could not read config from meta tag with name "'+e+'".')}})),runningTests||require("ghost-admin/app").default.create({version:"4.48",name:"ghost-admin"})
4358
4360
 
4359
- //# sourceMappingURL=ghost.min-10ba0de3ecb93d63d62bb43ac11c740f.map
4361
+ //# sourceMappingURL=ghost.min-a2314ed1e97e0b4d8efa521eb44c283c.map
@@ -65,6 +65,7 @@ ghostBookshelf.plugin(require('./plugins/overrides'));
65
65
  ghostBookshelf.plugin('bookshelf-relations', {
66
66
  allowedOptions: ['context', 'importing', 'migrating'],
67
67
  unsetRelations: true,
68
+ editRelations: false,
68
69
  extendChanged: '_changed',
69
70
  attachPreviousRelations: true,
70
71
  hooks: {
@@ -6,6 +6,14 @@ const Integration = ghostBookshelf.Model.extend({
6
6
  tableName: 'integrations',
7
7
 
8
8
  relationships: ['api_keys', 'webhooks'],
9
+ relationshipConfig: {
10
+ api_keys: {
11
+ editable: true
12
+ },
13
+ webhooks: {
14
+ editable: true
15
+ }
16
+ },
9
17
 
10
18
  relationshipBelongsTo: {
11
19
  api_keys: 'api_keys',
@@ -76,6 +76,12 @@ const Member = ghostBookshelf.Model.extend({
76
76
  // do not delete email_recipients records when a member is destroyed. Recipient
77
77
  // records are used for analytics and historical records
78
78
  relationshipConfig: {
79
+ products: {
80
+ editable: true
81
+ },
82
+ labels: {
83
+ editable: true
84
+ },
79
85
  email_recipients: {
80
86
  destroyRelated: false
81
87
  }
@@ -83,6 +83,20 @@ Post = ghostBookshelf.Model.extend({
83
83
  },
84
84
 
85
85
  relationships: ['tags', 'authors', 'mobiledoc_revisions', 'posts_meta', 'tiers'],
86
+ relationshipConfig: {
87
+ tags: {
88
+ editable: true
89
+ },
90
+ authors: {
91
+ editable: true
92
+ },
93
+ mobiledoc_revisions: {
94
+ editable: true
95
+ },
96
+ posts_meta: {
97
+ editable: true
98
+ }
99
+ },
86
100
 
87
101
  // NOTE: look up object, not super nice, but was easy to implement
88
102
  relationshipBelongsTo: {
@@ -10,6 +10,11 @@ const Product = ghostBookshelf.Model.extend({
10
10
  },
11
11
 
12
12
  relationships: ['benefits'],
13
+ relationshipConfig: {
14
+ benefits: {
15
+ editable: true
16
+ }
17
+ },
13
18
 
14
19
  relationshipBelongsTo: {
15
20
  benefits: 'benefits'
@@ -106,6 +106,11 @@ const updateMemberNewsletters = async function (req, res) {
106
106
  }
107
107
 
108
108
  const data = _.pick(req.body, 'newsletters');
109
+ if (data.newsletters) {
110
+ data.newsletters = data.newsletters.map(newsletter => ({
111
+ id: newsletter.id
112
+ }));
113
+ }
109
114
  const memberData = await membersService.api.members.get({
110
115
  uuid: memberUuid
111
116
  });
@@ -131,6 +136,11 @@ const updateMemberNewsletters = async function (req, res) {
131
136
  const updateMemberData = async function (req, res) {
132
137
  try {
133
138
  const data = _.pick(req.body, 'name', 'subscribed', 'newsletters');
139
+ if (data.newsletters) {
140
+ data.newsletters = data.newsletters.map(newsletter => ({
141
+ id: newsletter.id
142
+ }));
143
+ }
134
144
  const member = await membersService.ssr.getMemberDataFromSession(req, res);
135
145
  if (member) {
136
146
  const options = {
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
  <link rel="stylesheet" href="assets/vendor.min-ba66b98f7c24fa40e061c7ffc94f4e23.css">
41
- <link rel="stylesheet" href="assets/ghost.min-4084931bc22e794fe3722139050a80b3.css" title="light">
41
+ <link rel="stylesheet" href="assets/ghost.min-721d8b8300de3a7b254b9abd40b5ef9b.css" title="light">
42
42
 
43
43
 
44
44
 
@@ -57,7 +57,7 @@
57
57
 
58
58
 
59
59
  <script src="assets/vendor.min-97fd438f4772c5ec6bb30ad779b8530e.js"></script>
60
- <script src="assets/ghost.min-10ba0de3ecb93d63d62bb43ac11c740f.js"></script>
60
+ <script src="assets/ghost.min-a2314ed1e97e0b4d8efa521eb44c283c.js"></script>
61
61
 
62
62
  </body>
63
63
  </html>
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
  <link rel="stylesheet" href="assets/vendor.min-ba66b98f7c24fa40e061c7ffc94f4e23.css">
41
- <link rel="stylesheet" href="assets/ghost.min-4084931bc22e794fe3722139050a80b3.css" title="light">
41
+ <link rel="stylesheet" href="assets/ghost.min-721d8b8300de3a7b254b9abd40b5ef9b.css" title="light">
42
42
 
43
43
 
44
44
 
@@ -57,7 +57,7 @@
57
57
 
58
58
 
59
59
  <script src="assets/vendor.min-97fd438f4772c5ec6bb30ad779b8530e.js"></script>
60
- <script src="assets/ghost.min-10ba0de3ecb93d63d62bb43ac11c740f.js"></script>
60
+ <script src="assets/ghost.min-a2314ed1e97e0b4d8efa521eb44c283c.js"></script>
61
61
 
62
62
  </body>
63
63
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "4.48.7",
3
+ "version": "4.48.9",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -122,7 +122,7 @@
122
122
  "bluebird": "3.7.2",
123
123
  "body-parser": "1.20.0",
124
124
  "bookshelf": "1.2.0",
125
- "bookshelf-relations": "2.4.0",
125
+ "bookshelf-relations": "2.5.0",
126
126
  "brute-knex": "4.0.1",
127
127
  "bson-objectid": "2.0.3",
128
128
  "bthreads": "0.5.1",
package/yarn.lock CHANGED
@@ -3705,10 +3705,10 @@ body@^5.1.0:
3705
3705
  raw-body "~1.1.0"
3706
3706
  safe-json-parse "~1.0.1"
3707
3707
 
3708
- bookshelf-relations@2.4.0:
3709
- version "2.4.0"
3710
- resolved "https://registry.yarnpkg.com/bookshelf-relations/-/bookshelf-relations-2.4.0.tgz#75d594beaccceab06f13923652508c12dd2a9900"
3711
- integrity sha512-Diwx/MPvqaeFjdKC2IZoe2vG+Sepcy3EpMd75AB+ToNsjpke6JgKsfFz6wUxrJ+S6VPdNsh7Fpg0Lm4+imK5zg==
3708
+ bookshelf-relations@2.5.0:
3709
+ version "2.5.0"
3710
+ resolved "https://registry.yarnpkg.com/bookshelf-relations/-/bookshelf-relations-2.5.0.tgz#889446aa4afa54abb2d829e3a27f93aa447d7414"
3711
+ integrity sha512-yiJ1uTWF3HVBuGhgHyZfjBo+JRDAvOOnAEabuAfWrYksCfvLFTk+B3hp4ZCPATZC5Jq6mzDUD0jz6etdI999pA==
3712
3712
  dependencies:
3713
3713
  "@tryghost/debug" "^0.1.13"
3714
3714
  "@tryghost/errors" "^1.2.3"