Skip to content

Commit

Permalink
Merged precontrib into master
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaslabbe committed Nov 14, 2016
2 parents b33b2bf + 23f1687 commit 2980fc3
Show file tree
Hide file tree
Showing 25 changed files with 470 additions and 250 deletions.
3 changes: 3 additions & 0 deletions src/cli/cms/data/attributes.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ export function getAll(str, json) {
type: 'text',
value: '',
file: '',
precontrib: false,
slug: false,
slugType: false,
visible: true
}

Expand Down
15 changes: 15 additions & 0 deletions src/cli/cms/data/regex.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,21 @@ export function getTagAbeTypeRequest(text) {
return matches
}

/**
* Test if a string contains string key from {{#each}} block statement
* @param {String} str string to test
* @return {Boolean} true = this is a block content
*/
export function getTagAbePrecontribution(text) {
let listReg = /({{abe.*precontrib=[\'|\"].*}})/g
var matches = []
var match
while (match = listReg.exec(text)) {
matches.push(match)
}
return matches
}

export function validDataAbe(str){
return str.replace(/\[([0-9]*)\]/g, '$1')
}
9 changes: 8 additions & 1 deletion src/cli/cms/editor/form.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ export default class Form {
tab: 'default',
type: 'text',
value: '',
visible: true
visible: true,
precontrib: false,
slug: false,
slugType: false
}

obj = extend(true, defaultValues, obj)
Expand All @@ -65,6 +68,10 @@ export default class Form {
obj.block = obj.key.split('.')[0]
}

if (obj.precontrib === 'true') {
obj.tab = 'Precontribution'
}

if(this._form[obj.tab] == null) this._form[obj.tab] = {item:[]}

this._key[obj.key] = true // save key for dontHaveKey()
Expand Down
16 changes: 14 additions & 2 deletions src/cli/cms/editor/handlebars/printInput.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ export default function printInput () {
reload="${params.reload}"
tabIndex="${params.order}"
data-required="${params.required}"
data-precontrib="${params.precontrib}"
data-slug="${params.slug}"
data-slug-type="${params.slugType}"
data-display="${params.display}"
data-visible="${params.visible}"
data-autocomplete="${params.autocomplete}"
Expand All @@ -48,6 +51,9 @@ export default function printInput () {
commonParams = `id="${params.key}"
data-id="${params.key}"
data-maxlength="${params['max-length']}"
data-precontrib="${params.precontrib}"
data-slug="${params.slug}"
data-slug-type="${params.slugType}"
reload="${params.reload}"
tabIndex="${params.order}"
data-required="${params.required}"
Expand Down Expand Up @@ -93,8 +99,11 @@ export default function printInput () {
}else {
lastValues = JSON.stringify(params.value).replace(/\'/g, '&quote;')
res += `<select ${multiple} ${disabled} ${commonParams} class="${inputClass}"
last-values='${lastValues}'>
<option value=''></option>`
last-values='${lastValues}'>`

if (!params.required) {
res += `<option value=''></option>`
}

if(typeof params.source === 'object' && Object.prototype.toString.call(params.source) === '[object Array]') {
Array.prototype.forEach.call(params.source, (val) => {
Expand All @@ -114,6 +123,9 @@ export default function printInput () {
maxlength="${params['max-length']}"
reload="${params.reload}"
tabIndex="${params.order}"
data-precontrib="${params.precontrib}"
data-slug="${params.slug}"
data-slug-type="${params.slugType}"
data-required="${params.required}"
data-display="${params.display}"
data-visible="${params.visible}"
Expand Down
6 changes: 2 additions & 4 deletions src/cli/cms/editor/handlebars/recursiveFolder.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,8 @@ export default function recursiveFolder(obj, index = 1, dataShow = '', links = n
}
var parent = obj[0] ? obj[0].path.split('/')[0] : ''
var res = `<div class="form-group level-${index} ${classHidden}" data-parent="${parent}" data-shown="${dataShow}">
<label for="${id}" class="col-sm-5 control-label">Level ${index}</label>
<div class="col-sm-7">
<select data-show-hide-sub-folder="true" id="${id}" class="form-control">
<label for="${id}" class="control-label">Level ${index}</label>
<select data-precontrib="true" data-slug="true" data-slug-type="path" data-show-hide-sub-folder="true" id="${id}" class="form-control">
<option data-level-hide="${index+1}"></option>`

var sub = ''
Expand All @@ -37,7 +36,6 @@ export default function recursiveFolder(obj, index = 1, dataShow = '', links = n
})

res += `</select>
</div>
</div>`

res += sub
Expand Down
62 changes: 32 additions & 30 deletions src/cli/cms/templates/template.js
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,22 @@ export function recurseWhereVariables (where) {
return ar
}

export function getTemplatesTexts(templatesList) {
var templates = []
var p = new Promise((resolve) => {
Array.prototype.forEach.call(templatesList, (file) => {
var template = fse.readFileSync(file, 'utf8')
templates.push({
path: file,
template: template
})
})
resolve(templates)
})

return p
}

export function execRequestColumns(tpl) {
var ar = []
var matches = cmsData.regex.getTagAbeTypeRequest(tpl)
Expand All @@ -227,12 +243,11 @@ export function execRequestColumns(tpl) {
return ar
}

export function findRequestColumns(templatesList) {
export function getAbeRequestWhereKeysFromTemplates(templatesList) {
var whereKeys = []
var p = new Promise((resolve) => {
Array.prototype.forEach.call(templatesList, (file) => {
var template = fse.readFileSync(file, 'utf8')
whereKeys = whereKeys.concat(execRequestColumns(template))
whereKeys = whereKeys.concat(execRequestColumns(file.template))
})
whereKeys = whereKeys.filter(function (item, pos) {return whereKeys.indexOf(item) == pos})
resolve(whereKeys)
Expand All @@ -241,35 +256,22 @@ export function findRequestColumns(templatesList) {
return p
}

export function getSelectTemplateKeys(templatesPath) {
var p = new Promise((resolve, reject) => {
return getTemplatesAndPartials(templatesPath)
.then((templatesList) => {
return findRequestColumns(templatesList)
.then((whereKeys) => {
resolve(whereKeys)
},
(e) => {
console.log('findRequestColumns reject')
reject(e)
})
.catch((e) => {
console.error('getSelectTemplateKeys', e)
reject()
})
},
() => {
console.log('getTemplateAndPartials reject')
reject()
})
.catch((e) => {
console.error('getSelectTemplateKeys', e)
reject()
})

export function getAbePrecontributionAttributesFromTemplates(templatesList) {
var ar = []
var precontributionTemplate = ""
Array.prototype.forEach.call(templatesList, (file) => {
var matches = cmsData.regex.getTagAbePrecontribution(file.template)
Array.prototype.forEach.call(matches, (match) => {
var obj = cmsData.attributes.getAll(match[0], {})
ar.push(obj)
precontributionTemplate += match[0] + "\n"
})
})

return p
return {
fields: ar,
template: precontributionTemplate
}
}

export function getStructureAndTemplates() {
Expand Down
37 changes: 25 additions & 12 deletions src/cli/core/manager/Manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -128,24 +128,33 @@ class Manager {
} catch (e) {
console.log('the directory ' + this._pathReference + ' does not exist')
}

}

getKeysFromSelect() {
this._whereKeys = []
var p = new Promise((resolve) => {
cmsTemplates.template.getSelectTemplateKeys(this._pathTemplate)
.then((whereKeys) => {
this._whereKeys = whereKeys
this.updateList()
resolve()

cmsTemplates.template.getTemplatesAndPartials(this._pathTemplate)
.then((templatesList) => {

return cmsTemplates.template.getTemplatesTexts(templatesList)
.then((templatesText) => {

return cmsTemplates.template.getAbeRequestWhereKeysFromTemplates(templatesText)
.then((whereKeys) => {
this._whereKeys = whereKeys
this._precontribution = cmsTemplates.template.getAbePrecontributionAttributesFromTemplates(templatesText)
this.updateList()
resolve()
},
(e) => { console.log('Reject: Manager.findRequestColumns', e) })
.catch((e) => { console.log('Error: Manager.findRequestColumns', e) })
},
(e) => {
console.log('Manager.getKeysFromSelect', e)
})
.catch((e) => {
console.log('Manager.getKeysFromSelect', e)
})
(e) => { console.log('Reject: Manager.getTemplatesTexts', e) })
.catch((e) => { console.log('Error: Manager.getTemplatesTexts', e) })
},
(e) => { console.log('Manager.getKeysFromSelect', e) })
.catch((e) => { console.log('Manager.getKeysFromSelect', e) })
})

return p
Expand All @@ -165,6 +174,10 @@ class Manager {
return this._references
}

getPrecontribution() {
return this._precontribution
}

updateReferences(referenceName) {
var references = cmsReference.reference.getFiles()
if(referenceName && references[referenceName]) this._references[referenceName] = references[referenceName]
Expand Down
21 changes: 6 additions & 15 deletions src/server/controllers/editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -186,9 +186,9 @@ function orderBlock(util) {

var formBlockOrdered = {}
var arKeys = Object.keys(formBlockTab).sort((a,b) => {
if(formBlockTab[a][0].order < formBlockTab[b][0].order) {
if(parseFloat(formBlockTab[a][0].order) < parseFloat(formBlockTab[b][0].order)) {
return -1
}else if(formBlockTab[a][0].order > formBlockTab[b][0].order) {
}else if(parseFloat(formBlockTab[a][0].order) > parseFloat(formBlockTab[b][0].order)) {
return 1
}
return 0
Expand All @@ -202,9 +202,9 @@ function orderBlock(util) {

var formTabsOrdered = {}
var arKeysTabs = Object.keys(formBlock).sort((a,b) => {
if(formBlock[a][Object.keys(formBlock[a])[0]][0].order < formBlock[b][Object.keys(formBlock[b])[0]][0].order) {
if(parseFloat(formBlock[a][Object.keys(formBlock[a])[0]][0].order) < parseFloat(formBlock[b][Object.keys(formBlock[b])[0]][0].order)) {
return -1
}else if(formBlock[a][Object.keys(formBlock[a])[0]][0].order > formBlock[b][Object.keys(formBlock[b])[0]][0].order) {
}else if(parseFloat(formBlock[a][Object.keys(formBlock[a])[0]][0].order) > parseFloat(formBlock[b][Object.keys(formBlock[b])[0]][0].order)) {
return 1
}
return 0
Expand All @@ -217,20 +217,11 @@ function orderBlock(util) {
return formTabsOrdered
}

export function editor(fileName, jsonPath, documentLink) {
export function editor(text, json, documentLink) {
let p = new Promise((resolve) => {
var util = new cmsEditor.form()
var arrayBlock = []
var text
var json

json = {}
if(coreUtils.file.exist(jsonPath)) {
json = cmsData.file.get(jsonPath, 'utf8')
}

text = cmsTemplates.template.getTemplate(fileName)


cmsData.source.getDataList(path.dirname(documentLink), text, json)
.then(() => {
addSource(text, json, util)
Expand Down
4 changes: 2 additions & 2 deletions src/server/controllers/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import express from 'express'
import * as abe from '../../cli'
import {
getCreate
postCreate
,getDuplicate
,getUpdate
,getListUrl
Expand Down Expand Up @@ -31,7 +31,7 @@ var router = express.Router()
abeExtend.hooks.instance.trigger('afterHandlebarsHelpers', Handlebars)
abeExtend.hooks.instance.trigger('beforeAddRoute', router)

router.get('/abe/create*', getCreate)
router.post('/abe/create*', postCreate)
router.get('/abe/duplicate*', getDuplicate)
router.get('/abe/update*', getUpdate)
router.post('/abe/sql-request*', postSqlRequest)
Expand Down
14 changes: 13 additions & 1 deletion src/server/public/scripts/modules/EditorAutocomplete.js
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,16 @@ export default class EditorAutocomplete {
var first = true

this._divWrapper.innerHTML = ''
if (display.indexOf('{{') > -1) {
var deepDisplay = display.replace('{{', '').replace('}}', '').split('.')
display = deepDisplay.pop()
deepDisplay = deepDisplay.join('.')
try {
sources = eval('sources.' + deepDisplay)
}catch(e) {

}
}
if(typeof sources !== 'undefined' && sources !== null) {
if(typeof sources === 'object' && Object.prototype.toString.call(sources) === '[object Object]') {
sources = [sources]
Expand Down Expand Up @@ -210,7 +220,9 @@ export default class EditorAutocomplete {
if(this._visible) {
this._visible = false
this._shouldBeVisible = false
this._divWrapper.parentNode.removeChild(this._divWrapper)
if (this._divWrapper != null && this._divWrapper.parentNode) {
this._divWrapper.parentNode.removeChild(this._divWrapper)
}
}
}

Expand Down
Loading

0 comments on commit 2980fc3

Please sign in to comment.