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 Dec 5, 2016
2 parents 0171273 + 23fe368 commit b2e7ba2
Show file tree
Hide file tree
Showing 13 changed files with 741 additions and 306 deletions.
2 changes: 1 addition & 1 deletion src/cli/cms/editor/handlebars/printBlock.js
@@ -1,4 +1,4 @@
import printInput from './printInput'
import {printInput} from './printInput'
import abeEngine from './abeEngine'

import {
Expand Down
404 changes: 184 additions & 220 deletions src/cli/cms/editor/handlebars/printInput.js

Large diffs are not rendered by default.

26 changes: 23 additions & 3 deletions src/cli/cms/editor/index.js
Expand Up @@ -10,13 +10,24 @@ import folders from './handlebars/folders'
import listPage from './handlebars/listPage'
import printBlock from './handlebars/printBlock'
import printConfig from './handlebars/printConfig'
import printInput from './handlebars/printInput'
import recursiveFolder from './handlebars/recursiveFolder'
import recursivePrintConfig from './handlebars/recursivePrintConfig'
import sourceAttr from './handlebars/sourceAttr'
import sourceAutocomplete from './handlebars/sourceAutocomplete'
import sourceOption from './handlebars/sourceOption'
import raw from './handlebars/raw'
import {
printInput,
getAttributes,
getLabel,
createInputSource,
createInputRich,
createInputFile,
createInputTextarea,
createInputLink,
createInputImage,
createInputText
} from './handlebars/printInput'

Handlebars.registerHelper('abeImport', abeImport)
Handlebars.registerHelper('abe', compileAbe)
Expand All @@ -38,12 +49,21 @@ export {
listPage,
printBlock,
printConfig,
printInput,
recursiveFolder,
recursivePrintConfig,
sourceAttr,
sourceAutocomplete,
sourceOption,
raw
raw,
printInput,
getAttributes,
getLabel,
createInputSource,
createInputRich,
createInputFile,
createInputTextarea,
createInputLink,
createInputImage,
createInputText
}

11 changes: 1 addition & 10 deletions src/cli/cms/media/image.js
Expand Up @@ -74,12 +74,6 @@ export function generateThumbnail(file) {
var cropThumb = smartCropAndSaveFile([250, 250], file, thumbFileName)
cropThumb.then(function (result) {
var stderr = result.stderr
if(thumbsList != null) {
thumbsList.push({
originalFile: file.replace(path.join(config.root, config.publish.url), ''),
thumbFile: thumbFileNameRelative
})
}
if(stderr) {
cropAndSaveFile([250, 250], file, thumbFileName).then(function () {
resolve({thumb: thumbFileNameRelative})
Expand Down Expand Up @@ -167,11 +161,8 @@ export function createMediaFolder(req) {
return folderFilePath
}

var thumbsList

export function getThumbsList() {
if(thumbsList != null) return thumbsList
thumbsList = []
var thumbsList = []
var pathToThumbs = path.join(config.root, config.publish.url, config.upload.image)
var files = coreUtils.file.getFilesSync(pathToThumbs, true)
Array.prototype.forEach.call(files, (pathFile) => {
Expand Down
12 changes: 11 additions & 1 deletion src/cli/core/manager/Manager.js
Expand Up @@ -9,7 +9,8 @@ import {
cmsData,
config,
cmsTemplates,
cmsReference
cmsReference,
cmsMedia
} from '../../'

let singleton = Symbol()
Expand Down Expand Up @@ -197,6 +198,15 @@ class Manager {
this._structureAndTemplates = cmsTemplates.template.getStructureAndTemplates()
}

getThumbsList() {
if(typeof this._thumbs === 'undefined' || this._thumbs === null) this._thumbs = cmsMedia.image.getThumbsList()
return this._thumbs
}

addThumbsToList(thumb) {
if(this._thumbs) this._thumbs.push(thumb)
}

getReferences() {
if(typeof this._references === 'undefined' || this._references === null) this.updateReferences()
return this._references
Expand Down
4 changes: 2 additions & 2 deletions src/server/routes/get-thumbs.js
@@ -1,10 +1,10 @@
import {
cmsMedia
Manager
} from '../../cli'

var route = function(req, res){
res.set('Content-Type', 'application/json')
res.send(JSON.stringify({thumbs: cmsMedia.image.getThumbsList()}))
res.send(JSON.stringify({thumbs: Manager.instance.getThumbsList()}))
}

export default route
7 changes: 6 additions & 1 deletion src/server/routes/post-upload.js
@@ -1,6 +1,7 @@
import {
abeExtend,
cmsMedia
cmsMedia,
Manager
} from '../../cli'

var route = function(req, res, next){
Expand All @@ -10,6 +11,10 @@ var route = function(req, res, next){
var image = cmsMedia.image.saveFile(req)

image.then(function (resp) {
Manager.instance.addThumbsToList({
originalFile: resp.filePath,
thumbFile: resp.thumbnail
})
res.set('Content-Type', 'application/json')
res.send(JSON.stringify(resp))
}).catch(function(e) {
Expand Down
2 changes: 1 addition & 1 deletion src/tasks/nodemon.js
Expand Up @@ -19,7 +19,7 @@ nodemon({
'NODE_ENV': 'development'
},
ignore: [
'docs/*'
// 'docs/*' //TODO: find out why in dev mode this line uncommented break server reload on file change
],
watch: [
'src/cli/*',
Expand Down
20 changes: 20 additions & 0 deletions test/cms/editor/handlebars/folders.js
@@ -0,0 +1,20 @@
import chai from 'chai'
import path from 'path'
import {
cmsEditor,
config
} from '../../../../src/cli'
config.set({root: path.join(process.cwd(), 'test', 'fixtures')})

describe('cmsEditor.folders', function() {

/**
* cmsEditor.folders
*/
it('cmsEditor.folders()', function() {
var result = cmsEditor.folders([{path: ''}], 1, null, {'level-1': 'my wording'})
var wordingExist = result.indexOf('my wording')
chai.expect(result).to.be.a('string')
chai.expect(wordingExist).to.equal(110)
});
});
169 changes: 169 additions & 0 deletions test/cms/editor/handlebars/printInput.js
@@ -0,0 +1,169 @@
import chai from 'chai'
import path from 'path'
import sinonChai from'sinon-chai'
chai.use(sinonChai)
import sinon from 'sinon'

import {
cmsEditor,
abeExtend,
config
} from '../../../../src/cli'
config.set({root: path.join(process.cwd(), 'test', 'fixtures')})

import data from '../../../fixtures/editor/index'

var classAttr = 'form-control form-abe'

describe('printInput', function() {

// getAttributes,
// getLabel,
// createInputSource,
// createInputRich,
// createInputFile,
// createInputTextarea,
// createInputLink,
// createInputImage,
// createInputText

/**
* cmsEditor.getLabel
*
*/
it('cmsEditor.getLabel()', function() {
var result = cmsEditor.getLabel(data.label)
chai.expect(result).to.be.a('string')
var label = /<label(\r|\t|\n|.)*?<\/label>/.test(result)
chai.expect(label).to.be.true
})

/**
* cmsEditor.getAttributes
*
*/
it('cmsEditor.getAttributes()', function() {
var result = cmsEditor.getAttributes(data.attributes)
chai.expect(result).to.be.a('string')
chai.expect(result).to.be.equal('id="key" data-id="key" value="value" maxlength="max-length" data-maxlength="max-length" reload="reload" tabIndex="order" data-required="required" data-display="display" data-visible="visible" data-autocomplete="autocomplete" placeholder="placeholder" data-size="thumbs" multiple disabled')
})

/**
* cmsEditor.createInputSource
*
*/
it('cmsEditor.createInputSource()', function() {
var result0 = cmsEditor.createInputSource(data.source[0].attributes, classAttr, data.source[0].params)
var select = /<select(\r|\t|\n|.)*?<\/select>/.test(result0)
chai.expect(result0).to.be.a('string')
chai.expect(select).to.be.true

var result1 = cmsEditor.createInputSource(data.source[1].attributes, classAttr, data.source[1].params)
var test1 = result1.indexOf('multiple')
chai.expect(test1).to.be.above(-1)

var result2 = cmsEditor.createInputSource(data.source[2].attributes, classAttr, data.source[2].params)
var test2 = result2.indexOf('data-autocomplete')
chai.expect(test2).to.be.above(-1)

var result3 = cmsEditor.createInputSource(data.source[3].attributes, classAttr, data.source[3].params)
var test3 = result3.indexOf('{"id":1,"name":"test 1","lang":"de"}')
chai.expect(test3).to.be.above(-1)
})

/**
* cmsEditor.createInputRich
*
*/
it('cmsEditor.createInputRich()', function() {
var result = cmsEditor.createInputRich(data.rich.attributes, classAttr, data.rich.params)
chai.expect(result).to.be.a('string')
})

/**
* cmsEditor.createInputFile
*
*/
it('cmsEditor.createInputFile()', function() {
var result = cmsEditor.createInputFile(data.file.attributes, classAttr, data.file.params)
var input = /<input(\r|\t|\n|.)*?type=\"file\"(\r|\t|\n|.)*?>/.test(result)
chai.expect(result).to.be.a('string')
chai.expect(input).to.be.true
})

/**
* cmsEditor.createInputTextarea
*
*/
it('cmsEditor.createInputTextarea()', function() {
var result = cmsEditor.createInputTextarea(data.textarea.attributes, classAttr, data.textarea.params)
var textarea = /<textarea(\r|\t|\n|.)*?<\/textarea>/.test(result)
chai.expect(result).to.be.a('string')
chai.expect(textarea).to.be.true
})

/**
* cmsEditor.createInputLink
*
*/
it('cmsEditor.createInputLink()', function() {
var result = cmsEditor.createInputLink(data.link.attributes, classAttr, data.link.params)
var link = result.indexOf('glyphicon glyphicon-link')
chai.expect(result).to.be.a('string')
chai.expect(link).to.be.above(-1)
})

/**
* cmsEditor.createInputImage
*
*/
it('cmsEditor.createInputImage()', function() {
var result = cmsEditor.createInputImage(data.image.attributes, classAttr, data.image.params)
var image = result.indexOf('glyphicon glyphicon-picture')
chai.expect(result).to.be.a('string')
chai.expect(image).to.be.above(-1)
})

/**
* cmsEditor.createInputText
*
*/
it('cmsEditor.createInputText()', function() {
var result = cmsEditor.createInputText(data.txt.attributes, classAttr, data.txt.params)
var txt = result.indexOf('glyphicon glyphicon-font')
chai.expect(result).to.be.a('string')
chai.expect(txt).to.be.above(-1)
})

/**
* cmsEditor.printInput
*
*/
it('cmsEditor.printInput()', function() {
var val = data.text;
this.sinon = sinon.sandbox.create();
this.sinon.stub(abeExtend.hooks.instance, 'trigger', function(param, html){
return (param === 'beforeEditorInput') ? val : html;
})
var result = cmsEditor.printInput(val, {})
chai.expect(result).to.be.a('string')
var value = result.match(/value="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(value).to.equal('value="val2"')
var reload = result.match(/reload="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(reload).to.equal('reload="val3"')
var tabIndex = result.match(/tabIndex="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(tabIndex).to.equal('tabIndex="val4"')
var dataRequired = result.match(/data-required="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(dataRequired).to.equal('data-required="val5"')
var dataDisplay = result.match(/data-display="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(dataDisplay).to.equal('data-display="val6"')
var dataVisible = result.match(/data-visible="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(dataVisible).to.equal('data-visible="val7"')
var dataAutocomplete = result.match(/data-autocomplete="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(dataAutocomplete).to.equal('data-autocomplete="val8"')
var placeholder = result.match(/placeholder="[a-zA-Z0-9-]*"/ig)[0]
chai.expect(placeholder).to.equal('placeholder="val9"')

this.sinon.restore()
});
});

0 comments on commit b2e7ba2

Please sign in to comment.