2020-09-23 10:23:10 +03:00
# Portal
2020-03-24 16:07:38 +03:00
2020-09-23 10:23:10 +03:00
[![CI Status ](https://github.com/TryGhost/portal/workflows/Test/badge.svg?branch=master )](https://github.com/TryGhost/portal/actions)
2020-09-24 09:48:26 +03:00
[![npm version ](https://badge.fury.io/js/%40tryghost%2Fportal.svg )](https://badge.fury.io/js/%40tryghost%2Fportal)
2020-04-20 20:33:24 +03:00
2020-09-04 14:49:37 +03:00
Drop-in script to make the bulk of Ghost membership features work on any theme.
2020-04-20 19:42:20 +03:00
2020-04-21 08:47:23 +03:00
## Usage
2020-04-20 20:56:55 +03:00
2020-10-14 11:54:24 +03:00
Portal can be enabled on any theme directly by adding the below script in your theme's `default.hbs` just before the end of body tag OR in the code injection footer in Ghost Admin.
2020-04-20 20:56:55 +03:00
```html
2020-09-24 09:48:26 +03:00
< script defer src = "https://unpkg.com/@tryghost/portal@latest/umd/portal.min.js" data-ghost = "https://mymemberssite.com" > < / script >
2020-04-20 20:56:55 +03:00
```
2020-09-04 14:49:37 +03:00
The `data-ghost` attribute expects the URL for your site which is the only input Portal needs to work with your site's membership data via Ghost APIs.
2020-10-14 11:54:24 +03:00
Alternatively, Ghost automatically injects this Portal script to any site behind a dedicated flag(see below) which can be added via config, which also enables Site owner/admins to customize specific Portal settings from Ghost-Admin.
NOTE: Since this is currently under active development, Portal can be switched on with a new dedicated flag - `portal` - in [Ghost config ](https://ghost.org/docs/concepts/config/ ), which needs to be added to config file before starting the server.
2020-09-23 21:04:54 +03:00
```json
{
...,
"portal": true
}
```
2020-09-04 14:49:37 +03:00
2020-06-06 17:40:26 +03:00
### Custom trigger button
By default, the script adds a default floating trigger button on the bottom right of your page which is used to trigger the popup on screen.
2020-09-23 21:04:54 +03:00
Its possible to add custom trigger button of your own by adding data attribute `data-portal` to any HTML tag on page, and also specify a specfic [page ](https://github.com/TryGhost/Portal/blob/master/src/pages.js#L13-L22 ) to open from it by using it as `data-portal=signup` .
2020-06-06 17:40:26 +03:00
2020-11-25 09:48:06 +03:00
The script also adds custom class names to this element for open and close state of popup - `gh-portal-open` and `gh-portal-close` , allowing devs to update its UI based on popup state.
2020-06-06 17:40:26 +03:00
2020-04-20 19:42:20 +03:00
## Basic Setup
1. Clone this repository:
```shell
2020-09-23 10:23:10 +03:00
git@github.com:TryGhost/portal.git
2020-04-20 19:42:20 +03:00
```
2. Change into the new directory and install the dependencies:
```shell
2020-09-23 10:23:10 +03:00
cd portal
2020-04-20 19:42:20 +03:00
yarn
```
2020-03-24 16:07:04 +03:00
2020-04-10 19:37:40 +03:00
## Configure for local development
2020-09-23 21:04:54 +03:00
Only useful for active UI development without publishing a version on unpkg. Always use the unpkg link for testing latest released portal script.
2020-04-10 19:37:40 +03:00
2020-09-23 10:23:10 +03:00
#### In this repo(Portal):
2020-04-20 19:42:20 +03:00
2020-09-23 21:04:54 +03:00
- Run `yarn build` to create the minified bundle with your changes at `umd/portal.min.js`
2020-04-20 19:42:20 +03:00
#### In your theme(Ex. Lyra):
2020-09-23 21:04:54 +03:00
- Copy `portal.min.js` from above and paste it in your theme at `assets/built/portal.min.js`
2020-05-01 14:40:17 +03:00
- Add below code in your theme's `default.hbs` just before end of body tag
2020-04-20 19:42:20 +03:00
```html
2020-09-23 21:04:54 +03:00
< script src = '{{asset "built/portal.min.js"}}' > < / script >
2020-04-20 19:42:20 +03:00
```
2020-03-24 16:07:04 +03:00
## Available Scripts
2020-04-20 19:42:20 +03:00
In the project directory, you can also run:
2020-03-24 16:07:04 +03:00
### `yarn start`
Runs the app in the development mode.< br / >
Open [http://localhost:3000 ](http://localhost:3000 ) to view it in the browser.
The page will reload if you make edits.< br / >
You will also see any lint errors in the console.
### `yarn build`
2020-09-23 21:04:54 +03:00
Creates the production single minified bundle for external use in `umd/portal.min.js` . < br />
2020-03-24 16:07:04 +03:00
2020-04-20 19:42:20 +03:00
### `yarn test`
2020-03-24 16:07:04 +03:00
2020-04-20 19:42:20 +03:00
Launches the test runner in the interactive watch mode.< br / >
See the section about [running tests ](https://facebook.github.io/create-react-app/docs/running-tests ) for more information.
2020-03-24 16:07:04 +03:00
2020-04-20 19:42:20 +03:00
## Publish
2020-03-24 16:07:04 +03:00
2020-06-06 17:48:23 +03:00
Run `yarn ship` to publish new version of script.
`yarn ship` is an alias for `npm publish`
- Builds the script with latest code using `yarn build` (prePublish)
2020-09-24 09:48:26 +03:00
- Publishes package on npm as `@tryghost/portal` and creates an unpkg link for script at https://unpkg.com/@tryghost/portal@VERSION
2020-03-24 16:07:04 +03:00
## Learn More
2020-04-20 19:42:20 +03:00
This project was bootstrapped with [Create React App ](https://github.com/facebook/create-react-app ).
2020-03-24 16:07:04 +03:00
You can learn more in the [Create React App documentation ](https://facebook.github.io/create-react-app/docs/getting-started ).
2020-03-30 16:32:19 +03:00
# Copyright & License
2020-03-24 16:07:38 +03:00
Copyright (c) 2020 Ghost Foundation - Released under the [MIT license ](LICENSE ).