Skip to content

Commit

Permalink
merge master into type_rich_v2
Browse files Browse the repository at this point in the history
  • Loading branch information
wonknu committed Dec 13, 2016
1 parent ec05fd6 commit fd06110
Show file tree
Hide file tree
Showing 92 changed files with 7,181 additions and 232 deletions.
8 changes: 4 additions & 4 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
src/server/public/libs
src/server/public/scripts/admin-compiled.js
src/server/public/scripts/template-engine-compiled.js
src/server/public/scripts/user-login-compiled.js
src/server/public/abejs/libs
src/server/public/abejs/scripts/admin-compiled.js
src/server/public/abejs/scripts/template-engine-compiled.js
src/server/public/abejs/scripts/user-login-compiled.js
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ draft/
*.sublime-workspace

# admin compiled
src/server/public/scripts/*-compiled.js
src/server/public/css/styles.css
src/server/public/abejs/scripts/*-compiled.js
src/server/public/abejs/css/styles.css

# Local configs
cli/config/*-local.js
Expand Down
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ before_install:
- sudo dpkg -i google-chrome*.deb
install:
- npm install
- npm run install-selenium
before_script:
- npm run distribute
script:
Expand Down
20 changes: 10 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
{
"name": "abe-cli",
"version": "2.10.0",
"version": "2.11.2",
"description": "Abe command line tool",
"main": "src/server/app.js",
"repository": {
"type": "git",
"url": "git://github.com/AdFabConnect/abejs.git"
},
"scripts": {
"postinstall": "node nightwatch.conf.js",
"lint": "eslint src --fix",
"test": "mocha --recursive --compilers js:babel-register --require babel-polyfill",
"test-cov": "istanbul cover _mocha -- --recursive --compilers js:babel-register --require babel-polyfill",
"test-coveralls": "istanbul cover _mocha --report lcovonly -- --recursive --compilers js:babel-register --require babel-polyfill -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage",
"install-selenium": "node nightwatch.conf.js",
"pretest-func": "ROOT=$PWD/tests/demo ./dist/index.js serve -p 3003 &",
"test-func": "sleep 6 && node_modules/.bin/nightwatch --config nightwatch.conf.js",
"posttest-func": "killall node",
"start": "node --debug --harmony ./dist/server/index.js",
"startpm2": "pm2 startOrRestart ./processes.json",
"babel": "babelify --presets [ es2015 ] src/server/public/scripts/template-engine.js -o src/server/public/scripts/template-engine-compiled.js",
"watch": "./node_modules/.bin/parallelshell './node_modules/.bin/watchify -v -t [ babelify --presets [ es2015 ] ] src/server/public/scripts/template-engine.js -o src/server/public/scripts/template-engine-compiled.js' './node_modules/.bin/watchify -v -t [ babelify --presets [ es2015 ] ] src/server/public/scripts/admin.js -o src/server/public/scripts/admin-compiled.js' './node_modules/.bin/watchify -v -t [ babelify --presets [ es2015 ] ] src/server/public/scripts/user-login.js -o src/server/public/scripts/user-login-compiled.js' 'npm run watch:sass'",
"babel": "babelify --presets [ es2015 ] src/server/public/abejs/scripts/template-engine.js -o src/server/public/abejs/scripts/template-engine-compiled.js",
"watch": "./node_modules/.bin/parallelshell './node_modules/.bin/watchify -v -t [ babelify --presets [ es2015 ] ] src/server/public/abejs/scripts/template-engine.js -o src/server/public/abejs/scripts/template-engine-compiled.js' './node_modules/.bin/watchify -v -t [ babelify --presets [ es2015 ] ] src/server/public/abejs/scripts/admin.js -o src/server/public/abejs/scripts/admin-compiled.js' './node_modules/.bin/watchify -v -t [ babelify --presets [ es2015 ] ] src/server/public/abejs/scripts/user-login.js -o src/server/public/abejs/scripts/user-login-compiled.js' 'npm run watch:sass'",
"watch:sass": "./node_modules/.bin/watch 'npm run sass' ./src/server/sass",
"babel-app": "node_modules/.bin/babel-node --presets es2015",
"build": "node_modules/.bin/babel-node --presets es2015 src/cli/build/template.js",
"mvasset": "mkdirp dist/server/public && cp -r src/server/locale dist/server && cp -r src/server/views dist/server && cp -r src/server/public/css dist/server/public && cp -r src/server/public/fonts dist/server/public && cp -r src/server/public/image dist/server/public",
"mvasset": "mkdirp dist/server/public/abejs && cp -r src/server/locale dist/server && cp -r src/server/views dist/server && cp -r src/server/public/abejs/css dist/server/public/abejs && cp -r src/server/public/abejs/fonts dist/server/public/abejs && cp -r src/server/public/abejs/image dist/server/public/abejs",
"sass": "node ./src/tasks/sass.js",
"js:users": "browserify -t [ babelify --presets [ es2015 ] ] src/server/public/scripts/user-login.js -o src/server/public/scripts/user-login-compiled.js",
"js:admin": "browserify -t [ babelify --presets [ es2015 ] ] src/server/public/scripts/admin.js -o src/server/public/scripts/admin-compiled.js",
"js:engine": "browserify -t [ babelify --presets [ es2015 ] ] src/server/public/scripts/template-engine.js -o src/server/public/scripts/template-engine-compiled.js",
"js:users": "browserify -t [ babelify --presets [ es2015 ] ] src/server/public/abejs/scripts/user-login.js -o src/server/public/abejs/scripts/user-login-compiled.js",
"js:admin": "browserify -t [ babelify --presets [ es2015 ] ] src/server/public/abejs/scripts/admin.js -o src/server/public/abejs/scripts/admin-compiled.js",
"js:engine": "browserify -t [ babelify --presets [ es2015 ] ] src/server/public/abejs/scripts/template-engine.js -o src/server/public/abejs/scripts/template-engine-compiled.js",
"build:front": "npm run js:admin && npm run js:users && npm run js:engine && npm run sass",
"build:scripts": "npm run build:front && ./node_modules/.bin/babel --presets es2015,stage-0 -d dist/server src/server/ && ./node_modules/.bin/babel --presets es2015,stage-0 -d dist/cli src/cli/ && npm run mvasset",
"compile": "./node_modules/.bin/babel --presets es2015,stage-0 -d dist/ src/ && cp -r src/cli/core/config/config.json dist/cli/core/config/config.json",
Expand Down Expand Up @@ -72,7 +72,7 @@
"html-minifier": "^3.1.0",
"https": "^1.0.0",
"jimp": "^0.2.27",
"jwt-simple": "^0.4.1",
"jwt-simple": "^0.5.1",
"limax": "^1.4.0",
"mkdirp": "^0.5.1",
"moment": "^2.15.2",
Expand Down Expand Up @@ -100,7 +100,7 @@
"uuid": "^3.0.0",
"watch": "^1.0.1",
"which": "^1.2.11",
"xss": "^0.2.10"
"xss": "^0.3.2"
},
"devDependencies": {
"babel": "^6.3.26",
Expand Down
4 changes: 3 additions & 1 deletion src/cli/cms/data/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import * as revision from './revision'
import * as metas from './metas'
import * as file from './file'
import * as utils from './utils'
import * as sort from './sort'

export {
values,
Expand All @@ -21,5 +22,6 @@ export {
regex,
metas,
file,
utils
utils,
sort
}
8 changes: 4 additions & 4 deletions src/cli/cms/data/regex.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
export let abePattern = /[^"']({{abe.*?type=[\'|\"][text|rich|textarea]+[\'|\"][\s\S].*?}})/g;
export let abePattern = /[^"']({{abe.*?type=[\'|\"][text|rich|textarea]+[\'|\"][\s\S].*?}})/g
// This pattern finds all abe tags enclosed in a HTML tag attribute
// export let abeAsAttributePattern = /( [A-Za-z0-9\-\_]+=["|']{1}{{abe.*?}})/g;
export let abeAsAttributePattern = /( [A-Za-z0-9\-\_]+=["|']{1}).*?({{abe.*?}})/g;
export let abeAsAttributePattern = /( [A-Za-z0-9\-\_]+=["|']{1}).*?({{abe.*?}})/g
// This pattern finds all {{#each ...}}...{{/each}} blocks
export let eachBlockPattern = />\s*(\{\{#each (\r|\t|\n|.)*?\/each\}\})/g;
export let eachBlockPattern = />\s*(\{\{#each (\r|\t|\n|.)*?\/each\}\})/g
// This pattern finds all {{#each ...}}...{{/each}} blocks
export let blockPattern = /(\{\{#each.*\}\}[\s\S]*?\{\{\/each\}\})/g;
export let blockPattern = /(\{\{#each.*\}\}[\s\S]*?\{\{\/each\}\})/g

/**
* escape a regex
Expand Down
38 changes: 38 additions & 0 deletions src/cli/cms/data/sort.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/**
* sort an array of objects by date attribute
*
* Example : [{date: {abe_meta: {publish: {latest: date}}}}, {date: {abe_meta: {publish: {latest: date}}}}].sort(cmsData.sort.byDateDesc)
*
* @param {Object} a object with date attribute
* @param {Object} b object with date attribute
* @return {Int} 1 | 0 | -1
*/
export function byDateDesc(a, b) {
var dateA = (a.abe_meta.publish != null && a.abe_meta.publish.latest != null) ? new Date(a.abe_meta.publish.latest.date) : 0
var dateB = (b.abe_meta.publish != null && b.abe_meta.publish.latest) ? new Date(b.abe_meta.publish.latest.date) : 0
if(dateA < dateB) {
return 1
}else if(dateA > dateB) {
return -1
}
return 0
}
/**
* sort an array of objects by date attribute
*
* Example : [{date: {abe_meta: {publish: {latest: date}}}}, {date: {abe_meta: {publish: {latest: date}}}}].sort(cmsData.sort.byDateAsc)
*
* @param {Object} a object with date attribute
* @param {Object} b object with date attribute
* @return {Int} 1 | 0 | -1
*/
export function byDateAsc(a, b) {
var dateA = (a.abe_meta.publish != null && a.abe_meta.publish.latest != null) ? new Date(a.abe_meta.publish.latest.date) : 0
var dateB = (b.abe_meta.publish != null && b.abe_meta.publish.latest) ? new Date(b.abe_meta.publish.latest.date) : 0
if(dateA > dateB) {
return 1
}else if(dateA < dateB) {
return -1
}
return 0
}
4 changes: 2 additions & 2 deletions src/cli/cms/data/sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -213,9 +213,9 @@ export function executeOrderByClause(files, orderby){
files = coreUtils.sort.shuffle(files)
}else if(orderby.column.toLowerCase() === 'date') {
if(orderby.type === 'ASC') {
files.sort(coreUtils.sort.byDateAsc)
files.sort(cmsData.sort.byDateAsc)
}else if(orderby.type === 'DESC') {
files.sort(coreUtils.sort.byDateDesc)
files.sort(cmsData.sort.byDateDesc)
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/cli/cms/editor/handlebars/printInput.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export function getAttributes(params) {
var attributes = ''
if(params.key != null) attributes += `id="${params.key}" data-id="${params.key}"`
if(params.value != null) attributes += ` value="${params.value}"`
if(params['max-length'] != null) attributes += ` maxlength="${params['max-length']}" data-maxlength="${params['max-length']}"`
if(params['max-length'] != null) attributes += ` data-maxlength="${params['max-length']}"`
if(params.reload != null) attributes += ` reload="${params.reload}"`
if(params.order != null) attributes += ` tabIndex="${params.order}"`
if(params.required != null) attributes += ` data-required="${params.required}"`
Expand Down Expand Up @@ -184,7 +184,7 @@ export function printInput (params, root) {
if(!(params.toolbar != null)) params.toolbar = '*'

params.disabled = ''
if (params.tab !== 'slug' && !User.utils.isUserAllowedOnRoute(userWorkflow, `/abe/operations/${params.status}/edit`)) {
if (params.tab !== 'slug' && !User.utils.isUserAllowedOnRoute(userWorkflow, `/abe/operations/edit/${params.status}`)) {
params.disabled = 'disabled="disabled"'
}
var attributes = getAttributes(params)
Expand Down
8 changes: 1 addition & 7 deletions src/cli/cms/operations/create.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,8 @@ var create = function(template, pathCreate, name, req, forceJson = {}, duplicate
var postUrl = path.join('/', pathCreate, name)
postUrl = coreUtils.slug.clean(postUrl)

var postExist = Manager.instance.postExist(postUrl)
if (postExist) {
var postJson = cmsData.revision.getDocumentRevision(postUrl)
resolve(postJson)
return
}

var json = (forceJson) ? forceJson : {}

json = cmsData.metas.create(json, template, postUrl)

if (duplicate) {
Expand Down
5 changes: 5 additions & 0 deletions src/cli/cms/structure/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import * as structure from './structure'

export {
structure
}
14 changes: 14 additions & 0 deletions src/cli/cms/structure/structure.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import path from 'path'

import {
coreUtils,
cmsStructure,
cmsData,
config
} from '../../'

export function editStructure(type, folderPath) {
if(type === 'add') coreUtils.file.addFolder(folderPath)
else coreUtils.file.removeFolder(folderPath)
return folderPath
}
9 changes: 3 additions & 6 deletions src/cli/cms/templates/prepare.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,20 +47,17 @@ export function addAbeDataAttrForHtmlAttributes(template) {
var more_attr = ''
var getattr = cmsData.regex.getAttr(match, 'key').replace(/\./g, '-')
var toReplace = match[0].replace(
new RegExp(match[1]),
cmsData.regex.escapeTextToRegex(match[1]),
' data-abe-attr-' + cmsData.regex.validDataAbe(getattr) + '="' + (match[0].split('=')[0]).trim() + '"' +
' data-abe-' + cmsData.regex.validDataAbe(getattr) + '="' + getattr + '"' + match[1])

toReplace = toReplace.replace(
new RegExp(match[2]),
cmsData.regex.escapeTextToRegex(match[2]),
match[2].replace('}}', ' has-abe=1}}')
)

console.log('* * * * * * * * * * * * * * * * * * * * * * * * * * * * *')
console.log('toReplace', toReplace)

template = template.replace(
new RegExp(match[0]),
cmsData.regex.escapeTextToRegex(match[0]),
toReplace
)
}
Expand Down
16 changes: 16 additions & 0 deletions src/cli/core/utils/file.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import Promise from 'bluebird'
import path from 'path'
import mkdirp from 'mkdirp'
import execPromise from 'child-process-promise'
var fse = Promise.promisifyAll(require('fs-extra'))

import {
Expand Down Expand Up @@ -160,6 +162,20 @@ export function getFilesAsync(dirname, recursive = true, filterExt = '') {
})
}

export function addFolder(folderPath) {
mkdirp(path.join(config.root, folderPath), function (err) {
if (err) console.error(err)
})
return folderPath
}

export function removeFolder(folderPath) {
fse.remove(path.join(config.root, folderPath), function (err) {
if (err) return console.error(err)
})
return folderPath
}

/**
* Return the date of the revision
* @param {String} revisionPath url of the post revision
Expand Down
39 changes: 0 additions & 39 deletions src/cli/core/utils/sort.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,3 @@
/**
* sort an array of objects by date attribute
*
* Example : [{date: date}, {date: date}].sort(coreUtils.sort.byDateDesc)
*
* @param {Object} a object with date attribute
* @param {Object} b object with date attribute
* @return {Int} 1 | 0 | -1
*/
export function byDateDesc(a, b) {
var dateA = new Date(a.date)
var dateB = new Date(b.date)
if(dateA < dateB) {
return 1
}else if(dateA > dateB) {
return -1
}
return 0
}

/**
* shuffle an array of objects by date attribute
*
Expand All @@ -44,25 +24,6 @@ export function shuffle(array) {

return array
}
/**
* sort an array of objects by date attribute
*
* Example : [{date: date}, {date: date}].sort(coreUtils.sort.byDateAsc)
*
* @param {Object} a object with date attribute
* @param {Object} b object with date attribute
* @return {Int} 1 | 0 | -1
*/
export function byDateAsc(a, b) {
var dateA = new Date(a.date)
var dateB = new Date(b.date)
if(dateA > dateB) {
return 1
}else if(dateA < dateB) {
return -1
}
return 0
}

/**
* This function makes sorting on an array of Json objects possible.
Expand Down
2 changes: 2 additions & 0 deletions src/cli/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import * as cmsEditor from './cms/editor'
import * as cmsOperations from './cms/operations'
import * as cmsTemplates from './cms/templates'
import * as cmsReference from './cms/reference'
import * as cmsStructure from './cms/structure'
import * as cmsMedia from './cms/media'
import * as coreUtils from './core/utils'
import * as abeExtend from './extend'
Expand All @@ -55,6 +56,7 @@ export {
cmsOperations,
cmsTemplates,
cmsReference,
cmsStructure,
cmsMedia,
coreUtils,
cmsEditor,
Expand Down
8 changes: 7 additions & 1 deletion src/server/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,20 @@ app.use(flash())
app.use(cookieParser())
app.use(passport.initialize())
app.use(passport.session())
app.use(bodyParser.urlencoded({limit: '1gb', extended: true, parameterLimit: 10000 }))
app.use(csrf({
cookie: {
secure: config.cookie.secure
}
}))
app.use(function(req, res, next) {
if (req.url.indexOf('/abe/') > -1 ) {
res.locals._csrf = req.csrfToken()
}
next()
})

app.use(bodyParser.json({limit: '1gb'}))
app.use(bodyParser.urlencoded({limit: '1gb', extended: true, parameterLimit: 10000 }))
app.use(function (req, res, next) {
res.locals.nonce = uuid.v4()
next()
Expand Down
6 changes: 5 additions & 1 deletion src/server/controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import {
,postSqlRequest
,postReference
,getReference
,postStructure
,getStructure
,getPaginate
,getThumbs
,getImage
Expand Down Expand Up @@ -56,11 +58,13 @@ router.post('/abe/page/*', postPage)
router.get('/abe/page/*', getPage)
router.get('/abe/generate-posts', getGeneratePost)
router.get('/abe/save-config', getSaveConfig)
router.get('/abe/reference/*', getReference)
router.get('/abe/reference', getReference)
router.get('/abe/structure', getStructure)
router.get('/abe/thumbs/*', getThumbs)
router.get('/abe/image/*', getImage)
router.post('/abe/upload/*', postUpload)
router.post('/abe/reference/*', postReference)
router.post('/abe/structure/*', postStructure)
router.get('/abe/editor*', getMain)
router.post('/abe/list-url/save*', postListUrlSave)

Expand Down

0 comments on commit fd06110

Please sign in to comment.