diff --git a/src/cli/handlebars/abe/listPage.js b/src/cli/handlebars/abe/listPage.js index 7184487..1e42b69 100755 --- a/src/cli/handlebars/abe/listPage.js +++ b/src/cli/handlebars/abe/listPage.js @@ -4,6 +4,10 @@ import moment from 'moment' import {Hooks} from '../../' export default function listPage(file, index, text) { + if (file.path.indexOf('one-hour-one-day-one-week/manchester-united-maillot-595fc') > -1) { + console.log('* * * * * * * * * * * * * * * * * * * * * * * * * * * * *') + console.log('file', file) + } var res = ''; file = Hooks.instance.trigger('beforeListPage', file, index, text) diff --git a/src/cli/helpers/file-attr.js b/src/cli/helpers/file-attr.js index f9cc24c..c5e6211 100755 --- a/src/cli/helpers/file-attr.js +++ b/src/cli/helpers/file-attr.js @@ -6,6 +6,7 @@ import { ,fileUtils ,dateUnslug ,config + ,Manager } from '../' var fullAttr = '-abe-(.+?)(?=\.'; @@ -157,6 +158,40 @@ export default class FileAttr { return res } + static sortByDateDesc(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 + } + + /** + * Filter and array of file path and return the latest version of those files + * @param {Object} urls object with path to file, filename etc ... + * @param {String} type (draft|waiting|valid) + * @return {Object} urls object filtered + */ + static getLatestVersion(docPath) { + var files = Manager.instance.getList() + var fileWithoutExtension = docPath.replace('.' + config.files.templates.extension, '') + var sameFiles = [] + Array.prototype.forEach.call(files, (file) => { + if (file.path.indexOf(fileWithoutExtension) > -1) { + sameFiles.push(file) + console.log('file.path', file.path) + } + }) + if (sameFiles.length > 0) { + sameFiles.sort(FileAttr.sortByDateDesc) + return sameFiles[0] + } + return null + } + /** * Filter and array of file path and return the latest version of those files * @param {Object} urls object with path to file, filename etc ... diff --git a/src/cli/helpers/file-parser.js b/src/cli/helpers/file-parser.js index 99eef68..d997b06 100755 --- a/src/cli/helpers/file-parser.js +++ b/src/cli/helpers/file-parser.js @@ -85,7 +85,7 @@ export default class FileParser { date: date, cleanDate: fileDate.format("YYYY/MM/DD HH:MM:ss"), duration: duration, - status: status, + // status: status, cleanName: cleanName, cleanNameNoExt: cleanNameNoExt, cleanFilePath: cleanFilePath, @@ -234,7 +234,7 @@ export default class FileParser { } let extension = config.files.templates.extension - if(typeof url !== 'undefined' && url !== null && url.indexOf('.' + extension) > -1) { + if(typeof url !== 'undefined' && url !== null) { var dir = fileUtils.removeLast(url).replace(config.root, '') var filename = fileUtils.filename(url) @@ -405,9 +405,16 @@ export default class FileParser { var json = FileParser.getJson(file.path) if(typeof json.abe_meta !== 'undefined' && json.abe_meta !== null) { - cleanFile.abe_meta = json.abe_meta + cleanFile.abe_meta = { + date: (typeof json.abe_meta.date !== 'undefined' && json.abe_meta.date !== null) ? json.abe_meta.date : null + , type: (typeof json.abe_meta.type !== 'undefined' && json.abe_meta.type !== null) ? json.abe_meta.type : null + , link: (typeof json.abe_meta.link !== 'undefined' && json.abe_meta.link !== null) ? json.abe_meta.link : null + , template: (typeof json.abe_meta.template !== 'undefined' && json.abe_meta.template !== null) ? json.abe_meta.template : null + , status: (typeof json.abe_meta.status !== 'undefined' && json.abe_meta.status !== null) ? json.abe_meta.status : null + , cleanName: (typeof json.abe_meta.cleanName !== 'undefined' && json.abe_meta.cleanName !== null) ? json.abe_meta.cleanName : null + , cleanFilename: (typeof json.abe_meta.cleanFilename !== 'undefined' && json.abe_meta.cleanFilename !== null) ? json.abe_meta.cleanFilename : null + } } - Array.prototype.forEach.call(withKeys, (key) => { var keyFirst = key.split('.')[0] cleanFile[keyFirst] = json[keyFirst] diff --git a/src/cli/helpers/file-utils.js b/src/cli/helpers/file-utils.js index a856ce2..7f67ebe 100755 --- a/src/cli/helpers/file-utils.js +++ b/src/cli/helpers/file-utils.js @@ -228,26 +228,29 @@ export default class FileUtils { if(typeof merged[cleanFilePath] === 'undefined' || merged[cleanFilePath] === null) { merged[cleanFilePath] = file - merged[cleanFilePath][file.status] = true + merged[cleanFilePath][file.abe_meta.status] = true }else { var oldDate = new Date(merged[cleanFilePath].date) var newDate = new Date(file.date) var oldStatus = '' - if(merged[cleanFilePath][file.status]) { - oldStatus = file.status + if(merged[cleanFilePath][file.abe_meta.status]) { + oldStatus = file.abe_meta.status } - if(typeof merged[cleanFilePath][file.status] === 'undefined' || merged[cleanFilePath][file.status] === null) { - merged[cleanFilePath][file.status] = true - }else if(newDate > oldDate && oldStatus === file.status) { - merged[cleanFilePath][file.status] = true + if(typeof merged[cleanFilePath][file.abe_meta.status] === 'undefined' || merged[cleanFilePath][file.abe_meta.status] === null) { + merged[cleanFilePath][file.abe_meta.status] = true + }else if(newDate > oldDate && oldStatus === file.abe_meta.status) { + merged[cleanFilePath][file.abe_meta.status] = true } } + // if (file.path.indexOf('one-hour-one-day-one-week/manchester-united-maillot-595fc') > -1) { + // console.log('* * * * * * * * * * * * * * * * * * * * * * * * * * * * *') + // console.log('file', file) + // } }) // return merged Array.prototype.forEach.call(Object.keys(merged), (key) => { - var merge = merged[key] - arMerged.push(merge) + arMerged.push(merged[key]) }) return arMerged diff --git a/src/cli/models/Manager.js b/src/cli/models/Manager.js index 8957a1a..f62aef0 100644 --- a/src/cli/models/Manager.js +++ b/src/cli/models/Manager.js @@ -59,8 +59,6 @@ class Manager { this._list = FileParser.getAllFilesWithKeys(this._whereKeys) this._loadTime.duration() - // console.log('* * * * * * * * * * * * * * * * * * * * * * * * * * * * *') - // console.log('this._list[0]', this._list[0]) // this._list = FileParser.getAllFiles(useKeys) this._list.sort(FileParser.predicatBy('date')) diff --git a/src/server/routes/get-main.js b/src/server/routes/get-main.js index a47111c..3718b51 100644 --- a/src/server/routes/get-main.js +++ b/src/server/routes/get-main.js @@ -65,24 +65,14 @@ var route = function(req, res, next) { isHome = false if(!fileAttr.test(filePath)){ - var folderFilePath = filePath.split('/') - folderFilePath.pop() - folderFilePath = fileUtils.pathWithRoot(folderFilePath.join('/')) - mkdirp.sync(folderFilePath) - var files = FileParser.getFiles(folderFilePath, true, 2) - var latest = fileAttr.filterLatestVersion(fileAttr.getFilesRevision(files, filePath), 'draft') - if(latest.length) { - filePath = latest[0].path + var filePathTest = fileAttr.getLatestVersion(req.query.filePath) + if(typeof filePathTest !== 'undefined' && filePathTest !== null) { + filePath = filePathTest.path } } let tplUrl = FileParser.getFileDataFromUrl(filePath) - if(!fileUtils.isFile(tplUrl.json.path)) { - res.redirect("/abe/"); - return; - } - editor(templatePath, tplUrl) .then((result) => { var manager = {}