Skip to content

Commit

Permalink
Merge pull request #25 from AdFabConnect/refactor_save_action
Browse files Browse the repository at this point in the history
Refactor save action
  • Loading branch information
Labbé nicolas committed Nov 7, 2016
2 parents 430c18a + 6ed093d commit 52d1c6c
Show file tree
Hide file tree
Showing 18 changed files with 402 additions and 432 deletions.
4 changes: 3 additions & 1 deletion src/cli/cms/data/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import * as source from './source'
import * as revision from './revision'
import * as metas from './metas'
import * as file from './file'
import * as utils from './utils'

export {
values,
Expand All @@ -19,5 +20,6 @@ export {
revision,
regex,
metas,
file
file,
utils
}
22 changes: 17 additions & 5 deletions src/cli/cms/data/metas.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ import {
,config
} from '../../'

export function add(tpl, json, type, obj = {}, date = null, realType = 'draft') {
export function add(json, type, date = null) {
let meta = config.meta.name

var currentDate = (date != null && date !== '') ? date : new Date()
var abeUrl = (type === 'publish') ? json[meta].link : cmsData.fileAttr.add(json[meta].link, 'd' + cmsData.revision.removeStatusAndDateFromFileName(currentDate.toISOString())) + ''

Expand All @@ -16,13 +15,26 @@ export function add(tpl, json, type, obj = {}, date = null, realType = 'draft')
date: currentDate,
abeUrl: abeUrl
}
json[meta].status = realType === 'reject' ? 'draft' : realType
json[meta].status = type
if(json[meta][type] == null) {
json[meta][type] = JSON.parse(JSON.stringify(obj))
json[meta][type] = {latest: {}}
json[meta][type].date = currentDate
json[meta][type].abeUrl = abeUrl
}
json[meta][type].latest = JSON.parse(JSON.stringify(obj))
// json[meta][type].latest = JSON.parse(JSON.stringify(obj))
json[meta][type].latest.date = currentDate
json[meta][type].latest.abeUrl = abeUrl
}


export function create(json, template, url) {
let meta = config.meta.name
if (json[meta] == null) {
json[meta] = {}
}

json[meta].template = template
json[meta].link = url

return json
}
37 changes: 37 additions & 0 deletions src/cli/cms/data/utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import {
cmsData
} from '../../'

export function getPercentOfRequiredTagsFilled(text, json) {
var regAbe = /{{abe[\S\s].*?key=['|"]([\S\s].*?['|"| ]}})/g
var matches = text.match(regAbe)
var requiredValue = 0
var complete = 0
if(typeof matches !== 'undefined' && matches !== null){
Array.prototype.forEach.call(matches, (match) => {
if(typeof match !== 'undefined' && match !== null) {

var keyAttr = cmsData.regex.getAttr(match, 'key')
var requiredAttr = cmsData.regex.getAttr(match, 'required')
if(requiredAttr === 'true') {
requiredValue++

var minAttr = cmsData.regex.getAttr(match, 'min-length')
minAttr = (minAttr !== '') ? minAttr : 0

if(typeof json[keyAttr] !== 'undefined' && json[keyAttr] !== null && json[keyAttr] !== '') {
if(minAttr > 0) {
if(json[keyAttr].length >= minAttr) {
complete++
}
}else {
complete++
}
}
}
}
})
}

return Math.round((requiredValue > 0) ? complete * 100 / requiredValue : 100)
}
67 changes: 28 additions & 39 deletions src/cli/cms/operations/create.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,52 +5,41 @@ import {
cmsOperations,
config,
abeExtend,
cmsData,
Manager
cmsData
} from '../../'

var create = function(template, pathCreate, name, req, forceJson = {}, duplicate = false) {
var p = new Promise((resolve, reject) => {
var p = new Promise((resolve) => {
abeExtend.hooks.instance.trigger('beforeCreate', template, pathCreate, name, req, forceJson)

var templatePath = path.join(config.root, config.templates.url, `${template}.${config.files.templates.extension}`)
var filePath = path.join(pathCreate, name)
filePath = coreUtils.slug.clean(filePath)
filePath = path.join(config.root, config.draft.url, filePath.replace(config.root,''))
if(templatePath !== null && filePath !== null) {
var tplUrl = cmsData.file.fromUrl(filePath)

if(!coreUtils.file.exist(tplUrl.json.path)) {
var json = (forceJson) ? forceJson : {}
var tpl = templatePath
var text = cmsTemplates.template.getTemplate(tpl)
if (duplicate) {
json = cmsData.values.removeDuplicate(text, json)
}
text = cmsData.source.removeDataList(text)
var resHook = abeExtend.hooks.instance.trigger('beforeFirstSave', filePath, req.query, json, text)
filePath = resHook.filePath
json = resHook.json
text = resHook.text

abeExtend.hooks.instance.trigger('afterCreate', json, text, pathCreate, name, req, forceJson)
cmsOperations.save.save(filePath, template, json, text, 'draft', null, 'draft')
.then((resSave) => {
Manager.instance.updatePostInList(resSave.jsonPath)
filePath = resSave.htmlPath
tplUrl = cmsData.file.fromUrl(filePath)
resolve(resSave.json)
}).catch(function(e) {
reject()
console.error(e)
})
}else {
json = cmsData.file.get(tplUrl.json.path)
resolve(json, tplUrl.json.path)
var postUrl = path.join('/', pathCreate, name)
postUrl = coreUtils.slug.clean(postUrl)

var filePath = path.join(config.root, config.draft.url, postUrl)

var json = (forceJson) ? forceJson : {}
json = cmsData.metas.create(json, template, postUrl)

if (duplicate) {
if(json.abe_meta.publish != null) {
delete json.abe_meta.publish
}
}else {
reject()
var templateText = cmsTemplates.template.getTemplate(template)
json = cmsData.values.removeDuplicate(templateText, json)
}
abeExtend.hooks.instance.trigger('beforeFirstSave', filePath, req.query, json)

var p2 = cmsOperations.post.draft(
postUrl,
json,
'draft'
)
p2.then((result) => {
abeExtend.hooks.instance.trigger('afterCreate', result)
resolve(result.json)
}).catch(function(e) {
console.error('[ERROR] create.js', e)
})
}).catch(function(e) {
console.error(e)
})
Expand Down
Loading

0 comments on commit 52d1c6c

Please sign in to comment.