apostrophe-snippets
Advanced tools
Comparing version 0.0.3 to 0.0.4
61
index.js
@@ -8,2 +8,3 @@ var async = require('async'); | ||
var csv = require('csv'); | ||
var moment = require('moment'); | ||
@@ -338,2 +339,4 @@ // GUIDE TO USE | ||
var active = 0; | ||
var date = new Date(); | ||
req.aposImported = moment().format(); | ||
s.on('record', function(row, index) { | ||
@@ -359,2 +362,3 @@ active++; | ||
s.end(); | ||
active--; | ||
} | ||
@@ -385,2 +389,6 @@ }); | ||
function handleRow(row, callback) { | ||
// Ignore blank rows without an error | ||
if (!_.some(row, function(column) { return column !== ''; })) { | ||
return callback(null); | ||
} | ||
var data = {}; | ||
@@ -431,2 +439,5 @@ var i; | ||
snippet.sortTitle = self._apos.sortify(snippet.title); | ||
// Record when the import happened so that later we can offer a UI | ||
// to find these groups and remove them if desired | ||
snippet.imported = req.aposImported; | ||
self.beforeInsert(req, data, snippet, function(err) { | ||
@@ -560,3 +571,2 @@ if (err) { | ||
} | ||
var skip = options.skip || undefined; | ||
@@ -601,2 +611,4 @@ if (skip !== undefined) { | ||
var snippets; | ||
var got; | ||
async.series([loadSnippets, permissions, loadWidgets], done); | ||
@@ -607,2 +619,3 @@ | ||
snippets = snippetsArg; | ||
got = snippets.length; | ||
return callback(err); | ||
@@ -614,4 +627,17 @@ }); | ||
async.filter(snippets, function(snippet, callback) { | ||
self._apos.permissions(req, editable ? 'edit-' + self._css : 'view-' + self._css, snippet, function(err) { | ||
return callback(!err); | ||
self._apos.permissions(req, 'edit-' + self._css, snippet, function(err) { | ||
if (editable) { | ||
return callback(!err); | ||
} else { | ||
snippet._edit = !err; | ||
// Good way to test the retry mechanism that fills the gap if | ||
// some of the snippets lack permissions for this user | ||
// if (Math.random() < 0.5) { | ||
// console.log('randomly flunking view permissions'); | ||
// return callback(false); | ||
// } | ||
self._apos.permissions(req, 'view-' + self._css, snippet, function(err) { | ||
return callback(!err); | ||
}); | ||
} | ||
}); | ||
@@ -636,2 +662,31 @@ }, function(snippetsArg) { | ||
function done(err) { | ||
// If there are more items potentially available in the database, and we | ||
// dropped some due to a lack of view or edit permissions, we should go back | ||
// and get some more. We can get rid of this if we manage to implement | ||
// permissions as part of queries later, but it usually doesn't have to be | ||
// invoked zillions of times before we get the original desired number. | ||
if ((!err) && limit && (got === limit) && (snippets.length < got)) { | ||
var options = {}; | ||
extend(options, optionsArg, true); | ||
var oldSkip = options.skip || 0; | ||
options.skip = oldSkip + limit; | ||
// This is not ideal because we'll request fewer and fewer items on | ||
// each try, eventually requesting one at a time. TODO: improve this | ||
// algorithm to keep fetching more but not get confused about what | ||
// the final goal is. | ||
options.limit = limit - snippets.length; | ||
return self.get(req, options, function(err, moreSnippets) { | ||
var i; | ||
for (i = 0; (i < moreSnippets.length); i++) { | ||
if (snippets.length >= limit) { | ||
break; | ||
} | ||
snippets.push(moreSnippets[i]); | ||
} | ||
return callback(err, snippets); | ||
}); | ||
} | ||
if (err) { | ||
return callback(err); | ||
} | ||
return callback(null, snippets); | ||
@@ -638,0 +693,0 @@ } |
{ | ||
"name": "apostrophe-snippets", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"description": "Reusable content snippets for the Apostrophe content management system. The blog and events modules are built on this foundation, which is also useful in and of itself.", | ||
@@ -28,4 +28,5 @@ "main": "index.js", | ||
"extend": "~1.1.3", | ||
"csv": "~0.2.9" | ||
"csv": "~0.2.9", | ||
"moment": "~2.0.0" | ||
} | ||
} |
@@ -214,6 +214,7 @@ // NOTES FOR REUSE: | ||
var $snippet = apos.fromTemplate($snippets.find('[data-item].apos-template')); | ||
var $title = $snippet.find('[data-title]'); | ||
$title.text(snippet.title); | ||
$title.attr('data-slug', snippet.slug); | ||
self.addingToManager($snippet, snippet); | ||
self.addingToManager($el, $snippet, snippet); | ||
$snippets.append($snippet); | ||
@@ -220,0 +221,0 @@ }); |
@@ -55,3 +55,2 @@ var _ = require('underscore'); | ||
render: function(data) { | ||
console.log('rendering the widget'); | ||
return self.snippets.render('widget', data); | ||
@@ -73,2 +72,5 @@ }, | ||
} | ||
if (item.limit) { | ||
criteria.limit = item.limit; | ||
} | ||
@@ -75,0 +77,0 @@ self.snippets.get(req, criteria, function(err, snippets) { |
63352
1308
5
+ Addedmoment@~2.0.0
+ Addedmoment@2.0.0(transitive)