Merge branch 'master' into stable-db-version

This commit is contained in:
Hannah Wolfe 2013-09-12 22:08:23 +01:00
commit 8cea12e728
7 changed files with 13 additions and 43 deletions

2
.gitignore vendored
View File

@ -37,7 +37,7 @@ projectFilesBackup
/core/server/data/export/exported* /core/server/data/export/exported*
/docs /docs
/_site /_site
/content/images/* /content/images/**/*
# Changelog, which is autogenerated, not committed # Changelog, which is autogenerated, not committed
CHANGELOG.md CHANGELOG.md

View File

@ -6,7 +6,6 @@ var path = require('path'),
spawn = require("child_process").spawn, spawn = require("child_process").spawn,
buildDirectory = path.resolve(process.cwd(), '.build'), buildDirectory = path.resolve(process.cwd(), '.build'),
distDirectory = path.resolve(process.cwd(), '.dist'), distDirectory = path.resolve(process.cwd(), '.dist'),
config = require('./config'),
_ = require('underscore'), _ = require('underscore'),
configureGrunt = function (grunt) { configureGrunt = function (grunt) {
@ -110,9 +109,7 @@ var path = require('path'),
// allow unused parameters // allow unused parameters
unparam: true, unparam: true,
// don't require use strict pragma // don't require use strict pragma
sloppy: true, sloppy: true
// allow bitwise operators
bitwise: true
}, },
files: { files: {
src: [ src: [
@ -487,6 +484,7 @@ var path = require('path'),
// Using this janky looking integerising-method // Using this janky looking integerising-method
// because it's faster and doesn't result in NaN, which // because it's faster and doesn't result in NaN, which
// breaks sorting // breaks sorting
/*jslint bitwise: true */
return (+b[1] | 0) - (+a[1] | 0); return (+b[1] | 0) - (+a[1] | 0);
} }
@ -501,7 +499,7 @@ var path = require('path'),
.map(function (tag) { .map(function (tag) {
return { return {
"tag": tag.split(/tags\//).pop().trim(), "tag": tag.split(/tags\//).pop().trim(),
"ref": tag.split(/\s+/).shift().trim(), "ref": tag.split(/\s+/).shift().trim()
}; };
}) })
.sort(sortTags); .sort(sortTags);

View File

@ -1,13 +0,0 @@
#Content
This section of the repo is the area that a normal user is allowed to add and change stuff. This is where their themes, plugins and images will live.
By default for an install:
* the themes directory will contain Casper
* the plugins directory will be empty
* the images directory will be empty
Currently the plugins and images directory contain some stuff for testing.
By default, Ghost will support very basic image uploads. It will be expected and encouraged for users to connect to a 3rd party service for improved media support and a CDN. Much like comments, we don't see supporting advanced file uploads, having a media library or being a CDN as core competencies - there are already plenty of people out there doing this much better than we can.

3
content/images/README.md Normal file
View File

@ -0,0 +1,3 @@
# Content / Images
If using the standard file storage, Ghost will upload images to this directory

View File

@ -1,11 +0,0 @@
# Core
Core contains the bread and butter of ghost. It is currently divided up into:
* **client** - the assets, helpers, models, view and templates for rendering the admin panel backbone app
* **server** - the controllers & helpers for driving the server side app along with the model, api, and data
* **shared** - just contains lang for now, although it's not shared yet, more stuff should go here soon like handlebars helpers
* **test** - contains unit tests and a set of html prototypes of the admin UI. Really, this folder should reflect all of core
* **ghost.js** - currently both the glue that binds everything together and what gives us the API for registering themes and plugins. The initTheme function is a bit of a hack which lets us serve different views & static content up for the admin & blog
This structure is by no means final and recommendations are more than welcome.

View File

@ -190,6 +190,12 @@ form {
background: #f8f8f8; background: #f8f8f8;
text-decoration: none; text-decoration: none;
} }
&.large {
padding: 1em 1.8em;
font-size: 14px;
line-height: 16px;
}
} }
// This is the default button style // This is the default button style

View File

@ -33,24 +33,11 @@
return "{gfm-js-extract-pre-" + hash + "}"; return "{gfm-js-extract-pre-" + hash + "}";
}, 'm'); }, 'm');
// Replace showdown's implementation of bold
// <strong> must go first:
text = text.replace(/__([\s\S]+?)__(?!_)|\*\*([\s\S]+?)\*\*(?!\*)/g, function (match, m1, m2) {
return m1 ? "<strong>" + m1 + "</strong>" : "<strong>" + m2 + "</strong>";
});
//prevent foo_bar and foo_bar_baz from ending up with an italic word in the middle //prevent foo_bar and foo_bar_baz from ending up with an italic word in the middle
text = text.replace(/(^(?! {4}|\t)\w+_\w+_\w[\w_]*)/gm, function (x) { text = text.replace(/(^(?! {4}|\t)\w+_\w+_\w[\w_]*)/gm, function (x) {
return x.replace(/_/gm, '\\_'); return x.replace(/_/gm, '\\_');
}); });
// Replace showdown's implementation of emphasis
// <em>
// requires a negative lookbehind for \n before the final * to prevent breaking lists
text = text.replace(/\b(\\)?_((?:__|[\s\S])+?)_\b|\*((?:\*\*|[\s\S])+?)(\n)?\*(?!\*)/g, function (match, escaped, m1, m2, newline) {
return escaped || newline ? match : m1 ? "<em>" + m1 + "</em>" : "<em>" + m2 + "</em>";
});
// in very clear cases, let newlines become <br /> tags // in very clear cases, let newlines become <br /> tags
text = text.replace(/^[\w\<][^\n]*\n+/gm, function (x) { text = text.replace(/^[\w\<][^\n]*\n+/gm, function (x) {
return x.match(/\n{2}/) ? x : x.trim() + " \n"; return x.match(/\n{2}/) ? x : x.trim() + " \n";