2017-02-17 08:50:07 +03:00
<section class="gh-canvas">
2019-06-18 13:47:21 +03:00
<GhCanvasHeader class="gh-canvas-header">
2022-10-04 08:35:29 +03:00
<div class="flex flex-column">
<div class="gh-canvas-breadcrumb">
<LinkTo @route="settings">
Settings
</LinkTo>
{{ svg-jar "arrow-right-small" }} Labs
</div>
<h2 class="gh-canvas-title" data-test-screen-title>
Labs
</h2>
</div>
2019-06-18 13:47:21 +03:00
</GhCanvasHeader>
2014-12-14 20:56:04 +03:00
2017-02-17 08:50:07 +03:00
<section class="view-container settings-debug">
2020-09-16 16:37:33 +03:00
<p class="gh-box gh-box-tip"> {{ svg-jar "idea" }} This is a testing ground for new or experimental features. They may change, break or inexplicably disappear at any time.</p>
2017-02-17 17:10:02 +03:00
2021-02-10 15:00:07 +03:00
<div class="gh-main-section">
<h4 class="gh-main-section-header small bn">Migration options</h4>
2022-08-19 17:44:09 +03:00
<div class="gh-expandable {{ if this .importErrors "overflow-hidden" }} ">
2021-02-10 15:00:07 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Import content</h4>
2022-11-15 16:26:19 +03:00
<p class="gh-expandable-description">Import posts from a JSON or zip file</p>
2021-02-10 15:00:07 +03:00
</div>
2022-11-16 13:22:49 +03:00
<LinkTo @route="settings.labs.import" class="gh-btn" data-test-link="import-content">
2022-11-15 16:26:19 +03:00
<span>Open Importer</span>
</LinkTo>
2017-05-24 16:36:59 +03:00
</div>
2019-06-18 13:47:21 +03:00
</div>
2021-02-10 15:00:07 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Export your content</h4>
<p class="gh-expandable-description">Download all of your posts and settings in a single, glorious JSON file</p>
</div>
<button type="button" class="gh-btn" {{ action "downloadFile" "db" }} ><span>Export</span></button>
</div>
2019-06-18 13:47:21 +03:00
</div>
2021-02-10 15:00:07 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Delete all content</h4>
<p class="gh-expandable-description">Permanently delete all posts and tags from the database, a hard reset</p>
</div>
2022-09-08 11:18:46 +03:00
<button type="button" class="gh-btn gh-btn-red" {{ on "click" this .confirmDeleteAll }} data-test-button="delete-all"><span>Delete</span></button>
2021-02-10 15:00:07 +03:00
</div>
2019-06-18 13:47:21 +03:00
</div>
2017-02-17 17:10:02 +03:00
</div>
</div>
2021-09-07 14:36:17 +03:00
<div class="gh-main-section">
2021-09-08 11:40:52 +03:00
<h4 class="gh-main-section-header small bn">Beta features</h4>
2021-09-07 14:36:17 +03:00
<div class="gh-expandable">
2021-02-10 15:00:07 +03:00
<div class="gh-expandable-block">
<GhUploader
2021-02-22 03:27:00 +03:00
@extensions= {{ this .redirectsFileExtensions }}
@uploadUrl="/redirects/upload/"
2021-02-10 15:00:07 +03:00
@paramName="redirects"
@onUploadSuccess= {{ perform this .redirectUploadResult true }}
@onUploadFailure= {{ perform this .redirectUploadResult false }}
as |uploader|
>
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Redirects</h4>
2022-05-24 14:25:12 +03:00
<p class="gh-expandable-description">Configure redirects for old or moved content, more info in <a href="https://ghost.org/tutorials/implementing-redirects/" target="_blank" rel="noopener noreferrer">the docs</a></p>
2021-02-10 15:00:07 +03:00
</div>
<div class="gh-setting-action flex flex-column items-end">
{{ # if uploader .isUploading }}
{{ uploader .progressBar }}
{{ else }}
<button
type="button"
class="gh-btn gh-btn-icon {{ if this .redirectSuccess "gh-btn-green" }} {{ if this .redirectFailure "gh-btn-red" }} "
onclick= {{ action "triggerFileDialog" }}
data-test-button="upload-redirects"
>
<span>
{{ # if this .redirectSuccess }}
{{ svg-jar "check-circle" }} Uploaded
{{ else if this .redirectFailure }}
{{ svg-jar "retry" }} Upload Failed
{{ else }}
2021-02-22 03:27:00 +03:00
Upload redirects YAML/JSON
2021-02-10 15:00:07 +03:00
{{ / if }}
</span>
</button>
2021-02-22 03:27:00 +03:00
<div><a href="#" {{ action "downloadFile" "redirects/download" }} data-test-link="download-redirects">Download current redirects</a></div>
2021-02-10 15:00:07 +03:00
{{ / if }}
{{ # each uploader .errors as | error | }}
<div class="gh-setting-error" data-test-error="redirects"> {{ or error .context error .message }} </div>
{{ / each }}
2017-09-21 18:01:40 +03:00
2021-02-10 15:00:07 +03:00
<div style="display:none">
2021-02-22 03:27:00 +03:00
<GhFileInput @multiple= {{ false }} @action= {{ uploader .setFiles }} @accept= {{ this .redirectsFileMimeTypes }} data-test-file-input="redirects" />
2021-02-10 15:00:07 +03:00
</div>
</div>
2019-06-18 13:47:21 +03:00
</div>
2021-02-10 15:00:07 +03:00
</GhUploader>
2017-09-21 18:01:40 +03:00
</div>
2017-02-17 17:10:02 +03:00
2021-02-10 15:00:07 +03:00
<div class="gh-expandable-block">
<GhUploader
@extensions= {{ this .yamlExtension }}
@uploadUrl="/settings/routes/yaml/"
@paramName="routes"
@onUploadSuccess= {{ perform this .routesUploadResult true }}
@onUploadFailure= {{ perform this .routesUploadResult false }}
as |uploader|
>
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Routes</h4>
<p class="gh-expandable-description">Configure dynamic routing by modifying the routes.yaml file</p>
</div>
<div class="gh-setting-action flex flex-column items-end">
{{ # if uploader .isUploading }}
{{ uploader .progressBar }}
{{ else }}
<button
type="button"
class="gh-btn gh-btn-icon {{ if this .routesSuccess "gh-btn-green" }} {{ if this .routesFailure "gh-btn-red" }} "
onclick= {{ action "triggerFileDialog" }}
data-test-button="upload-routes"
>
<span>
{{ # if this .routesSuccess }}
{{ svg-jar "check-circle" }} Uploaded
{{ else if this .routesFailure }}
{{ svg-jar "retry" }} Upload Failed
{{ else }}
Upload routes YAML
{{ / if }}
</span>
</button>
<div><a href="#" {{ action "downloadFile" "settings/routes/yaml" }} data-test-link="download-routes">Download current routes.yaml</a></div>
{{ / if }}
{{ # each uploader .errors as | error | }}
<div class="gh-setting-error" data-test-error="routes"> {{ or error .context error .message }} </div>
{{ / each }}
<div style="display:none">
<GhFileInput @multiple= {{ false }} @action= {{ uploader .setFiles }} @accept= {{ this .yamlAccept }} data-test-file-input="routes" />
</div>
</div>
2019-06-18 13:47:21 +03:00
</div>
2021-02-10 15:00:07 +03:00
</GhUploader>
2018-07-24 14:20:53 +03:00
</div>
2021-06-07 21:51:23 +03:00
</div>
</div>
2021-04-22 20:41:41 +03:00
2021-04-26 23:15:22 +03:00
2021-06-07 21:51:23 +03:00
{{ # if ( enable-developer-experiments ) }}
<div class="gh-main-section">
<h4 class="gh-main-section-header small bn">Alpha Features</h4>
<div class="gh-expandable">
2021-09-22 14:20:15 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
2021-11-12 11:29:18 +03:00
<div>
2023-01-05 13:34:58 +03:00
<h4 class="gh-expandable-title">URL cache</h4>
2021-11-12 11:29:18 +03:00
<p class="gh-expandable-description">
Enable URL Caching
</p>
</div>
<div class="for-switch">
<GhFeatureFlag @flag="urlCache" />
</div>
</div>
</div>
2022-09-16 13:58:56 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Lexical editor</h4>
<p class="gh-expandable-description">
Makes lexical editor the default when creating new posts/pages.
</p>
</div>
<div class="for-switch">
<GhFeatureFlag @flag="lexicalEditor" />
</div>
</div>
</div>
2023-01-17 00:03:36 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Webmentions</h4>
<p class="gh-expandable-description">
2023-02-03 23:52:20 +03:00
Allows receiving webmentions from external sites and viewing them on the dashboard.
2023-01-17 00:03:36 +03:00
</p>
</div>
<div class="for-switch">
<GhFeatureFlag @flag="webmentions" />
</div>
</div>
2023-01-23 10:42:48 +03:00
</div>
2023-02-23 13:42:14 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Webmention notification emails</h4>
<p class="gh-expandable-description">
Send a notification email to staff when a webmention is received.
</p>
</div>
<div class="for-switch">
<GhFeatureFlag @flag="webmentionEmails" />
</div>
</div>
</div>
2023-01-25 15:20:50 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Show email errors</h4>
<p class="gh-expandable-description">
This makes email errors visible in the UI.
</p>
</div>
<div class="for-switch">
<GhFeatureFlag @flag="emailErrors" />
</div>
</div>
</div>
2023-01-26 17:54:46 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Milestone emails</h4>
<p class="gh-expandable-description">
Send emails for reaching specific milestones.
</p>
</div>
<div class="for-switch">
<GhFeatureFlag @flag="milestoneEmails" />
</div>
</div>
</div>
2023-02-17 13:25:51 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Websockets</h4>
<p class="gh-expandable-description">
Test out Websockets functionality at <code>/ghost/#/websockets</code>.
</p>
</div>
<div class="for-switch">
<GhFeatureFlag @flag="websockets" />
</div>
</div>
</div>
2023-02-28 10:07:32 +03:00
<div class="gh-expandable-block">
<div class="gh-expandable-header">
<div>
<h4 class="gh-expandable-title">Stripe Automatic Tax</h4>
<p class="gh-expandable-description">
Use Stripe Automatic Tax at Stripe Checkout. Needs to be enabled in Stripe
</p>
</div>
<div class="for-switch">
<GhFeatureFlag @flag="stripeAutomaticTax" />
</div>
</div>
</div>
2018-07-24 14:20:53 +03:00
</div>
</div>
2021-06-07 21:51:23 +03:00
{{ / if }}
2015-06-13 17:34:09 +03:00
</section>
2022-09-12 14:32:43 +03:00
</section>