Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/AdFabConnect/abejs
Browse files Browse the repository at this point in the history
  • Loading branch information
gregorybesson committed Oct 21, 2016
2 parents 5cf8115 + c642ba5 commit 76c752a
Show file tree
Hide file tree
Showing 15 changed files with 158 additions and 61 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "abe-cli",
"version": "2.5.15",
"version": "2.5.19",
"description": "Abe command line tool",
"main": "src/server/app.js",
"repository": {
Expand Down Expand Up @@ -89,7 +89,7 @@
"eslint": "^3.6.0",
"istanbul": "^1.1.0-alpha.1",
"mocha": "^3.0.2",
"node-sass": "^3.6.0",
"node-sass": "^3.7.0",
"nodemon": "^1.8.1",
"parallelshell": "^2.0.0",
"watchify": "^3.4.0"
Expand Down
5 changes: 3 additions & 2 deletions src/cli/cms/data/file.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@ export function getAllWithKeys(withKeys) {

if(json.abe_meta.latest.date != null) {
file.date = json.abe_meta.latest.date
file.cleanDate = moment(json.abe_meta.latest.date).format('YYYY/MM/DD HH:MM:ss')
}

if(json.abe_meta != null) {
var date = null
if (json.abe_meta.latest.date != null) {
if (json.abe_meta.latest.date !== null) {
date = json.abe_meta.latest.date
} else if (json.abe_meta.date != null) {
} else if (json.abe_meta.date !== null) {
date = json.abe_meta.date
}
cleanFile.abe_meta = {
Expand Down
25 changes: 13 additions & 12 deletions src/cli/cms/data/revision.js
Original file line number Diff line number Diff line change
Expand Up @@ -178,25 +178,26 @@ export function getFilesMerged(files) {
// return merged
Array.prototype.forEach.call(Object.keys(merged), (key) => {
var revisions = merged[key].revisions

revisions.sort(coreUtils.sort.predicatBy('date', -1))
if(revisions[0] != null) {
merged[key].date = revisions[0].date
}

Array.prototype.forEach.call(revisions, (revision) => {

var status = revision.abe_meta.status

if (status === 'publish') {
merged[key][status] = revision
}else {
merged[key][status] = {}
if(typeof merged[key][status] === 'undefined' || merged[key][status] === null) {
if (status === 'publish') {
merged[key][status] = revision
}else {
merged[key][status] = {}
}
merged[key][status].path = revision.path
merged[key][status].html = revision.html
merged[key][status].htmlPath = revision.htmlPath
merged[key][status].date = new Date(revision.date)
merged[key][status].cleanDate = revision.cleanDate
merged[key][status].link = revision.abe_meta.link
}
merged[key][status].path = revision.path
merged[key][status].html = revision.html
merged[key][status].htmlPath = revision.htmlPath
merged[key][status].date = new Date(revision.date)
merged[key][status].link = revision.abe_meta.link
})

merged[key].revisions = revisions
Expand Down
14 changes: 8 additions & 6 deletions src/cli/cms/editor/handlebars/listPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,19 @@ export default function listPage(file, index, text) {
if(file.draft != null) {
if((file.publish == null)
|| (file.publish && file.publish.date < file.draft.date)) {
workflow += `<a href="/abe/${file.abe_meta.template}?filePath=${file.draft.html}" class="label label-default label-draft">draft</a>`
workflow += `<a href="/abe/${file.abe_meta.template}?filePath=${file.draft.html}" class="label label-default label-draft" title="${file.draft.cleanDate}">draft</a>`
}else {
workflow += `<a href="/abe/${file.abe_meta.template}?filePath=${file.draft.html}" class="hidden label label-default label-draft">draft</a>`
workflow += `<a href="/abe/${file.abe_meta.template}?filePath=${file.draft.html}" class="hidden label label-default label-draft" title="${file.draft.cleanDate}">draft</a>`
}
}else {
workflow += `<a href="/abe/${file.abe_meta.template}?filePath=${file.abe_meta.link}" class="hidden label label-default label-draft">draft</a>`
workflow += `<a href="/abe/${file.abe_meta.template}?filePath=${file.abe_meta.link}" class="hidden label label-default label-draft" title="${file.cleanDate}">draft</a>`
}

workflow += '</td>'
workflow += '<td align="center" class="publish">'

if (file.publish){
workflow += `<a href="/abe/${file.abe_meta.template}?filePath=${file.publish.html}" class="checkmark label-published">&#10004;</a>`
workflow += `<a href="/abe/${file.abe_meta.template}?filePath=${file.publish.html}" class="checkmark label-published" title="${file.publish.cleanDate}">&#10004;</a>`
}
workflow += '</td>'

Expand All @@ -67,7 +67,8 @@ export default function listPage(file, index, text) {
if(file.publish != null) {
res += `<a href="/unpublish/?filePath=${file.abe_meta.link}"
title="${text.unpublish}"
class="icon" data-unpublish="true" data-text="${text.confirmUnpublish} ${file.abe_meta.link}">
class="icon" data-unpublish="true" data-text="${text.confirmUnpublish} ${file.abe_meta.link}"
title="unpublish">
<span class="glyphicon glyphicon-eye-close"></span>
</a>`
}
Expand All @@ -76,7 +77,8 @@ export default function listPage(file, index, text) {
title="${text.delete}"
class="icon"
data-delete="true"
data-text="${text.confirmDelete} ${file.abe_meta.link}">
data-text="${text.confirmDelete} ${file.abe_meta.link}"
title="remove">
<span class="glyphicon glyphicon-trash"></span>
</a>`

Expand Down
2 changes: 2 additions & 0 deletions src/cli/extend/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import hooks from './hooks'
import plugins from './plugins'
import process from './process'
import * as lock from './lock'

export {
hooks
,plugins
,process
,lock
}
46 changes: 46 additions & 0 deletions src/cli/extend/lock.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import process from 'child_process'
import path from 'path'
import fs from 'fs'

import {
config
,abeExtend
} from '../'

export function create(name) {
let lockFile = path.join(config.root, `abe-process-${name}.lock`)
try {
var stats = fs.statSync(lockFile)
if (stats.isFile()) {
console.log(`cannot lock process ${name} already running`)
return false
}
}catch(err) {
fs.writeFileSync(lockFile, '', {encoding: 'utf8'})
}

return true
}

export function remove(name) {
let lockFile = path.join(config.root, `abe-process-${name}.lock`)
try {
var stats = fs.statSync(lockFile)
if (stats.isFile()) {
fs.unlinkSync(lockFile)
return true
}
}catch(err) {

}
return false
}

export function deleteAll() {
var files = fs.readdirSync(config.root)
Array.prototype.forEach.call(files, (file) => {
if (file.indexOf('abe-process') > -1 && file.indexOf('.lock') > -1) {
fs.unlinkSync(path.join(config.root, file))
}
})
}
21 changes: 19 additions & 2 deletions src/cli/extend/process.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import process from 'child_process'
import fse from 'fs-extra'
import path from 'path'
import fs from 'fs'

import {
config
Expand All @@ -16,23 +18,38 @@ var abeProcess = function(name, args = []) {
args = prepend(`ABE_WEBSITE=${config.root}`, args)
args = prepend(`ABEJS_PATH=${__dirname}/../../../dist`, args)

if (!abeExtend.lock.create(name)) {
return false
}

var proc
var file = `${__dirname}/../../cli/process/${name}.js`
try {
var stats = fse.statSync(file)
if (stats.isFile()) {
process.fork(file, args)
proc = process.fork(file, args)
}
}catch(err) {
try {
file = abeExtend.plugins.instance.getProcess(name)
stats = fse.statSync(file)
if (stats.isFile()) {
process.fork(file, args)
proc = process.fork(file, args)
}
}catch(err) {
console.log('process fork failed')
}
}

if(typeof proc !== 'undefined' && proc !== null) {
proc.on('message', function( msg ) {
abeExtend.lock.remove(name)
proc.kill()
});
return true
}

return false
}

export default abeProcess
3 changes: 2 additions & 1 deletion src/cli/process/publish-all.js
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,8 @@ if(typeof pConfig.ABE_WEBSITE !== 'undefined' && pConfig.ABE_WEBSITE !== null) {
}
dateStart = (Math.round((new Date().getTime() - dateStart.getTime()) / 1000 / 60 * 100)) / 100
console.log('publish process finished in ' + clc.green(dateStart) + 'm')
process.exit(0)
process.send('finished');
process.exit(0);
})
})
.catch((e) => {
Expand Down
2 changes: 2 additions & 0 deletions src/server/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ if(config.port) abePort = config.port
if(process.env.PORT) abePort = process.env.PORT
config.set({webport: process.env.WEBPORT ? process.env.WEBPORT : 8081})

abeExtend.lock.deleteAll() // delete all process .lock when abe start

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'

var html = exphbs.create({
Expand Down
7 changes: 5 additions & 2 deletions src/server/public/scripts/modules/EditorManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,11 @@ export default class EditorManager {
url: document.location.origin + '/abe/republish',
method: 'get'
},
() => {

(e, responseText) => {
var response = JSON.parse(responseText)
if (response.success !== 1) {
alert(response.msg)
}
})
}

Expand Down
6 changes: 3 additions & 3 deletions src/server/public/scripts/modules/FormCreate.js
Original file line number Diff line number Diff line change
Expand Up @@ -154,16 +154,16 @@ export default class FormCreate {

_btnDuplicateManagerClick(e) {
e.preventDefault()
this._submit('duplicate', e.srcElement)
this._submit('duplicate', e.target)
}

_btnUpdateManagerClick(e) {
e.preventDefault()
this._submit('update', e.srcElement)
this._submit('update', e.target)
}

_btnCreateManagerClick(e) {
e.preventDefault()
this._submit('create', e.srcElement)
this._submit('create', e.target)
}
}
15 changes: 11 additions & 4 deletions src/server/routes/get-republish.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,17 @@ import {
} from '../../cli'

var route = function(req, res) {
abeExtend.process('publish-all', [''])

var result = {
success: 1
var result
if (abeExtend.process('publish-all', [''])) {
result = {
success: 1,
msg: 'publish all is running'
}
}else {
result = {
success: 0,
msg: 'cannot run process sitemap, because an other one is already running'
}
}
res.set('Content-Type', 'application/json')
res.send(JSON.stringify(result))
Expand Down
2 changes: 1 addition & 1 deletion src/server/routes/post-upload.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ var route = function(req, res, next){
mkdirp.sync(folderFilePath)
req.pipe(req.busboy)
req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
var ext = path.extname(filename)
var ext = path.extname(filename).toLowerCase()
var filenameNoExt = path.basename(filename,ext)
var randID = '-' + (((1+Math.random())*0x100000)|0).toString(16).substring(2)
var slug = limax(filenameNoExt, {separateNumbers: false}) + randID + ext
Expand Down
13 changes: 13 additions & 0 deletions src/server/sass/modules/_editor-blocks.scss
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,19 @@
}
}

.abeform-wrapper {
height: 100%;
position: relative;
> form {
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: auto;
position: absolute;
}
}

.btn {
.glyphicon-chevron-down {
transform: rotate(-180deg);
Expand Down
54 changes: 28 additions & 26 deletions src/server/views/partials/engine.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,36 +25,38 @@

<!-- *************** form edit *************** -->
{{#if form}}
<form class="text-i18n status-{{@root.json.abe_meta.status}}" id="abeForm">
<div class="display-status">
current status : {{@root.json.abe_meta.status}}
</div>
<div class="abeform-wrapper">
<form class="text-i18n status-{{@root.json.abe_meta.status}}" id="abeForm">
<div class="display-status">
current status : {{@root.json.abe_meta.status}}
</div>

<ul class="nav nav-tabs" role="tablist">
<ul class="nav nav-tabs" role="tablist">
{{#each form}}
<li role="presentation" class="{{#if @first}}active{{/if}}">
<a href="#{{cleanTab @key}}" aria-controls="{{cleanTab @key}}" role="tab" data-toggle="tab">
{{@key}}
</a>
</li>
{{/each}}
</ul>
<div class="tab-content">
{{#each form}}
<li role="presentation" class="{{#if @first}}active{{/if}}">
<a href="#{{cleanTab @key}}" aria-controls="{{cleanTab @key}}" role="tab" data-toggle="tab">
{{@key}}
</a>
</li>
<div role="tabpanel" class="tab-pane {{#if @first}}active{{/if}}" id="{{cleanTab @key}}">
{{#each this}}
<div class="{{cleanTab @key}}">
{{{printBlock this}}}
</div>
{{/each}}
<small class="text-muted">* Required</small>
</div>
{{/each}}
</ul>
<div class="tab-content">
{{#each form}}
<div role="tabpanel" class="tab-pane {{#if @first}}active{{/if}}" id="{{cleanTab @key}}">
{{#each this}}
<div class="{{cleanTab @key}}">
{{{printBlock this}}}
</div>
{{/each}}
<small class="text-muted">* Required</small>
</div>
{{/each}}
</div>
<button type='submit' class='hidden' data-action="draft"></button>
<span class="abe-version">abe@{{abeVersion}}</span>
{{abeImport 'engine-more' manager.config this}}
</form><!-- *************** /end form edit *************** -->
<button type='submit' class='hidden' data-action="draft"></button>
<span class="abe-version">abe@{{abeVersion}}</span>
{{abeImport 'engine-more' manager.config this}}
</form><!-- *************** /end form edit *************** -->
</div>
{{/if}}
<div class="close-engine">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
Expand Down

0 comments on commit 76c752a

Please sign in to comment.