diff --git a/vendor/couchapp/_attachments/jquery.couch.app.js b/vendor/couchapp/_attachments/jquery.couch.app.js index 32ce78b..fc500a2 100644 --- a/vendor/couchapp/_attachments/jquery.couch.app.js +++ b/vendor/couchapp/_attachments/jquery.couch.app.js @@ -37,67 +37,71 @@ function docForm() { alert("docForm has been moved to vendor/couchapp/lib/docForm.js, use app.require to load") }; - function resolveModule(names, parent, current) { + function resolveModule(path, names, parents, current) { + parents = parents || []; if (names.length === 0) { if (typeof current != "string") { throw ["error","invalid_require_path", 'Must require a JavaScript string, not: '+(typeof current)]; } - return [current, parent]; + return [current, parents]; } var n = names.shift(); if (n == '..') { - if (!(parent && parent.parent)) { - throw ["error", "invalid_require_path", 'Object has no parent '+JSON.stringify(current)]; + parents.pop(); + var pp = parents.pop(); + if (!pp) { + throw ["error", "invalid_require_path", path]; } - return resolveModule(names, parent.parent.parent, parent.parent); + return resolveModule(path, names, parents, pp); } else if (n == '.') { - if (!parent) { - throw ["error", "invalid_require_path", 'Object has no parent '+JSON.stringify(current)]; + var p = parents.pop(); + if (!p) { + throw ["error", "invalid_require_path", path]; } - return resolveModule(names, parent.parent, parent); + return resolveModule(path, names, parents, p); + } else { + parents = []; } if (!current[n]) { - throw ["error", "invalid_require_path", 'Object has no property "'+n+'". '+JSON.stringify(current)]; + throw ["error", "invalid_require_path", path]; } - var p = current; - current = current[n]; - current.parent = p; - return resolveModule(names, p, current); + parents.push(current); + return resolveModule(path, names, parents, current[n]); } function makeRequire(ddoc) { var moduleCache = []; - function getCachedModule(name, parent) { + function getCachedModule(name, parents) { var key, i, len = moduleCache.length; for (i=0;i - + or Signup diff --git a/vendor/couchapp/evently/account/signupForm/mustache.html b/vendor/couchapp/evently/account/signupForm/mustache.html index 051a200..1fd0021 100644 --- a/vendor/couchapp/evently/account/signupForm/mustache.html +++ b/vendor/couchapp/evently/account/signupForm/mustache.html @@ -1,5 +1,5 @@
- + or Login diff --git a/vendor/couchapp/lib/docform.js b/vendor/couchapp/lib/docform.js index f2221fe..bb56c4b 100644 --- a/vendor/couchapp/lib/docform.js +++ b/vendor/couchapp/lib/docform.js @@ -26,15 +26,22 @@ function docForm(formSelector, opts) { function formToDeepJSON(form, fields, doc) { form = $(form); fields.forEach(function(field) { - var element = form.find("[name="+field+"]"); + var element = form.find("[name="+field+"]"), + parts = field.split('-'), + frontObj = doc, frontName = parts.shift(); + if (element.attr('type') === 'checkbox') { var val = element.attr('checked'); } else { var val = element.val(); - if (!val) return; + if (!val) { + if (frontObj[field]) { + delete frontObj[field]; + } + return; + } } - var parts = field.split('-'); - var frontObj = doc, frontName = parts.shift(); + while (parts.length > 0) { frontObj[frontName] = frontObj[frontName] || {}; frontObj = frontObj[frontName]; diff --git a/vendor/couchapp/lib/linkup.js b/vendor/couchapp/lib/linkup.js index 8aa5c71..1de6bcf 100644 --- a/vendor/couchapp/lib/linkup.js +++ b/vendor/couchapp/lib/linkup.js @@ -11,8 +11,8 @@ exports.encode = function(body, person_prefix, tag_prefix) { return body.replace(/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi,function(a) { return ''+a+''; }).replace(/\@([\w\-]+)/g,function(user,name) { - return ''+user+''; + return ''+user+''; }).replace(/\#([\w\-\.]+)/g,function(word,tag) { - return ''+word+''; + return ''+word+''; }); }; diff --git a/vendor/couchapp/lib/utils.js b/vendor/couchapp/lib/utils.js new file mode 100644 index 0000000..19dfbe0 --- /dev/null +++ b/vendor/couchapp/lib/utils.js @@ -0,0 +1,21 @@ +exports.prettyDate = function(time){ + + var date = new Date(time.replace(/-/g,"/").replace("T", " ").replace("Z", " +0000").replace(/(\d*\:\d*:\d*)\.\d*/g,"$1")), + diff = (((new Date()).getTime() - date.getTime()) / 1000), + day_diff = Math.floor(diff / 86400); + + if (isNaN(day_diff)) return time; + + return day_diff < 1 && ( + diff < 60 && "just now" || + diff < 120 && "1 minute ago" || + diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" || + diff < 7200 && "1 hour ago" || + diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") || + day_diff == 1 && "yesterday" || + day_diff < 21 && day_diff + " days ago" || + day_diff < 45 && Math.ceil( day_diff / 7 ) + " weeks ago" || + time; + // day_diff < 730 && Math.ceil( day_diff / 31 ) + " months ago" || + // Math.ceil( day_diff / 365 ) + " years ago"; +};