0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-06 22:40:14 -05:00
Independent technology for modern publishing, memberships, subscriptions and newsletters.
Find a file
Kevin Ansfield 74b83766bc Subscribers: Admin User Interface v1
Initial Subscribers screen
- set up mocked api endpoints
- basic subscribers screen with data loading, infinite scroll

"Add Subscriber" screen
- uses modal to display a new subscriber form
- validates subscriber e-mail address
- moves pagination from route into controller to use filtered/sorted CPs on top of a live-query so that new subscribers are added to the list and the total can be properly managed

TODO:
- there is currently a pretty serious performance issue where the whole table is re-rendered when the live-query is updated. `ember-light-table` doesn't allow for live-binding and has no options to easily manipulate it's rows using an external interface - it's possible to move the page loading into the component so we only render new rows but that leaves it difficult to react to new subscribers being added through the UI. I believe the number of components used within the table is also adding to the performance problems.
  - most likely solution is to drop `ember-light-table` in favour of rendering the table directly - glimmer should do a good job of fast updates even though the underlying array will be completely swapped out

"Import subscribers" screen
- uses modal to display an import subscribers CSV file upload form
- displays upload progress
- displays import stats and reloads subscribers table once import has completed
- adds `gh-file-uploader` component (NB. pared down copy of `gh-image-uploader`, ripe for some refactoring)
- fixes subscribers acceptance test failing because fixtures did not have the labs flag enabled

Unfortunately this doesn't have 100% test coverage as we're limited in how we can simulate file uploads 😞

Fix performance issues with subscribers table
- moves the table definition from the component up to the controller
- switches back to manually manipulating table rows instead of using a live-query

This is a quick-fix in that it allows us to continue using the `ember-light-table` component but it does mean that we lose some flexibility that the live-query gave us. For now it's not much of an issue and it allows us to defer deeper performance/flexibility work until we have a concrete need and requirements.

Hook up Export CSV button
- use a hidden iFrame to trigger the browser to hit the CSV export endpoint and download the file

Re-order subscribers table by clicking column headers
- displays currently sorted column and sort direction
- clicking a column header re-fetches the data from the server with the appropriate query params

Fix scroll triggers for infinite pagination + icon change
- adds a debounce as well as the throttle so that we always get a final scroll trigger once scrolling has stopped
- changes the subscribers icon from the temporary team icon to the mail icon
2016-05-11 10:28:11 +02:00
.github Adding GitHub issue & PR templates 2016-02-18 09:50:09 +00:00
content Upgrading Casper to 1.2.8 2016-02-03 09:35:50 +00:00
core Subscribers: Admin User Interface v1 2016-05-11 10:28:11 +02:00
.bowerrc grunt init, dev 2015-03-11 12:37:41 -06:00
.editorconfig Add editorconfig 2015-05-07 11:45:16 -05:00
.gitignore Improve config.js handling in .gitignore 2016-01-13 11:26:21 +00:00
.gitmodules
.jscsrc deps: remove jscs-jsdoc 2016-05-08 13:17:19 +02:00
.jshintrc Remove jshint rules that are no longer supported 2015-01-23 21:00:37 +00:00
.npmignore Mail consolidation 2015-08-20 11:36:14 +02:00
.travis.yml Switch to using Ubuntu Trusty on Travis 2016-04-14 12:14:59 +01:00
config.example.js Fix slow running tests when using Sqlite3. 2016-01-16 17:24:15 -08:00
Gruntfile.js deps: grunt@1.0.1 + related updates 2016-04-28 09:18:27 -05:00
index.js Misc grunt /dev updates 2015-05-28 20:25:14 +01:00
LICENSE Update LICENSE 2016-01-03 15:03:34 +02:00
package.json deps: remove jscs-jsdoc 2016-05-08 13:17:19 +02:00
PRIVACY.md Add disclosure for new jQuery CDN usage in Casper 2015-08-24 20:53:58 +02:00
README.md Update location of download page 2016-04-13 19:49:07 +01:00
SECURITY.md Update SECURITY.md 2016-01-13 18:22:09 +02:00

Ghost Build status

Ghost Screenshot

Ghost is a simple, powerful publishing platform that allows you to share your stories with the world.

The project is maintained by a non-profit organisation called the Ghost Foundation, along with an amazing group of independent contributors. We're trying to make publishing software that changes the shape of online journalism.

NOTE: If youre stuck, cant get something working or need some help, please head on over and join our Slack community rather than opening an issue.

Quick Start Install

Make sure you've installed Node.js - We recommend the latest Node v0.10.x release. For other versions click here. May contain nuts.

  1. Download the latest release of Ghost
  2. Unzip in the location you want to install
  3. Fire up a terminal
  4. npm install --production
  5. Start Ghost!
    • Local environment: npm start
    • On a server: npm start --production
  6. http://localhost:2368/ghost 🎉

More install docs here in case you got stuck.

Developer Install (from git)

Install Node.js. (See Supported Node.js versions)

# Node v0.10.x - recommended
# Node v0.12.x and v4.2+ LTS - supported
#
# Choose wisely

Clone 👻

git clone git://github.com/tryghost/ghost.git
cd ghost

Install grunt. No prizes here.

npm install -g grunt-cli

Install Ghost. If you're running locally, use master. For production, use stable. 🚫🚀🔬

npm install

Build the things!

grunt init

Minify that shit for production?

grunt prod

Start your engines.

npm start

## running production? Add --production

Congrats! You made it. BTW you can also just npm install ghost if you're into that sort of thing. NPM aficionados can also read up on using Ghost as an NPM module.

More general install docs here in case you got stuck.

Deploying Ghost

Ghost(Pro) + DigitalOcean

Save yourself time and headaches with our fully managed Ghost(Pro) service. Deploy a new instance of Ghost in a couple of clicks running on DigitalOceans rock solid infrastructure, with a worldwide CDN thrown in at no extra charge.

All revenue from Ghost(Pro) goes to the Ghost Foundation, the non-profit org which funds the maintenance and further development of Ghost.

Other options are also available if you prefer playing around with servers by yourself.

Staying Up to Date

When a new version of Ghost comes out, you'll want to look over these upgrade instructions for what to do next.

You can talk to other Ghost users and developers in our public Slack team (it's pretty awesome). We have a public meeting every Tuesday at 5:30pm UK time.

New releases are announced on the dev blog. You can subscribe by email or follow @TryGhost_Dev on Twitter, if you prefer your updates bite-sized and facetious.

🎷🐢

Copyright & License

Copyright (c) 2013-2016 Ghost Foundation - Released under the MIT license.