tryghost / ghost Goto Github PK
View Code? Open in Web Editor NEWIndependent technology for modern publishing, memberships, subscriptions and newsletters.
Home Page: https://ghost.org
License: MIT License
Independent technology for modern publishing, memberships, subscriptions and newsletters.
Home Page: https://ghost.org
License: MIT License
Yesterday I deleted the npm-shrinkwrap file which stabilised all of the versions of various packages, because it was out of date and I figured it wasn't really necessary.
However, today I've realised that the handlebars helpers are dying with errors like
:\Ghost\Ghost\core\frontend\helpers\index.js:19
return moment(context).format(f);
^
TypeError: Cannot call method 'format' of null
On the homepage.
And a similar one on the editor page.
I've tried fixing the version of express-hbs back to 0.1.3-pre and that seems to fix the issue for now, but that doesn't seem to be a good solution to me! I'm out of time for debugging this today, but hopefully someone else may have time. Perhaps @jgable may be able to figure it out as he has contributed to the express-hbs package.
My favourite is the node-relations package which has a natural language syntax
https://github.com/carlos8f/node-relations
But thought I'd open this up for discussion / investigation by anyone who is interested.
We have various content about how themes / plugins will/should/may work which we should probably put on the wiki :)
Eventually this should be extended to include a left and right nav bar, and should probably also feature a filter hook for plugins to add to or change the menu.
Small bug with the wordcount on the post editor. Steps to reproduce:
Expected behaviour: word count resets to zero
Actual behaviour: word count does not update at all until a new word is typed
In addition: create exception for 0 words / 1 word / % words
See also: http://radlikewhoa.github.io/Countable/
jQuery potions and hand-crafted XHR requests are piling up. Data is being printed in templates, fetched by javascript and thrown around.
The admin should be migrated to an architecture using Backbone for data management and sync/API calls, mirroring the server model hierarchy as much as possible. blogs and settings pages are a good place to start.
The goal should be to make way for the transition to an interface fully rendered in the client side. Benefits would be faster page loads/navigation, no page reloads, no rebuilding js state for each page, simpler data management/lifecycle; it also becomes portable to hybrid desktop/mobile apps using PhoneGap/Trigger/AppJs/etc with very little work.
Just wanted to open this for discussion.
User story for settings management. This is the main screen - http://cl.ly/O6v7
Tablet workflow: Exactly the same, but smaller columns http://cl.ly/O6sC
Mobile workflow: Split into 2 pages, like other screens detailed http://cl.ly/O7TY
Themes / apps should be able to provide their own language json files in their own lang folder. Ghost should be able to detect and load these.
When viewport is "tablet" resolution or smaller, the write/preview panels are combined and can be alternated between via tabs. See http://cl.ly/Nxwo
When viewport is "mobile" resolution or smaller, the design gets smaller again - see http://cl.ly/NyNw - functionality remains the same. The only other change is that menus (tags, post settings) now become full screen iOS style menus, something like http://jqtjs.com/ (but I saw a newer thing like this the other day that was way smoother)
Compass is a big, hulking bitch of a SASS library. I moved TryGhost.org from Compass to Bourbon just prior to the Kickstarter campaign launching and was very impressed with it. Much more light-weight, up-to-date, better documented, and generally nicer to work with.
Compass is excessive for Ghost's needs, so let's convert the main codebase to Bourbon.
Ghost is intended to use an internal JSON API which we can also expose publicly.
Sexy with CSS - as a fallback... but more sexy with jQuery - http://damirfoy.com/iCheck/#demo
Ghost themes will likely need a menu.
For the time being, this should be static JSON output with two links: home and archives.
See the WordPress version of Casper for an example menu: http://john.onolan.org
We need to convert the existing basic auth solution to be proper secure login, with a nice login screen.
Depends (sort of) on #26 being done first. As well as some updates to the data model etc
For this task:
Please provide designs for how image upload & import interactions should look including progress & failure for each of the ways of inserting an image.
Requires: Issue #280: Image Upload: Reusable tool for uploads
The image upload drop zone which appears in the preview panel should allow the user to upload images.
See the wiki for the user story.
There are already several views/templates for the admin system which need to have all strings marked up for translation.
I've been over this for 2.5 hours, I can't find anything wrong with my implementation that's making Firefox not display my icon font :(
Any chance it could be node's headers preventing (or not explicitly allowing) firefox to access the appropriate file types? (See ref)
Sending emails is fairly important. (see Ghost skypechat on 23rd May, at about 9:27 am UK time). I'd like to pick your brains on it especially with regards to the following questions:
Discuss! :)
Now that we have Backbone in place across most of the admin app, we need to add in notifications. Currently, most operations do an alert.
Dynamic notifications should always exist at the same location in the DOM as the static ones (where the {{>flashes}} partial is included in default.hbs.
The dynamic notifications should also have/work with #142
Main ticket for this - just creating it cause I had a random passing thought (whilst peeing, if you must know) about the whole masonry/dragdrop/resonsive thing.
What if there were two modes:
Viewing - responsive masonry
Editing - all elements become the same size, and can be re-ordered
I don't know if this actually makes sense. Just thought it was worth writing down in case.
This needs to live with other custom middleware
Once an image is successfully uploaded as per issue #40, the markdown in the Code Mirror editor needs to be updated so that the relative URL of the image is inserted into the parentheses which appear after:
!image[]
So it should look something like:
!image[](/content/images/2013/05/my-image.png)
This must not break the code mirror editor.
We need to convert the existing basic auth solution to be proper secure login, with a nice login screen.
The design & markup for the login screen is already done in core/test/html/login.html
For this task:
^^
Currently redirecting to the login page.
The default.hbs layout should declare blocks for styles and scripts.
All other layouts should use these blocks to add their scripts/styles to the page.
The main tag should be moved to the default layout and out of all other views.
Flashes should be included directly after the main tag in the default view
Convert indent to 4 spaces
On the content screen, selecting a post and then going into the settings menu (cog in top right) and pressing delete should delete the post.
A notification should show success or failure of this action.
It is expected that this be done with a page refresh for now.
The codemirror default stylesheet is an unnecessary http call, let's slaughter the bitch and merge the necessary styles into the core css.
On the editor screen, the two panels should scroll in sync.
Currently, scrolling the edit panel causes the preview panel to scroll at the same speed. However scrolling the preview panel does not scroll the edit panel.
Also, the preview panel scrolls the same amount, or to the same position as the edit panel. This appears to work well at first, but the content in the preview panel takes up different amounts of space, and in longer posts with lots of titles and code blocks the two panels quickly become out of sync visually.
A simple(ish) fix for this problem would be to scroll the two panels by the same percentage, rather than by the same distance. This should keep them more in sync, and at the very least they would both reach the end together.
A more complex fix would be to try to keep headings and other blocks aligned. Without investigating further the APIs provided by CodeMirror and showdown I'm not sure if or how this would be possible.
Therefore, for now, this story consists of:
Remove existing fixtures and all references to John's blog content, add in basic "getting started with Ghost" info from vip.tryghost.org
The logout button in the user menu of the admin navbar should send a user to /logout/ which already performs a logout
Putting this out there early, before we come to implementing this - but we need a very solid Javascript (jQuery I guess?) library to handle iOS style mobile interactions.
The one that I've seen used most often is http://jqtjs.com/ (formerly known as jQTouch) - however it's definitely not the smoothest. I mentioned in another ticket that I've seen another one similar to this recently which performed a lot better, but unfortunately I can't remember what it was called (it might have been http://maker.github.com/ratchet/). Other ones discussed include:
Extend the browse posts API call to provide functionality for pagination
Extend the api and provider to provide a full BREAD/CRUD api for Users
Use the existing data model for now, other issues will be created for improving / adding to the model
There is currently no UI for this, therefore I recommend we use this as an opportunity to start a test suite using BDD with Mocha.
Set up official ghost blog number 1 on blog.tryghost.org.
On a branch, reimplement the existing (completely unfinished but will do for now) data model for posts using bookshelfjs.
Duplicate the data provider to provide access and re-wire the existing controllers to use the new data provider.
I realise there will be some fun here will callbacks vs promises. Ultimately promises is what we want, but I would advise just working around this as best as possible for now.
This is intended as a relatively small exploratory task to inform a final decision with regards to switching over.
This one is baffling me so I thought I'd put it out to the team to see if anyone else has an idea what's going on.
When running:
npm install
On a fresh clone of the repo, node-polyglot is not installed. It isn't listed in the get requests and it doesn't seem to error either.
I have seen this happen on my machine, which I can easily fix by running npm install node-polyglot. However this is also affecting the travis-ci build that I've been trying to setup.
Any ideas or suggestions are welcome!
Content icon takes up an extra 3 pixels of margin-right, for some reason, in the settings menu. Why?
Strings marked for translation include the default string, which means there should be no requirement to load a set of translations and do a lookup.
Ensure that this optimisation is made in a smart way.
This is a configuration optimisation. Once a user installs ghost and loads the dashboard, we should be able to capture their preferred language and either set this to be default, or offer the user the choice to switch to this language.
The Ghost editor should have a number of keyboard shortcuts to assist with writing tasks.
A good example of how this works can be seen in the Mou app, under the Actions menu. We need to research, when applying this to a browser based app: What are the keyboard shortcuts available to us that won't cause major conflicts with OS+browser native shortcuts? See also: List of common shortcuts - wikipedia
Proposed shortcuts:
I'm placing this here as a reference to the dashboard UI stuff.
This doesn't cover the actual functionality of all of them, just the UI conversion.
Extend the existing api & provider for settings. Settings should only have browse, read and update functions. It should not possible for the moment to add or delete a setting.
Use the existing data model for now, other issues will be created for improving / adding to the model
Interesting questions:
All of the below should take the user to /ghost/ admin panel:
The image upload drop zone should appear in the preview window when the user types:
!image[]
Note that there should be a newline before. It should also match:
!image[Some text here]
And the inclusion of parenthesis at the end:
!image[]()
If the parenthesis include a URL, that URL should be used as the image in the preview instead of showing an image upload drop zone.
If text is typed into the square brackets, it should appear after the text "add image of..."
The image upload dropzone should appear on it's own line, and should not interfere with items either side of it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.